#安裝環境
yum install libedit-devel gcc ipset perl sqlite-devel libcurl-devel pcre pcre-devel speex speex-devel libldns-dev alsa-lib libogg postgresql libtheora libtiff libvorbis autoconf automake libtool gcc-c++ ncurses-devel make expat-devel zlib zlib-devel libjpeg-devel libpcre unixODBC-devel freetype libpng t1lib libXpm openssl-devel libxslt libc-client-devel pciutils lsof usbutils acpid wget ntp ntpdate dmidecode parted lrzsz iptables-services mysql php net-tools git expect -y
#json-c-0.9.tar.gz opus-1.1-p2.tar.gz 這兩個文件放在freeswitch解壓后的libs下
sofia status profile internal reg sofia profile external restart originate sofia/internal/3319手機號@IP地址:5060 &echo 1038 ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin 1039 ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin 1026 grep -n -i "Checking Candidate" *.c 1027 vim switch_core_media.c
#14版本的修改方法
for (i = 0; i < engine->cand_acl_count; i++) {
// ignore ipv6
if (strchr(fields[4],'-'))
continue;
#高版本修改
static switch_bool_t ip_possible(switch_media_handle_t *smh, const char *ip)
{
switch_bool_t r = SWITCH_FALSE;
if (zstr(ip)) {
return r;
}
//這里
if (strchr(ip, '-')) {
r = SWITCH_FALSE;
} else {
r = (switch_bool_t) !zstr(smh->mparams->rtpip4);
}
return r;
}
{
switch_bool_t r = SWITCH_FALSE;
if (zstr(ip)) {
return r;
}
//這里
if (strchr(ip, '-')) {
r = SWITCH_FALSE;
} else {
r = (switch_bool_t) !zstr(smh->mparams->rtpip4);
}
return r;
}
1028 cd .. 1029 grep core Makefile 1030 make install_core 1031 ls 1032 cd .. 1033 ls 1034 sh freeswitch restart 一 配置mysql #CentOS上安裝ODBC開發包和MYSQL數據庫的ODBC驅動程序 yum install -y unixODBC unixODBC-devel mysql-connector-odbc #如上安裝好后,通過/etc/odbcinst.ini可以配置數據庫的驅動 vi /etc/odbcinst.ini [MySQL] Description = ODBC for MySQL Driver = /usr/lib/libmyodbc5.so Setup = /usr/lib/libodbcmyS.so Driver64 = /usr/lib64/libmyodbc5.so Setup64 = /usr/lib64/libodbcmyS.so FileUsage = 1 Threading = 0 #接下來需要在/etc/odbc.ini中配置DSN(即數據源名稱) vi /etc/odbc.ini [freeswitch] Driver = /usr/lib64/libmyodbc5.so SERVER = localhost PORT = 3306 DATABASE = freeswitch OPTION = 67108864 #這一行非常重要,FreeSWITCH會將多條SQL放到一起執行,以提高效率,如果沒有該選項則會出錯 #MYodbc 3.51.18及以后的版本才支持該選項 USER = root PASSWORD = Passw0rd@0791 Threading = 0 #測試ODBC鏈接,如下已經成功鏈接 [root@localhost /]# isql -v freeswitch +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> yum install libedit-devel gcc ipset perl sqlite-devel libcurl-devel pcre pcre-devel speex speex-devel libldns-dev alsa-lib libogg postgresql libtheora libtiff libvorbis autoconf automake libtool gcc-c++ ncurses-devel make expat-devel zlib zlib-devel libjpeg-devel libpcre unixODBC-devel freetype libpng t1lib libXpm openssl-devel libxslt libc-client-devel pciutils lsof usbutils acpid wget ntp ntpdate dmidecode parted lrzsz iptables-services mysql php net-tools git expect -y ./configure && make && make install
#1.10.3版本
yum install -y git alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel libdb4-devel e2fsprogs-devel erlang flite-devel g722_1-devel gcc-c++ gdbm-devel gnutls-devel ilbc2-devel ldns-devel libcodec2-devel libcurl-devel libedit-devel libidn-devel libjpeg-devel libmemcached-devel libogg-devel libsilk-devel libsndfile-devel libtheora-devel libtiff-devel libtool libuuid-devel libvorbis-devel libxml2-devel lua-devel lzo-devel mongo-c-driver-devel ncurses-devel net-snmp-devel openssl-devel opus-devel pcre-devel perl perl-ExtUtils-Embed pkgconfig portaudio-devel postgresql-devel python-devel python-devel soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC-devel wget which yasm zlib-devel libshout-devel libmpg123-devel lame-devel
# 播打命令
originate sofia/internal/0XXXX@xx.xxx.xxx.xxx:5060 &birdge(user/1001)
originate {ignore_early_media=true}sofia/gateway/{0xxxxxx} &bridge(sofia/gateway/1000)
originate {ignore_early_media=true}sofia/internal/0xxxx@x.x.x.x:5060 &bridge(sofia/gateway/1000)
# sip常用端口
UDP : 16384-32768
UDP : 7443
UDP : 5066
UDP : 5060
TCP : 7443
TCP : 5080
TCP : 5066
TCP : 5060
公開的免費STUN服務器有:
-
stun.freeswitch.org
-
stun.xten.com
-
stun.ekiga.net
chat.linchaoqun.com
stun連接屬於UDP連接,所以配置防火牆時,記得配置UDP而不是tcp。
firewall-cmd --zone=public --add-port=3478/udp --permanent
firewall-cmd --reload
# docker 安裝freeswitch 1.10.3 docker pull readytalk/freeswitch-docker:1.10.3-buster curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose cd /usr/local/bin chmod +x docker-compose # docker-compose.yml內容
version: "3.5" services: freeswitch: image: readytalk/freeswitch-docker:1.10.3-buster container_name: freeswitch network_mode: host #restart: always volumes: - ./conf:/etc/freeswitch - ./sounds:/usr/share/freeswitch/sounds - ./scripts:/usr/share/freeswitch/scripts - ./certs:/etc/freeswitch/tls - ./db:/var/lib/freeswitch/db - ./log:/var/log/freeswitch - /home/nginx/www/html/recordings/archive:/recordings/archive #ports: # - 7002:7002 environment: - TZ=Asia/Shanghai - FS_EVENT_PASSWORD=ClueCon - FS_EVENT_PORT=8021 - FS_DEFAULT_PASSWORD=12345 - FS_SIP_PORT=5060 - FS_XMLRPC_PORT=7002 - FS_XMLRPC_USER=freeswitch - FS_XMLRPC_PASSWORD=works - FS_RTP_START_PORT=16384 - FS_RTP_END_PORT=32768 #command: freeswitch -nonat
#run
docker-compose up -d
#docker-compose up -d --force-recreate
docker-compose down
docker-compose restart
apt-get 安裝mysql odbc apt-get update apt-get install unixodbc unixodbc-bin unixodbc-dev # 手動下載mysql-connector https://dev.mysql.com/downloads/connector/odbc/5.3.html 配置參考:www.cnblogs.com/yoyotl/p/9980269.html
https://freeswitch.org/confluence/display/FREESWITCH/mod_httapi
https://freeswitch.org/confluence/display/FREESWITCH/mod_xml_rpc
https://freeswitch.org/confluence/display/FREESWITCH/mod_commands