主要功能点为 跨域呼叫,使用 XMS 作为媒体服务器,并提供一定的网络丢包容错能力
跨域呼叫:两个不同 SIP 服务器的用户可以互相通话
- Linux 镜像
- CentOS-7-x86_64-DVD-1511.iso
- PowerMedia-3.3.16104-1.c7.x86_64.iso
- 安装包
- lrzsz-0.12.20-36.el7.x86_64.rpm
- mysql-advanced-5.6.24-linux-glibc2.5-x86_64.tar.gz
- jdk-7u79-linux-x64.rpm
- xmlstarlet-1.5.0-1.el6.rf.x86_64.rpm
- ncurses-devel-5.9-13.20130511.el7.x86_64.rpm
- libevent-2.0.22-stable.tar.gz
- mss-3.1.633-jboss-as-7.2.0.Final.zip
- 配置文件
- change-ip-sip-servlet.sh
- dlgc_demos.properties
- dlgc_JSR309.properties
最后三个配置文件在项目的
env文件夹中
- sip-servlet
- CentOS 7.2 (CentOS-7-x86_64-DVD-1511.iso)
- GNOME Desktop(Compatibility Libraries & Development Tools)
- XMS
- 3.3.16104.rc1
安装 lrzsz 后可以使用 rz 命令进行文件上传
rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm关闭并禁用防火墙
systemctl stop firewalld.service
systemctl disable firewalld.servicerpm -qa | grep mariadb
rpm -e --nodeps xxxrm /etc/my.cnfgroupadd mysql
useradd -g mysql mysql把 mysql-advanced-5.6.24-linux-glibc2.5-x86_64.tar.gz 放在 /usr/local 下
tar -zxvf mysql-advanced-5.6.24-linux-glibc2.5-x86_64.tar.gz
mv mysql<tab> mysqlvim /etc/my.cnf[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
character-set-server=utf8
skip-name-resolve
lower_case_table_names=1
port = 3306
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
[client]
default-character-set=utf8cd /usr/local/mysql
chown -R mysql:mysql ./
./scripts/mysql_install_db --user=mysql
chown -R mysql:mysql datachown 777 /etc/my.cnf
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqldservice mysqld startvim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
source /etc/profilemysql -u root -p
use mysql;
update user set password=password('123456') where user='root'and host='localhost';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;安装完成后的 mysql 用户名和密码分别是 root 和 123456
移除自带的 java 相关的组件(如果是最小化安装的话这一步不用做)
rpm -qa | grep java
rpm -e --nodeps 所有上面列出的条目,空格分隔安装 jdk
rpm -ivh jdk-7u79-linux-x64.rpm配置环境变量
vim /etc/profileexport JAVA_HOME=/usr/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/binsource /etc/profile验证
java -version
javacrpm -ivh xmlstarlet-1.5.0-1.el6.rf.x86_64.rpm
rpm -ivh ncurses-devel-5.9-13.20130511.el7.x86_64.rpmtar -xvzf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/usr/local && make && make installcd ..
tar -xvzf tmux-2.1.tar.gz
cd tmux-2.1
LDFLAGS="-L/usr/local/lib -Wl,-rpath=/usr/local/lib" ./configure --prefix=/usr/local
make && make install把 mss-3.1.633-jboss-as-7.2.0.Final.zip 放在 /root 下并解压
unzip mss-3.1.633-jboss-as-7.2.0.Final.zip将脚本 change-ip-sip-servlet.sh 放在 mss 目录下,赋予执行权限后执行脚本
chmod 777 change-ip-sip-servlet.sh
./change-ip-sip-servlet.sh新建 env 文件夹,用于放置配置文件
mkdir env && cd env配置文件 sysstr.env
echo "realm 10.109.246.93" > sysstr.env配置文件 jdbc.properties
vim jdbc.propertiesjdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://10.109.246.143:3306/my_sip_app_test
jdbc.userName=zlren
jdbc.password=Lab2016!配置文件 heart.properties
vim heart.propertiesenable=1
cycle=10
timeout=15
check=15
ip=10.109.246.93cd /root/mss-3.1.633-jboss-as-7.2.0.Final/standalone/configuration/
java -cp ../../modules/system/layers/base/org/picketbox/main/picketbox-4.0.15.Final.jar org.jboss.security.auth.callback.RFC2617Digest admin sip-servlets secretecho "admin=<hash>" > sip-servlets-users.properties在 configuration 下,生成证书
cd /root/mss-3.1.633-jboss-as-7.2.0.Final/standalone/configuration/
mkdir ca && cd ca
keytool -genkeypair -alias myserver -keyalg RSA -keysize 1024 -keypass secret -validity 365 -storetype jks -keystore myserver.jks -storepass secret -v -dname "CN=James Smith, OU=Engineering, O=My Company, L=My City, S=My State, C=US"修改启动脚本
vim /root/mss-3.1.633-jboss-as-7.2.0.Final/bin/run.sh在上面文件的最后增加以下内容,以后我们会用 run.sh 作为启动脚本
./standalone.sh -Djavax.net.ssl.keyStorePassword=secret -Dgov.nist.javax.sip.TLS_CLIENT_AUTH_TYPE=Disabled -Djavax.net.ssl.keyStore=/root/mss-3.1.633-jboss-as-7.2.0.Final/standalone/configuration/ca/myserver.jks -Djavax.net.ssl.trustStorePassword=secret -Djavax.net.ssl.trustStore=/root/mss-3.1.633-jboss-as-7.2.0.Final/standalone/configuration/ca/myserver.jks配置 https、wss 和 5083
vim /root/mss-3.1.633-jboss-as-7.2.0.Final/standalone/configuration/standalone-sip.xml搜索 urn:jboss:domain:web:1.4 ,注释的那一段后面
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
<ssl protocol="TLSv1,TLSv1.1,TLSv1.2" certificate-key-file="/root/mss-3.1.633-jboss-as-7.2.0.Final/standalone/configuration/ca/myserver.jks" certificate-file="/root/mss-3.1.633-jboss-as-7.2.0.Final/standalone/configuration/ca/myserver.jks" password="secret"/>
</connector>下面这两句添加到类似位置
<connector name="sip-wss" protocol="SIP/2.0" scheme="sip" socket-binding="sip-wss"/>
<socket-binding name="sip-wss" port="5083"/>部署 war 包
cd /root/mss-3.1.633-jboss-as-7.2.0.Final/standalone/deployments/
rm -rf *
放入 war 包修改 dar 文件
vim /root/mss-3.1.633-jboss-as-7.2.0.Final/standalone/configuration/dars/mobicents-dar.propertiesREGISTER: ("com.zczg.app.SipAppP2PApplication.SipAppP2PServlet", "DAR:From", "ORIGINATING", "", "NO_ROUTE", "0")
INVITE: ("com.zczg.app.SipAppP2PApplication.SipAppP2PServlet", "DAR:From", "ORIGINATING", "", "NO_ROUTE", "0")
INFO: ("com.zczg.app.SipAppP2PApplication.SipAppP2PServlet", "DAR:From", "ORIGINATING", "", "NO_ROUTE", "0")
MESSAGE: ("com.zczg.app.SipAppP2PApplication.SipAppP2PServlet", "DAR:From", "ORIGINATING", "", "NO_ROUTE", "0")
# RESPONSE: ("com.zczg.app.SipAppP2PApplication.SipAppP2PServlet","DAR:From", "ORIGINATING", "", "NO_ROUTE", "0")
ALL: ("com.zczg.app.SipAppP2PApplication","DAR:From", "ORIGINATING", "", "NO_ROUTE", "0")
# CANCEL: ("com.zczg.app.SipAppP2PApplication.SipAppP2PServlet","DAR:From", "ORIGINATING", "", "NO_ROUTE", "0")修改配置文件
vim /root/mss-3.1.633-jboss-as-7.2.0.Final/bin/standalone.sh在 export JBOSS_HOME 的后面添加
# Dialogic additions
export APPSERVER_PLATFORM="TELESTAX"
export DIALOGIC_DEMO_PROPERTY_FILE=${JBOSS_HOME}/standalone/configuration/dlgc_demos.properties
export DLG_PROPERTY_FILE=${JBOSS_HOME}/standalone/configuration/dlgc_JSR309.properties将 dlgc_demos.properties 和 dlgc_JSR309.properties 放在 configuration 下
vim /root/mss-3.1.633-jboss-as-7.2.0.Final/standalone/configuration/dlgc_JSR309.propertiesconnector.sip.address=${SipServerIP}
connector.sip.port=5080
mediaserver.1.sip.address=${XmsIP}
mediaserver.1.sip.port=5060启动前保证 mysql 服务器已经启动,因为 sip-servlet 需要从数据库中读取域信息
写个脚本:start_sip_servlet.sh,内容如下(添加执行权限 +x)
cd /root/mss-3.1.633-jboss-as-7.2.0.Final/bin
./run.sh将 /root/mss-3.1.633-jboss-as-7.2.0.Final/bin/run.sh 添加到以下文件的末尾处,完成后赋予执行权限
vim /etc/rc.d/rc.localchmod +x /etc/rc.d/rc.local附:macOS 以忽略证书错误的形式启动 Chrome
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --ignore-certificate-errors
