0
回答
使用 Kamailio 的 SIP服务器
开发十年,就只剩下这套Java开发体系了   

代码由开源sip服务器Kamailio (OpenSER)修改而成,使用了mysql数据库保存用户信息,我的测试平台是FC9。首先需要先安装好mysql,我使用的版本是mysql5.1.38,正确安装完后,将默认字符集改为 Latin1,不然后面生成kamailio数据库的时候会出现错误,提示key太长,这个应该是mysql的一个bug,网上说5.2.0以上版本就没有这个问题了,我没有试验,直接将他的默认字符集改为Latin1就没问题了。

下面就是安装kamailio,我使用的是kamailio1.4.1版本,下载后放在 /usr/src目录下,然后

cd /usr/src
tar zxvf kamailio-1.4.1-notls_src.tar.gz
cd kamailio-1.4.1-notls_src
make prefix=/ include_modules="db_mysql" all
make prefix=/ include_modules="db_mysql" all install

选定 db_mysql模块安装。

1、修改 /etc/kamailio/kamctlrc  

去掉SIP_DOMAIN前的注释,并且修改成自己的服务器地址192.168.1.111。

我的是SIP_DOMAIN=192.168.1.111。

然后去掉 DBENGINE=MYSQL前的注释语句,选定mysql数据库。

2、修改  /etc/kamailio/kamailio.cfg

去掉以下语句前的注释符,使其生效,同时添加自己的服务器ip地址(192.168.1.111)

loadmodule "db_mysql.so"
loadmodule "auth.so" 
loadmodule "auth_db.so" 

modparam("usrloc", "db_mode", 2) 
modparam("usrloc", "db_url", "mysql://openser:openserrw@localhost/openser")
modparam("auth_db", "calculate_ha1", yes) 
modparam("auth_db", "password_column", "password") 
modparam("auth_db", "db_url", "mysql://openser:openserrw@localhost/openser")
modparam("auth_db", "load_credentials", "") 

if (!www_authorize("192.168.1.111", "subscriber")) 
{ 
www_challenge("192.168.1.111", "0");
exit;
} 
if (!check_to()) 
{ 
sl_send_reply("403","Forbidden auth ID");
exit;
}
3、生成kamailio的mysql数据库

执行 /sbin/kamdbctl create

如果前面不更改mysql的默认字符集,这里会出问题。


4、注册用户

kamctl add 1000 12345
kamctl add 1001 12345

使用上面的命令添加两个用户 1000和1001 密码都是1234

5、使用x-lite软电话测试

测试需要一个服务器和两个客户端,在实验室的局域网下完成,我的linux装在虚拟机上,所以再需要局域网内的一台机器就够了,借用同学的机器A。在A和我的主机win环境分别下载安装x-lite软电话软件,使用用户名1000和1001登陆,服务器地址写为192.168.1.111(虚拟机ip地址)。通过putty登陆虚拟机,输入

kamctl start

启动sip服务器。

Sip服务器启动后,可以发现A和我的主机下的x-lite可以登陆到服务器,在我的主机下输入1001可以呼叫A下的x-lite,接听后可完成通话。

测试完成。

http://blog.csdn.net/waiting320/article/details/5174163

举报
鉴客
发帖于6年前 0回/2K+阅
顶部