Socialabel

Monday, November 23, 2009

VoIP Asterisk Realtime CentOS

Installasi Server


Download file Asterisk pada situs resminya http://asterisk.org/ kemudian gunakan perintah download file tarbal asterisk sehingga kita memiliki source code asterisk, source code tersebut selanjutnya di kompile dengan menggunakan make dan make install

Server PABX
#wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.4-current.tar.gz
#tar –zxvf asterisk-1.4-current.tar.gz
#cd asterisk-1.4.27/
#./configure
#make
#make install
#make samples
#make progdocs
#make clean

Agar asterisk dapat dihubungkan kedatabase MySql maka dibutuhkan suatu addons agar Asterisk dapat berkomunikasi dengan database yang kita miliki, pada situs yang sama dapat didownload asterisk-addons-1.4.9.tar.gz kemudian simpan pada direktori pada hardisk server
Server PABX  
#wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-1.4.9.tar.gz
#tar –zxvf asterisk-addons-1.4.9.tar.gz
#cd asterisk-addons-1.4.9/
#./configure
#make
#make install
#make clean

Aplikasi database MySql telah tersedia didalam paket installasi CentOS dapat ditemukan didalam DVD boot, sebelum memulai installasi lakukan pengecekan apakah aplikasi sudah terinstall atau belum. Jika belum terinstall kita dalam memilih paket yang akan diinstall pada sistem

Server PABX
#mount /dev/cdrom /mnt/DVD_Centos
#rpm –ivh mysql-5.0.45-7.el5.i386.rpm mysql-server-5.0.45-7.el5.i386.rpm perl-DBD-MySQL-3.0007-2.el5.i386.rpm perl-DBI-1.52-2.el5.i386.rpm

#mysqladmin -u root password ‘password’
#chkconfig mysqld on

Setelah database MySql berjalan dengan normal selanjutnya adalah membuat database yang akan digunakan oleh asterisk sebagai data user agent yang akan digunakan pada jaringan VoIP

Database Voip
CREATE DATABASE voip;
GRANT ALL PRIVILEGES ON voip.* TO 'voip'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Tabel SIP Buddies
CREATE TABLE `voip`.`sip_buddies` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(80) NOT NULL default '',
`accountcode` varchar(20) default NULL,
`amaflags` varchar(7) default NULL,
`callgroup` varchar(10) default NULL,
`callerid` varchar(80) default NULL,
`canreinvite` char(3) default 'yes',
`context` varchar(80) default NULL,
`defaultip` varchar(15) default NULL,
`dtmfmode` varchar(7) default NULL,
`fromuser` varchar(80) default NULL,
`fromdomain` varchar(80) default NULL,
`fullcontact` varchar(80) default NULL,
`host` varchar(31) NOT NULL default '',
`insecure` varchar(20) default NULL,
`language` char(2) default NULL,
`mailbox` varchar(50) default NULL,
`md5secret` varchar(80) default NULL,
`nat` varchar(5) NOT NULL default 'no',
`deny` varchar(95) default NULL,
`permit` varchar(95) default NULL,
`mask` varchar(95) default NULL,
`pickupgroup` varchar(10) default NULL,
`port` varchar(5) NOT NULL default '',
`qualify` char(3) default NULL,
`restrictcid` char(1) default NULL,
`rtptimeout` char(3) default NULL,
`rtpholdtimeout` char(3) default NULL,
`secret` varchar(80) default NULL,
`type` varchar(6) NOT NULL default 'friend',
`username` varchar(80) NOT NULL default '',
`disallow` varchar(100) default 'all',
`allow` varchar(100) default 'g729;ilbc;gsm;ulaw;alaw',
`musiconhold` varchar(100) default NULL,
`regseconds` int(11) NOT NULL default '0',
`ipaddr` varchar(15) NOT NULL default '',
`regexten` varchar(80) NOT NULL default '',
`cancallforward` char(3) default 'yes',
PRIMARY KEY  (`id`),
UNIQUE KEY `name` (`name`),
KEY `name_2` (`name`)
) ENGINE=MyISAM;

Tabel Extention
CREATE TABLE `voip`.`extensions` (
`id` int(11) NOT NULL auto_increment,
`context` varchar(20) NOT NULL default '',
`exten` varchar(20) NOT NULL default '',
`priority` tinyint(4) NOT NULL default '0',
`app` varchar(20) NOT NULL default '',
`appdata` varchar(128) NOT NULL default '',
PRIMARY KEY  (`context`,`exten`,`priority`),
KEY `id` (`id`)
) ENGINE=MyISAM;

Selanjutnya di butuhkan konfigurasi asterisk realtime agar asterisk server dapat mengetahui database yang telah dibuat sebelumnya. Untuk menghubungkan asterisk dan database dibutuhkan file res_mysql.conf yang berada pada directory /etc/asterisk

File asterisk res_mysql.conf
[general]
dbhost = localhost
dbname = voip
dbuser = voip
dbpass = password
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock

File extconfig.conf juga harus di sesuaikan dengan menambahkan baris berikut, agar user agent yang terdapat pada database dapat digunakan oleh VoIP

File asterisk extconfig.conf
[settings]
sipusers => mysql,voip,sip_buddies
sippeers => mysql,voip,sip_buddies
extensions => mysql,voip,extensions

Agar extention dapat diload dari database dapat menambahkan baris berikut pada file extensions.conf

File asterisk extensions.conf
[incoming]
switch => Realtime/@extensions

Agar user yang on line dapat terbaca pada system maka pada sip.conf perlu beberapa baris perintah berikut

File asterisk sip.conf
[general]
rtcachefriends=yes

Selanjutnya pembuatan web server sebagai antar muka untuk registrasi user, sehingga user dapat melakukan registrasi user agent voip dengan metode web base. Untuk membangun webserver diperlukan daemon apache yang diintegrasikan pada bahasa pemrograman PHP dan database MySql. Dengan penggunaan webserver user dapat mengakses domian atau ip address dari server VoIP untuk mendaftarkan user dan password yang akan digunakan login useragent pada server tersebut.

Paket apache terdapat pada CD/DVD installasi CentOS, disini engine layanan menggunakan apache dengan nama paket httpd-2.2.3-22.el5.centos.i386.rpm dan bahasa pemrograman php-5.1.6-23.el5.i386.rpm

Linux Server
#rpm –ivh httpd-2.2.3-22.el5.centos.i386.rpm apr-1.2.7-11.i386.rpm apr-util-1.2.7-7.el5.i386.rpm php-5.1.6-23.el5.i386.rpm php-mysql-5.1.6-23.el5.i386.rpm php-pear-1.4.9-4.el5.1.noarch.rpm

Setelah proses installasi selesai, kita dapat meletakan file-file web site pada direktori /vat/www/html.

Agar setiap server booting dapat menjalankan Web Server maka pada console mode tambahkan baris di bawah ini.

Linux Server
#chkconfig httpd on


Coding HTML dan PHP untuk antar muka registrasi

Berikut adalah coding yang digunakan untuk membuat antar muka registrasi user. insert data pada database yang telah dibuat sebelumnya, silahkan perhatikan skrip dibawah ini


File Register.php
<?php
$namahost="localhost"; //isi dengan nama host anda
$username="voip"; //isi dengan username anda
$password="password"; //isi dengan password anda
$database="voip"; //isi dengan nama database anda

$hub = mysql_connect("$namahost", "$username", "$password" );
mysql_select_db("$database",$hub);


$insert_ex = "INSERT into extensions (id, context, exten, priority, app, appdata) VALUES ('','incoming','" . $_POST['nomor'] . "','1','Dial','SIP/" . $_POST['nomor'] . "')";

$insert_bud = "INSERT into sip_buddies (id, name, callerid, context, canreinvite, insecure, type, host, secret, allow, nat) VALUES ('','" . $_POST['nomor'] . "','" . $_POST['nama'] . "','incoming','no','port,invite','friend','dynamic','" . $_POST['password'] . "','all','yes')";



mysql_query($insert_ex);

mysql_query($insert_bud);

echo "<center><h1><B>SUKSES SELALU! SILAHKAN TELEPONAN OK</B></h1></center>";
?>

2 comments: