Centos7安装flexisip
Flexisip 是一个可扩展的 SIP 服务器,支持语音/视频通话、消息、推送通知和注册管理等功能,适合搭建自己的 VoIP 服务器。本文安装环境为阿里云的esc服务器,系统为centos7。
一、安装步骤
步骤一:
安装存储库用于一些 Flexisip 依赖项(例如:Hiredis 库)
yum -y install epel-release步骤二:
vim /etc/yum.repos.d/BelledonneCom.repo添加文件内容如下:
# keep this repository enabled even if you enable beta/alpha repositories
[Belledonne-stable]
name=Belledonne-stable
baseurl=http://www.linphone.org/snapshots/$contentdir/$releasever/stable
enabled=1
gpgcheck=0
# enable this if you want post-release patches
[Belledonne-hotfix]
name=Belledonne-hotfix
baseurl=http://www.linphone.org/snapshots/$contentdir/$releasever/hotfix
enabled=0
gpgcheck=0
# enable this if you want next release beta packages
[Belledonne-beta]
name=Belledonne-beta
baseurl=http://www.linphone.org/snapshots/$contentdir/$releasever/beta
enabled=0
gpgcheck=0
# enable this to have development (unstable) packages
[Belledonne-alpha]
name=Belledonne-alpha
baseurl=http://www.linphone.org/snapshots/$contentdir/$releasever/alpha
enabled=0
gpgcheck=0步骤三:
安装以下软件包:
yum install bc-flexisip- 输入后报错404:修改文件
/etc/yum.repos.d/BelledonneCom.repo
# keep this repository enabled even if you enable beta/alpha repositories
[Belledonne-stable]
name=Belledonne-stable
baseurl=http://www.linphone.org/snapshots/centos/$releasever/stable
enabled=1
gpgcheck=0
# enable this if you want post-release patches
[Belledonne-hotfix]
name=Belledonne-hotfix
baseurl=http://www.linphone.org/snapshots/centos/$releasever/hotfix
enabled=0
gpgcheck=0
# enable this if you want next release beta packages
[Belledonne-beta]
name=Belledonne-beta
baseurl=http://www.linphone.org/snapshots/centos/$releasever/beta
enabled=0
gpgcheck=0
# enable this to have development (unstable) packages
[Belledonne-alpha]
name=Belledonne-alpha
baseurl=http://www.linphone.org/snapshots/centos/$releasever/alpha
enabled=0
gpgcheck=0- 报错
Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
sudo vi /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
找到 [centos-sclo-rh] 段,添加或修改:
enabled=0二、启动
命令生成配置文件
# 以 root 身份
/opt/belledonne-communications/bin/flexisip --dump-default all > /etc/flexisip/flexisip.conf启动服务
systemctl start flexisip-proxy flexisip-presence默认情况下,Flexisip 不会随系统启动。可以调用以下命令进行设置:
# 使代理和在线状态服务器在系统启动时启动
systemctl enable flexisip-proxy flexisip-presence禁用防火墙
sudo systemctl stop firewalld查看服务启动状态
systemctl status flexisip-proxy
systemctl status flexisip-presenceflexisip-presence启动异常:
flexisip-error-The default value of 'long-term-enabled' parameter has changed since Flexisip 2.0.0. Please set this parameter explicitly or unset 'presence-server/soci-user-with-phone-request' and 'presence-server/soci-users-with-phones-request' to remove this error.

解决:修改配置文件
vi /etc/flexisip/flexisip.conf#long-term-enabled=false改为long-term-enabled=true

重新启动flexisip-presence
systemctl restart flexisip-presence三、配置ip
如下120.79.142.164为公网ip,172.18.7.16为内网ip
[global]
transports=sip:120.79.142.164;maddr=172.18.7.16
#transports=sip:*;maddr=192.168.10.187
#debug=false
aliases=120.79.142.164
# rtp服务
rtp-bind-address=172.18.7.16 ::0四、添加账号
修改Authentication模块如下,指向账户文件users.db.txt

文件users.db.txt内容为:
version:1
100@120.79.142.164 clrtxt:123456 ;
101@120.79.142.164 clrtxt:123456 ;
102@120.79.142.164 clrtxt:123456 ;
103@120.79.142.164 clrtxt:123456 ;
104@120.79.142.164 clrtxt:123456 ;
105@120.79.142.164 clrtxt:123456 ;
10086@120.79.142.164 clrtxt:123456 ;
136366@120.79.142.164 clrtxt:123456 ;格式:账号@ip clrtxt:密码。重启服务后即可通过账号密码登录linphone。
五、媒体中继
打开媒体中继服务,端口为11006-17020

我的是部署在阿里云服务器,要允许入站出站,开放11006-17020即可

六、测试
使用linphone安卓客户端和pc客户端通话测试正常:

我的配置文件
##
## This is the default Flexisip (v2.3.4) configuration file
##
##
## Some global settings of the flexisip proxy.
##
[global]
transports=sip:120.79.142.164;maddr=172.18.7.16
#transports=sip:*;maddr=192.168.10.187
#debug=false
aliases=120.79.142.164
# Servers started by default when no --server option is specified
# on command line. Possible values are 'proxy', 'presence', 'conference',
# 'regevent' separated by whitespaces.
# Default: proxy
#default-servers=proxy
# Automatically respawn flexisip in case of abnormal termination
# (crashes). This has an effect if Flexisip has been launched with
# '--daemon' option only
# Default: true
#auto-respawn=true
# Path to the directory where plugins can be found.
# Default: /opt/belledonne-communications/lib64/flexisip/plugins
#plugins-dir=/opt/belledonne-communications/lib64/flexisip/plugins
# Plugins to load. Look at <prefix>/lib/flexisip/plugins to know
# the list of installed plugin. The name of a plugin can be derivated
# from the according library name by striping out the extension
# part and the leading 'lib' prefix.
# E.g. putting 'jweauth' in this setting will make libjweauth.so
# library to be load on runtime.
# Default:
#plugins=
# Generate a core file on crash.
# On GNU/Linux, the action to do on core dump is defined by the
# kernel file '/proc/sys/kernel/core_pattern'. On recent distributions
# like RHEL 8, the generated cores is given by default to the core
# manager of SystemD and the core can be easily listed by using
# coredumpctl(1) command.
# On older distributions, the cores are often written in '/' directory.
# If your root directory has little available space, it is recommended
# to relocate your core dumps in another place by modifying the
# 'core_pattern' file on system boot. This may be done by adding
# this line in '/etc/rc.local':
# echo '/home/cores/core.%e.%t.%p' > /proc/sys/kernel/core_pattern
#
# See core(5) manual for more information about core handling on
# GNU/Linux.
# Default: false
#dump-corefiles=false
# Enable SNMP.
# Default: false
#enable-snmp=false
# Directory where to create log files. Create logs are named as
# 'flexisip-<server_type>.log'. If If several server types have
# been specified by '--server' option or 'global/default-servers'
# parameter, then <server_type> is expanded by a concatenation of
# all the server types joined with '+' character.
# WARNING: Flexisip has no embedded log rotation system but provides
# a configuration file for logrotate. Please ensure that logrotate
# is installed and running on your system if you want to have Flexisip's
# logs rotated. Log rotation can be customized by editing /etc/logrotate.d/flexisip-logrotate.
# Default: /var/opt/belledonne-communications/log/flexisip
#log-directory=/var/opt/belledonne-communications/log/flexisip
# Name of the log file. Any occurences of '{server}' will be replaced
# by the server type which has been given by '--server' option or
# 'default-servers' parameter. If several server types have been
# given, then '{server}' will be replaced by the concatenation of
# these separated by '+' character (e.g. 'proxy+presence')
# Default: flexisip-{server}.log
#log-filename=flexisip-{server}.log
# Log file verbosity. Possible values are debug, message, warning
# and error
# Default: error
#log-level=error
# Syslog verbosity. Possible values are debug, message, warning
# and error
# Default: error
#syslog-level=error
# Log (on a different log domain) user errors like authentication,
# registration, routing, etc...
# Default: false
#user-errors-logs=false
# A boolean expression applied to current SIP message being processed.
# When matched, logs are output provided that there level is greater
# than the value defined in contextual-log-level. The definition
# of the SIP boolean expression is the same as for entry filters
# of modules, which is documented here: https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#contextual-log-filter=
# Verbosity of contextual logs to output when the condition defined
# in 'contextual-log-filter' is met.
# Default: debug
#contextual-log-level=debug
# Filter expression applied to all messages, if true message body
# is shown, if false not. Can not be empty, use 'true' or 'false'
# constants instead. The definition of the SIP boolean expression
# is documented here: https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Example : content-type == 'application/sdp' && request.method
# == 'MESSAGE'
# Default: content-type == 'application/sdp'
#show-body-for=content-type == 'application/sdp'
# List of white space separated SIP URIs where the proxy must listen.
# Wildcard (*) can be used to mean 'all local ip addresses'. If
# 'transport' parameter is unspecified, it will listen to both udp
# and tcp. A local address to bind onto can be indicated in the
# 'maddr' parameter, while the domain part of the uris are used
# as public domain or ip address.
# The 'sips' transport definitions accept two optional parameters:
# - 'tls-certificates-dir' taking for value a path, with the same
# meaning as the 'tls-certificates-dir' property of this section
# and overriding it for this given transport.
# - 'tls-certificates-file' taking for value a file path, with
# the same meaning as the 'tls-certificates-file' property of this
# section and overriding it for this given transport.
# - 'tls-certificates-private-key' taking for value a file path,
# with the same meaning as the 'tls-certificates-private-key' property
# of this section and overriding it for this given transport.
# - 'tls-certificates-ca-file' taking for value a file path, with
# the same meaning as the 'tls-certificates-ca-file' property of
# this section and overriding it for this given transport.
# - 'tls-verify-incoming' taking for value '0' or '1', to indicate
# whether clients connecting are required to present a valid client
# certificate. Default value is 0.
# - 'tls-allow-missing-client-certificate' taking for value '0'
# or '1', to allow connections from clients which have no certificate
# even if `tls-verify-incoming` has been enabled. That's useful
# if you wish to have Flexisip to ask for a client certificate,
# but without failing if the client cannot provide one.
# - 'tls-verify-outgoing' taking for value '0' or '1', whether
# flexisip should check the peer certificate when it make an outgoing
# TLS connection to another server. Default value is 1.
# - 'require-peer-certificate' (deprecated) same as tls-verify-incoming
#
# It is HIGHLY RECOMMENDED to specify a canonical name for 'sips'
# transport, so that the proxy can advertise this information in
# Record-Route headers, which allows TLS cname check to be performed
# by clients.
# Specifying a sip uri with transport=tls is not allowed: the 'sips'
# scheme must be used instead. As requested by SIP RFC, IPv6 address
# must be enclosed within brakets.
# Here are some examples to understand:
# - listen on all local interfaces for udp and tcp, on standard
# port:
# transports=sip:*
# - listen on all local interfaces for udp,tcp and tls, on standard
# ports:
# transports=sip:* sips:*
# - listen only a specific IPv6 interface, on standard ports, with
# udp, tcp and tls
# transports=sip:[2a01:e34:edc3:4d0:7dac:4a4f:22b6:2083] sips:[2a01:e34:edc3:4d0:7dac:4a4f:22b6:2083]
# - listen on tls localhost with 2 different ports and SSL certificates:
# transports=sips:localhost:5061;tls-certificates-dir=path_a sips:localhost:5062;tls-certificates-dir=path_b
# - listen on tls localhost with 2 peer certificate requirements:
# transports=sips:localhost:5061;tls-verify-incoming=0 sips:localhost:5062;tls-verify-incoming=1
# - listen on 192.168.0.29:6060 with tls, but public hostname is
# 'sip.linphone.org' used in SIP messages. Bind address won't appear
# in messages:
# transports=sips:sip.linphone.org:6060;maddr=192.168.0.29
# Default: sip:*
#transports=sip:*
# List of white space separated host names pointing to this machine.
# This is to prevent loops while routing SIP messages.
# Default: localhost
#aliases=localhost
# Time interval in seconds after which inactive connections are
# closed.
# Default: 3600
#idle-timeout=3600
# Time interval in seconds for sending "\r\n\r\n" keepalives packets
# on inbound and outbound connections. A value of zero stands for
# no keepalive. The main purpose of sending keepalives is to keep
# connection alive accross NATs, but it also helps in detecting
# silently broken connections which can reduce the number socket
# descriptors used by flexisip.
# Default: 1800
#keepalive-interval=1800
# Time interval in seconds for sending "\r\n\r\n" keepalives packets
# specifically for proxy to proxy connections. Indeed, while it
# is undesirable to send frequent keepalives to mobile clients because
# it drains their battery, sending frequent keepalives has proven
# to be helpful to keep connections up between proxy nodes in a
# very popular US virtualized datacenter. A value of zero stands
# for no keepalive.
# Default: 0
#proxy-to-proxy-keepalive-interval=10
# SIP transaction timeout in milliseconds. It is T1*64 (32000 ms)
# by default.
# Default: 32000
#transaction-timeout=32000
# The UDP MTU. Flexisip will fallback to TCP when sending a message
# whose size exceeds the UDP MTU. Please read http://sofia-sip.sourceforge.net/refdocs/nta/nta__tag_8h.html#a6f51c1ff713ed4b285e95235c4cc999a
# for more details. If sending large packets over UDP is not a problem,
# then set a big value such as 65535. Unlike the recommandation
# of the RFC, the default value of UDP MTU is 1460 in Flexisip (instead
# of 1300).
# Default: 1460
#udp-mtu=1460
# You can specify the bind address for all RTP streams (MediaRelay
# and Transcoder). This parameter is only useful for some specific
# networks, keeping the default value is recommended.
# Default: 0.0.0.0 ::0
rtp-bind-address=172.18.7.16 ::0
# Path to the file containing the server certificate chain. The
# file must be in PEM format, see OpenSSLSSL_CTX_use_certificate_chain_file
# documentation. If used tls-certificates-private-key MUST be set.
# Default:
#tls-certificates-file=
# Path to the file containing the private key. See OpenSSL SSL_CTX_use_PrivateKey_file
# documentation. If used tls-certificates-file MUST be set.
# Default:
#tls-certificates-private-key=
# Path to the file contain CA certificates. See OpenSSL SSL_CTX_load_verify_locations and SSL_CTX_set_client_CA_list documentation. Can be empty.
# Default:
#tls-certificates-ca-file=
# Ciphers string to pass to OpenSSL in order to limit the cipher
# suites to use while establishing TLS sessions. Please take a look
# to ciphers(1) UNIX manual to get the list of keywords supported
# by your current version of OpenSSL. You might visit https://www.openssl.org/docs/manmaster/man1/ciphers.html
# too. The default value set by Flexisip should provide a high level
# of security while keeping an acceptable level of interoperability
# with currenttly deployed clients on the market.
# Default: HIGH:!SSLv2:!SSLv3:!TLSv1:!EXP:!ADH:!RC4:!3DES:!aNULL:!eNULL
#tls-ciphers=HIGH:!SSLv2:!SSLv3:!TLSv1:!EXP:!ADH:!RC4:!3DES:!aNULL:!eNULL
# Ask for client certificate on TLS session establishing.
# Default: false
#require-peer-certificate=false
# Unique ID used to identify that instance of Flexisip. It must
# be a randomly generated 16-sized hexadecimal number. If empty,
# it will be randomly generated on each start of Flexisip.
# Default:
#unique-id=
# Number of SIP message that sofia can queue in a tport (a connection).
# It is 64 by default, hardcoded in sofia-sip (sofia-sip also used
# to hardcode a max value, 1000). This is not sufficient for IM.
# Default: 1000
#tport-message-queue-size=1000
##
## This section contains some parameters useful when the current
## proxy is part of a network of proxies (cluster) which serve the
## same domain.
##
[cluster]
# Enable cluster mode. If 'false', the parameters of [cluster] section
# won't have any effect.
# Default: false
#enabled=false
# Domain name that enables external SIP agents to access to the
# cluster. Such domain is often associated to DNS SRV records for
# each proxy of the cluster, so that DNS resolution returns the
# address of a specific proxy randomly.
# Flexisip uses that domain when it needs to insert a 'Path' or
# 'Record-route' header addressing the cluster instead of itself.
# Default:
#cluster-domain=
# List of IP addresses of all the proxies present in the cluster.
# SIP messages coming from these addresses won't be challenged by
# the authentication module and won't have any rate limit applied
# by the DoS protection module.
# Default:
#nodes=
# Transport to use for communication with the other proxies of the
# cluster. This is useful only when no transport declared in 'global/transport'
# parameter can be used to reach the other proxies e.g. when inter-proxy
# communications are to be made through a private network.
# Ex: sip:10.0.0.8:5059;transport=tcp
# Default:
#internal-transport=
##
## Should the server be registered on a local domain, to be accessible
## via multicast DNS.
##
[mdns-register]
# Set to 'true' to enable multicast DNS register
# Default: false
#enabled=false
# Priority of this instance, lower value means more preferred.
# 'n': priority of n (example 10)
# 'n-m': random priority between n and m (example 10-50)
# Default: 0
#mdns-priority=0
# A relative weight for Flexisips with the same priority, higher
# value means more preferred.
# For example, if two Flexisips are registered on the same local
# domain with one at 20 and the other at 80, then 20% of Flexisip
# traffic will be redirected to the first Flexisip and 80% to the
# other one.
# The sum of all the weights of Flexisips on the same local domain
# must be 100.
# Default: 100
#mdns-weight=100
# Time To Live of any mDNS query that will ask for this Flexisip
# instance
# Default: 3600
#mdns-ttl=3600
##
## Event logs contain per domain and user information about processed
## registrations, calls and messages.
## See: https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Event%20logs%20and%20queries/
## for architecture and queries.
##
[event-logs]
# Enable event logs.
# Default: false
#enabled=false
# Define logger for storing logs. It supports "filesystem", "database"
# and "flexiapi".
# Default: filesystem
#logger=filesystem
# Directory where event logs are written as a filesystem (case when
# filesystem output is chosen).
# Default: /var/log/flexisip
#filesystem-directory=/var/log/flexisip
# Type of backend that Soci will use for the connection.
# Depending on your Soci package and the modules you installed,
# the supported databases are:`mysql`, `sqlite3` and `postgresql`
# Default: mysql
#database-backend=mysql
# Configuration parameters of the backend.
# The basic format is "key=value key2=value2". For a mysql backend,
# this is a valid config: "db=mydb user=user password='pass' host=myhost.com".
# Please refer to the Soci documentation of your backend, for instance:
# http://soci.sourceforge.net/doc/master/backends/#supported-backends-and-features
# Default: db='mydb' user='myuser' password='mypass' host='myhost.com'
#database-connection-string=db='mydb' user='myuser' password='mypass' host='myhost.com'
# Amount of queries that will be allowed to be queued before bailing
# password requests.
# This value should be chosen accordingly with 'database-nb-threads-max',
# so that you have a coherent behavior.
# This limit is here mainly as a safeguard against out-of-control
# growth of the queue in the event of a flood or big delays in the
# database backend.
# Default: 100
#database-max-queue-size=100
# Maximum number of threads for writing in database.
# If you get a `database is locked` error with sqlite3, you must
# set this variable to 1.
# Default: 10
#database-nb-threads-max=10
# Domain name or IP address of the FlexiAPI host. This setting will
# be used in combination with flexiapi-port and -prefix to contact
# the API located at <flexiapi-host>:<flexiapi-port><flexiapi-prefix>
# Default: localhost
#flexiapi-host=localhost
# Port on the FlexiAPI host. See `flexiapi-host` for details.
# Default: 443
#flexiapi-port=443
# Path prefix for FlexiAPI requests. See `flexiapi-host` for details.
# Default: /api/stats/
#flexiapi-prefix=/api/stats/
# API authentication key for the FlexiAPI
# Default:
#flexiapi-api-key=
##
## STUN server parameters.
##
[stun-server]
# Enable or disable stun server.
# Default: true
enabled=false
# Local ip address where to bind the socket.
# Default: 0.0.0.0
#bind-address=0.0.0.0
# STUN server port number.
# Default: 3478
#port=3478
##
## Flexisip presence server parameters.
##
[presence-server]
# Enable presence server
# Default: true
#enabled=true
# List of white space separated SIP URIs where the presence server
# must listen. Must not be tls.
# Default: sip:127.0.0.1:5065;transport=tcp
#transports=sip:127.0.0.1:5065;transport=tcp
# Default expires of PUBLISH request in second.
# Default: 600
#expires=600
# Max number of presentity sent in a single NOTIFY by default.
# Default: 200
#notify-limit=200
# Enable long-term presence notifies
# Default: false
long-term-enabled=true
# Soci connection string for the resource list database.
# Default:
#rls-database-connection=
# SQL request to obtain the list of the users corresponding to an
# resource list subscription.
# Named parameters are:
# * ':from' : the URI of the sender of the SUBSCRIBE. (mandatory)
# * ':to' : the URI of the users list which the sender want to
# subscribe to. (mandatory)
#
# Default:
#rls-database-request=
# Max number of threads.
# Default: 50
#rls-database-max-thread=50
# Max legnth of threads queue.
# Default: 50
#rls-database-max-thread-queue-size=50
# Soci SQL request used to obtain the username associated with a
# phone alias.
# The string MUST contains the ':phone' keyword which will be replaced
# by the phone number to look for.
# The result of the request is a 1x1 table containing the name of
# the user associated with the phone number.
#
# Example: select login from accounts where phone = :phone
# Default:
#soci-user-with-phone-request=
# Same as 'soci-user-with-phone-request' but allows to fetch several
# users by a unique SQL request.
# The string MUST contains the ':phones' keyword which will be replaced
# by the list of phone numbers to look for. Each element of the
# list is seperated by a comma character and is protected by simple
# quotes (e.g. '0336xxxxxxxx','0337yyyyyyyy','034zzzzzzzzz').
# If you use phone number linked accounts you'll need to select
# login, domain, phone in your request for flexisip to work.
# Example: select login, domain, phone from accounts where phone
# in (:phones)
# Default:
#soci-users-with-phones-request=
# Duration in milliseconds during which the last activity is kept
# in memory. Default is 1 day.
# Default: 86400000
#last-activity-retention-time=86400000
##
## Flexisip conference server parameters.
## The Flexisip conference server is in charge of groupchat and audio/video
## conferences.It follows the concepts of RFC4579 for conference
## establishment and management, and as such factory and focus URIs
## must be configured.
## It requires a MariaDB/MySQL database in order to persistently
## store chatroom or conference state (participants and their devices).
## For chat, it requires the Registrar backend (see section module::Registrar)
## to discover devices (or client instances) of each participant,
## which creates an explicit dependency on Flexisip proxy server.
## This dependency is not required for audio/video conferences.
##
[conference-server]
# Enable conference server
# Default: true
#enabled=true
# URI where the conference server must listen. Only one URI can
# be specified.
# Default: sip:127.0.0.1:6064;transport=tcp
#transport=sip:127.0.0.1:6064;transport=tcp
# List of SIP URIs used by clients to create a conference. This
# implicitely defines the list of SIP domains managed by the conference
# server. For example:
# conference-factory-uris=sip:conference-factory@sip.linphone.org
# sip:conference-factory@sip.linhome.org
# Default:
#conference-factory-uris=
# List of respective template SIP focus URIs to use for conferences
# created by the factory URIs given in 'conference-factory-uris'.
# The focus URIs are unique SIP URIs targeting a specific conference.
# A 'conf-id' URI parameter providing uniqueness is automatically
# appended at runtime. For example, setting:
# conference-focus-uris=sip:conference-focus@sip.linphone.org
# causes the conference server to generate conference URIs in the
# form of 'sip:conference-focus@sip.linphone.org;conf-id=<something
# random>' when requested to create a conference.
# Default:
#conference-focus-uris=
# The SIP proxy URI to which the conference server should sent all
# its outgoing SIP requests.
# Default: sip:127.0.0.1:5060;transport=tcp
#outbound-proxy=sip:127.0.0.1:5060;transport=tcp
# Domains managed by the local SIP service, ie domains for which
# user registration information can be found directly from the local
# registrar database (redis database). For external domains (not
# in this list), a 'reg' SUBSCRIBE (RFC3680) will be emitted.It
# is not necessary to list here domains that appear in the 'conference-factory-uris'
# property. They are assumed to be local domains already.
# Ex: local-domains=sip.linphone.org conf.linphone.org linhome.org
# Default:
#local-domains=
# Choose the type of database backend that the conference server
# will use persistency of chatrooms and conferences data.
# Provided that the requested Soci modules are installed, the supported
# database backends are: `mysql`, `sqlite3`
# Default: mysql
#database-backend=mysql
# The configuration parameters of the database backend used for
# persistency of chatrooms and conference data.
# The basic format is "key=value key2=value2". For a MySQL backend,
# this is a valid config: "db=mydb user=user password='pass' host=myhost.com".
# Please refer to the Soci documentation of your backend, for instance:
# http://soci.sourceforge.net/doc/3.2/backends/mysql.htmlhttp://soci.sourceforge.net/doc/3.2/backends/sqlite3.html
# Default: db='mydb' user='myuser' password='mypass' host='myhost.com'
#database-connection-string=db='mydb' user='myuser' password='mypass' host='myhost.com'
# Whether the conference server shall check device capabilities
# before inviting them to a session.
# The capability check is currently limited to Linphone client that
# put a +org.linphone.specs contact parameter in order to indicate
# whether they support group chat and secured group chat.
# Default: true
#check-capabilities=true
# List of media supported by the conference server. This typically
# allows to specify whether this conference server instance is able
# to provide chat service or audio/video conference service, or
# both.Valid values are: audio, video and text. For example:
# supported-media-types=audio video text
# Default: text
#supported-media-types=text
# The media encryption the conference server will offer when calling
# participants to an audio or video conference .
# Valid values are: none, sdes, zrtp and dtls.
# Default: none
#encryption=none
# Public host name or IP addresses of the conference server machine.
# Configuring this property is required when the conference server
# is deployed behind a firewall, so that the public IP address (v4,
# v6) can be advertised in SDP, as ICE server-reflexive candidates
# in order for the conference server to receive RTP media packets
# from clients. If no hostname is given, the v4 and v6 IP address
# can be listed separated by whitespaces, in any order. It is not
# possible to configure several v4 addresses or several v6 addresses.For
# example:
# nat-addresses=conference.linphone.org
# nat-addresses=5.135.31.160 2001:41d0:303:3aee::1
# Default:
#nat-addresses=
# Whether the conference server will delete chat rooms that have
# no participants registered.
#
# Default: true
#empty-chat-room-deletion=true
##
## Flexisip RegEvent server parameters.The regevent server is in
## charge of responding to SIP SUBSCRIBEs for the 'reg' event as
## defined by RFC3680 - A Session Initiation Protocol (SIP) Event
## Package for Registrations - https://tools.ietf.org/html/rfc3680
## .To generate the outgoing NOTIFY, it will rely upon the registrar
## database, as setup in module::Registrar section.
##
[regevent-server]
# SIP uri on which the RegEvent server is listening on.
# Default: sip:127.0.0.1:6065;transport=tcp
#transport=sip:127.0.0.1:6065;transport=tcp
##
## Flexisip back-to-back user agent server parameters.
##
[b2bua-server]
# The type of application that will handle calls bridged through
# the B2BUA. Possible values:
# - `trenscrypter` Bridge different encryption types on both ends
# transparently.
# - `sip-bridge` Bridge calls through an external SIP provider.
# (e.g. for PSTN gateways)
# Default: trenscrypter
#application=trenscrypter
# SIP uri on which the back-to-back user agent server is listening
# on.
# Default: sip:127.0.0.1:6067;transport=tcp
#transport=sip:127.0.0.1:6067;transport=tcp
# Value of User-Agent header. Use the following syntax: <name>[/<version>]
# where <version> can bet set to '{version}' that is a placeholder
# for the Flexisip version.
# Default: Flexisip-B2BUA/{version}
#user-agent=Flexisip-B2BUA/{version}
# Directory where to store b2bua core local files
# Default
# Default: /var/opt/belledonne-communications/flexisip/b2b
#data-directory=/var/opt/belledonne-communications/flexisip/b2b
# The Flexisip proxy URI to which the B2bua server should send all
# its outgoing SIP requests.
# Default: sip:127.0.0.1:5060;transport=tcp
#outbound-proxy=sip:127.0.0.1:5060;transport=tcp
# Duration after which the B2BUA will terminate a call if no RTP
# packet is received from the other call participant. Unit: seconds.
# Default: 30
#no-rtp-timeout=30
# Any call bridged through the B2BUA that has been running for longer
# than this amount of seconds will be terminated. 0 to disable and
# let calls run unbounded.
# Default: 0
#max-call-duration=0
# When not null, force outgoing video call to use the specified
# codec.
# Warning: all outgoing calls will list only this codec, which means
# incoming calls must use it too.
# Default:
#video-codec=
##
## Encryption transcoder bridge parameters.
##
[b2bua-server::trenscrypter]
# Select the call outgoing encryption mode, this is a list of regular
# expressions and encryption mode.
# Valid encryption modes are: zrtp, dtls-srtp, sdes, none.
#
# The list is formatted in the following mode:
# mode1 regex1 mode2 regex2 ... moden regexn
# regex use posix syntax, any invalid one is skipped
# Each regex is applied, in the given order, on the callee sip uri(including
# parameters if any). First match found determines the encryption
# mode. if no regex matches, the incoming call encryption mode is
# used.
#
# Example: zrtp .*@sip\.secure-example\.org dtsl-srtp .*dtls@sip\.example\.org
# zrtp .*zrtp@sip\.example\.org sdes .*@sip\.example\.org
# In this example: the address is matched in order with
# .*@sip\.secure-example\.org so any call directed to an address
# on domain sip.secure-example-org uses zrtp encryption mode
# .*dtls@sip\.example\.org any call on sip.example.org to a username
# ending with dtls uses dtls-srtp encryption mode
# .*zrtp@sip\.example\.org any call on sip.example.org to a username
# ending with zrtp uses zrtp encryption mode
# The previous example will fail to match if the call is directed
# to a specific device(having a GRUU as callee address)
# To ignore sip URI parameters, use (;.*)? at the end of the regex.
# Example: .*@sip\.secure-example\.org(;.*)?
# Default:Selected encryption mode(if any) is enforced and the call
# will fail if the callee does not support this mode
# Default:
#outgoing-enc-regex=
# Outgoing SRTP crypto suite in SDES encryption mode:
# Select the call outgoing SRTP crypto suite when outgoing encryption
# mode is SDES, this is a list of regular expressions and crypto
# suites list.
# Valid srtp crypto suites are :
# AES_CM_128_HMAC_SHA1_80, AES_CM_128_HMAC_SHA1_32
# AES_192_CM_HMAC_SHA1_80, AES_192_CM_HMAC_SHA1_32 // currently
# not supported
# AES_256_CM_HMAC_SHA1_80, AES_256_CM_HMAC_SHA1_80
# AEAD_AES_128_GCM, AEAD_AES_256_GCM
#
# The list is formatted in the following mode:
# cryptoSuiteList1 regex1 cryptoSuiteList2 regex2 ... crytoSuiteListn
# regexn
# with cryptoSuiteList being a ; separated list of crypto suites.
#
# Regex use posix syntax, any invalid one is skipped
# Each regex is applied, in the given order, on the callee sip uri(including
# parameters if any). First match found determines the crypto suite
# list used.
#
# if no regex matches, core setting is applied
# or default to AES_CM_128_HMAC_SHA1_80;AES_CM_128_HMAC_SHA1_32;AES_256_CM_HMAC_SHA1_80;AES_256_CM_HMAC_SHA1_32
# when no core setting is available
#
# Example:
# AES_256_CM_HMAC_SHA1_80;AES_256_CM_HMAC_SHA1_32 .*@sip\.secure-example\.org
# AES_CM_128_HMAC_SHA1_80 .*@sip\.example\.org
#
# In this example: the address is matched in order with
# .*@sip\.secure-example\.org so any call directed to an address
# on domain sip.secure-example-org uses AES_256_CM_HMAC_SHA1_80;AES_256_CM_HMAC_SHA1_32
# suites (in that order)
# .*@sip\.example\.org any call directed to an address on domain
# sip.example.org use AES_CM_128_HMAC_SHA1_80 suite
# The previous example will fail to match if the call is directed
# to a specific device(having a GRUU as callee address)
# To ignore sip URI parameters, use (;.*)? at the end of the regex.
# Example: .*@sip\.secure-example\.org(;.*)?
# Default:
# Default:
#outgoing-srtp-regex=
##
## External SIP Provider Bridge parameters.
##
[b2bua-server::sip-bridge]
# Path to a file containing the accounts to use for external SIP
# bridging, organised by provider, in JSON format.
# Here is a template of what should be in this file:
# [{"name": "<user-friendly provider name for CLI output>",
# "pattern": "<regexp to match callee address>",
# "outboundProxy": "<sip:some.provider.example.com;transport=tls>",
# "registrationRequired": true,
# "maxCallsPerLine": 42,
# "accounts": [{
# "uri": "sip:account1@some.provider.example.com",
# "userid": "<optional (e.g. an API key)>",
# "password": "<password or API token>"
# }]
# }]
# Default: example-path.json
#providers=example-path.json
##
## This module bans user when they are sending too much packets within
## a given timeframe. To see the list of currently banned IPs/ports,
## use iptables -L.
##
[module::DoSProtection]
# Indicate whether the module is activated.
# Default: true
#enabled=true
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# Number of milliseconds to consider to compute the packet rate
# Default: 3000
#time-period=3000
# Maximum packet rate in packets/seconds, averaged over [time-period]
# millisecond(s) to consider it as a DoS attack.
# Default: 20
#packet-rate-limit=20
# Number of minutes to ban the ip/port using iptables
# Default: 2
#ban-time=2
# Name of the chain flexisip will create to store the banned IPs
# Default: FLEXISIP
#iptables-chain=FLEXISIP
# List of IP addresses or hostnames for which no DoS protection
# is made. This is typically for trusted servers from which we can
# receive high traffic. Please note that nodes from the local flexisip
# cluster (see [cluster] section) are automatically added to the
# white list, as well as 127.0.0.1 and ::1.
# Example:
# white-list=sip.example.org sip.linphone.org 15.128.128.93
# Default:
#white-list=
##
## The SanitChecker module checks that required fields of a SIP message
## are present to avoid unecessary checking while processing message
## further.
## If the message doesn't meet these sanity check criterias, then
## it is stopped and bad request response is sent.
##
[module::SanityChecker]
# Indicate whether the module is activated.
# Default: true
#enabled=true
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
##
## The GarbageIn module collects incoming garbage and prevent any
## further processing.
##
[module::GarbageIn]
# Indicate whether the module is activated.
# Default: false
#enabled=false
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default: false
#filter=false
##
## Enable this module in order the proxy replies to OPTION requests
## by “200 Ok”. Today, no supported header is added in the response,
## so this mechanism cannot be used for capabilities introspection.
## If the module is disabled, the request will be silently discarded.
##
[module::Capabilities]
# Indicate whether the module is activated.
# Default: true
#enabled=true
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
##
## The NatHelper module executes small tasks to make SIP work smoothly
## despite firewalls. It corrects the Contact headers that contain
## obviously inconsistent addresses, and adds a Record-Route to ensure
## subsequent requests are routed also by the proxy, through the
## same UDP or TCP channel used for the initial request.
##
[module::NatHelper]
# Indicate whether the module is activated.
# Default: true
#enabled=true
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# Internal URI parameter added to response contact by first proxy
# and cleaned by last one.
# Default: verified
#contact-verified-param=verified
# Fix record-routes, to workaround proxies behind firewalls but
# not aware of it.
# Default: false
#fix-record-routes=false
# Policy to recognize nat'd record-route and fix them. There are
# two modes: 'safe' and 'always'
# Default: safe
#fix-record-routes-policy=safe
##
## The authentication module challenges and authenticates SIP requests
## using two possible methods:
## * if the request is received via a TLS transport and 'require-peer-certificate'
## is set in transport definition in [Global] section for this transport,
## then the From header of the request is matched with the CN claimed
## by the client certificate. The CN must contain sip:user@domain
## or alternate name with URI=sip:user@domain corresponding to the
## URI in the from header for the request to be accepted. Optionnaly,
## the property tls-client-certificate-required-subject may contain
## a regular expression for additional checks to execute on certificate
## subjects.
## * if no TLS client based authentication can be performed, or
## has failed, then a SIP digest authentication is performed. The
## password verification is made by querying a database or a password
## file on disk.
##
[module::Authentication]
enabled=true
auth-domains=*
db-implementation=file
file-path=/etc/flexisip/users.db.txt
# Indicate whether the module is activated.
# Default: false
#enabled=false
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# List of whitespace-separated IP addresses which will be judged
# as trustful. Messages coming from these addresses won't be challenged.
# Default:
#trusted-hosts=
# List of whitespace separated domains to challenge. Others are
# automatically denied. The wildcard domain '*' is accepted, which
# means that requests are challenged whatever the originating domain
# is. This is convenient for a proxy serving multiple SIP domains.
#
# Default: localhost
#auth-domains=localhost
# List of digest algorithms to use for password hashing. Think this
# setting as filter applied after fetching the credentials of a
# user from the user database. For example, if a user has its password
# hashed by MD5 and SHA-256 but 'available-algorithms' only has
# MD5, then only a MD5-based challenged will be submited to the
# UAC.
# Furthermore, should a user have several hashed passwords and these
# are present in the list, then a challenge header will be put in
# the 401 response for each fetched password in the order given
# by the list.
# Supported algorithems are MD5 and SHA-256.
# Default: MD5
#available-algorithms=MD5
# Disable the QOP authentication method. Default is to use it, use
# this flag to disable it if needed.
# Default: false
#disable-qop-auth=false
# Don't reply 403 when authentication fails. Instead, generate a
# new 401 (or 407) response containing a new challenge.
# Default: false
#no-403=false
# Expiration time before generating a new nonce.
# Unit: second
# Default: 3600
#nonce-expires=3600
# The realm to use for digest authentication. It will used whatever
# the domain of the From-URI.
# If the value starts with 'regex:', then this parameter will have
# the same effect than 'realm-regex', using all the remaining string
# as regular expression.
# WARNING: this parameter is exclusive with 'realm-regex'
#
# Examples:
# realm=sip.example.org
# realm=regex:sip:.*@sip\.(.*)\.com
#
# Default:
#realm=
# Extraction regex applied on the URI of the 'from' header (or P-Prefered-Identity
# header if present) in order to extract the realm. The realm is
# found out by getting the first slice of the URI that matches the
# regular expression. If it has one or more capturing parentheses,
# the content of the first one is used as realm.
# If no regex is specified, then the realm will be the domain part
# of the URI.
#
# For instance, given auth-domains=sip.example.com, you might use
# 'sip:.*@sip\.(.*)\.com' in order to use 'example' as realm.
#
# WARNING: this parameter is exclusive with 'realm'
# Default:
#realm-regex=
# If set to true, the module will simply reject with "403 forbidden"
# any request coming from clients which have presented a bad TLS
# certificate (regardless of reason: improper signature, unmatched
# subjects). Otherwise, the module will fallback to a digest authentication.
# This policy applies only for transports configured which have
# 'required-peer-certificate=1' parameter; indeed no certificate
# is requested to the client otherwise.
# Default: false
#reject-wrong-client-certificates=false
# An optional regular expression used to accept or deny a request
# basing on subject fields of the client certificate. The request
# is allowed if one of the subjects matches the regular expression.
# The list of subjects to check is built by extracting the following
# fields, in order:
# subjectAltNames.DNS, subjectAltNames.URI, subjectAltNames.IP
# and CN
# Default:
#tls-client-certificate-required-subject=
# Accept requests which the client certificate enables to trust
# the domaine of its Request-URI.
# Default: false
#trust-domain-certificates=false
# When receiving a proxy authenticate challenge, generate a new
# challenge for this proxy.
# Default: false
#new-auth-on-407=false
# Database backend implementation for digest authentication [soci,file].
# Default: file
#db-implementation=file
# Duration of the validity of the credentials added to the cache
# in seconds.
# Default: 1800
#cache-expire=1800
# Path of the file in which user credentials are stored.
# The file must start with 'version:1' as the first line, and then
# contains lines in the form of:
# user@domain clrtxt:clear-text-password md5:md5-password sha256:sha256-password
# ;
# For example:
# bellesip@sip.linphone.org clrtxt:secret ;
# bellesip@sip.linphone.org md5:97ffb1c6af18e5687bf26cdf35e45d30
# ;
# bellesip@sip.linphone.org clrtxt:secret md5:97ffb1c6af18e5687bf26cdf35e45d30
# sha256:d7580069de562f5c7fd932cc986472669122da91a0f72f30ef1b20ad6e4f61a3
# ;
# Default:
#file-path=
# Choose the type of backend that Soci will use for the connection.
# Depending on your Soci package and the modules you installed,
# this could be 'mysql', 'oracle', 'postgresql' or something else.
# Default: mysql
#soci-backend=mysql
# The configuration parameters of the Soci backend.
# The basic format is "key=value key2=value2". For a mysql backend,
# this is a valid config: "db=mydb user=user password='pass' host=myhost.com".
# Please refer to the Soci documentation of your backend, for intance:
# http://soci.sourceforge.net/doc/release/4.0/backends/mysql/
# Default: db=mydb user=myuser password='mypass' host=myhost.com
#soci-connection-string=db=mydb user=myuser password='mypass' host=myhost.com
# Soci SQL request used to obtain the password of a given user.
# Each keywords starting with ':' character will be replaced by
# strings extracted from the SIP request to authenticate.
#
# Only these keywords are supported: - ':id' : the user found
# in the from header (mandatory)
# - ':domain' : the authorization realm
# - ':authid' : the authorization username
#
# The request MUST returns a two-columns table, which columns are
# defined as follow:
# - 1st column: hashed password of the user or plain password if
# the associated algorithm is CLRTXT.
# - 2nd column: the algorithm used to hash the associated password.
# Supported values: 'CLRTXT', 'MD5', 'SHA-256'
#
# Examples:
# - the password and algorithm are both available in the database
# select password, algorithm from accounts where login = :id and
# domain = :domain
#
# - all the passwords from the database are MD5
# select password, 'MD5' from accounts where login = :id and domain
# = :domain
# Default: select password, 'MD5' from accounts where login = :id and domain = :domain
#soci-password-request=select password, 'MD5' from accounts where login = :id and domain = :domain
# Amount of queries that will be allowed to be queued before bailing
# password requests.
# This value should be chosen accordingly with 'soci-poolsize',
# so that you have a coherent behavior.
# This limit is here mainly as a safeguard against out-of-control
# growth of the queue in the event of a flood or big delays in the
# database backend.
# Default: 1000
#soci-max-queue-size=1000
# Size of the pool of connections that Soci will use. A thread is
# opened for each DB query, and this pool will allow each thread
# to get a connection.
# The threads are blocked until a connection is released back to
# the pool, so increasing the pool size will allow more connections
# to occur simultaneously.
# On the other hand, you should not keep too many open connections
# to your DB at the same time.
# Default: 100
#soci-poolsize=100
##
## This module redirect sip requests with a 302 move temporarily.
##
[module::Redirect]
# Indicate whether the module is activated.
# Default: false
#enabled=false
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# A contact where to redirect requests. ex: <sip:127.0.0.1:5065>;expires=100
# Default:
#contact=
##
## This module is in charge of routing 'reg' event SUBSCRIBE requests
## to the flexisip-regevent server.
##
[module::RegEvent]
# Indicate whether the module is activated.
# Default: false
#enabled=false
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# A sip uri where to send all the reg-event related requests.
# Default: sip:127.0.0.1:6065;transport=tcp
#regevent-server=sip:127.0.0.1:6065;transport=tcp
##
## This module is in charge of intercepting calls and route them
## to the back-to-back user agent server
##
[module::B2bua]
# Indicate whether the module is activated.
# Default: false
#enabled=false
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# A sip uri where to send all the relevent requests.
# Default: sip:127.0.0.1:6067;transport=tcp
#b2bua-server=sip:127.0.0.1:6067;transport=tcp
##
## This module transfers SIP presence messages, like subscribe/notify/publish
## to a presence server.
##
[module::Presence]
# Indicate whether the module is activated.
# Default: false
#enabled=false
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default: is_request && (request.method-name == 'PUBLISH' || request.method-name == 'NOTIFY' || request.method-name == 'SUBSCRIBE')
#filter=is_request && (request.method-name == 'PUBLISH' || request.method-name == 'NOTIFY' || request.method-name == 'SUBSCRIBE')
# A SIP URI where to send all presence related requests.
# Default: sip:127.0.0.1:5065;transport=tcp
#presence-server=sip:127.0.0.1:5065;transport=tcp
# If true, only manage list subscription.
Default: false
#only-list-subscription=false
# When getting the list of users with phones, if this setting is
# enabled, it will limit the results to the ones that have the same
# domain.
# Default: false
#check-domain-in-presence-results=false
##
## The Registrar module handles REGISTER requests for domains it
## is in charge of. It stores the address of record (AOR) in order
## to allow routing requests intended to the client who registered.
## REGISTER requests for other domains are simply ignored and transferred
## to the next module.
##
[module::Registrar]
# Indicate whether the module is activated.
# Default: true
#enabled=true
enabled=true
#reg-domains=120.79.142.164
reg-domains=172.18.7.16 120.79.142.164
db-implementation=internal
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# List of whitespace separated domain names which the registar is
# in charge of. It can eventually be the '*' (wildcard) in order
# to match any domain name.
# Default: localhost
#reg-domains=localhost
# Register users based on response obtained from a back-end server.
# This mode is for using flexisip as a front-end server to hold
# client connections but registeracceptance is deferred to backend
# server to which the REGISTER is routed.
# Default: false
#reg-on-response=false
# Maximum number of registered contacts per address of record.
# Default: 12
#max-contacts-by-aor=12
# Limits the number of authorized "Contact:" headers in a REGISTER
# request. If the number of "Contact:" headers exceeds this limit,
# the request is rejected.
# Default: 1
#max-contacts-per-registration=1
# List of contact URI parameters that can be used to identify a
# user's device. The contact parameters are searched in the order
# of the list, the first matching parameter is used and the others
# ignored.
# Default: +sip.instance pn-tok line
#unique-id-parameters=+sip.instance pn-tok line
# When supported by the client, assign a pub-gruu address to the
# client, returned in the response.
# Default: true
#enable-gruu=true
# Maximum expire time for a REGISTER, in seconds.
# Default: 86400
#max-expires=86400
# Minimum expire time for a REGISTER, in seconds.
# Default: 60
#min-expires=60
# Set a value that will override expire times given by the REGISTER
# requests. A null or negative value disables that feature. If it
# is enabled, max-expires and min-expires will not have any effect.
# Default: -1
#force-expires=-1
# File containing the static records to add to database on startup.
# Format: one 'sip_uri contact_header' by line. Example:
# <sip:contact@domain> <sip:127.0.0.1:5460>,<sip:192.168.0.1:5160>
# Default:
#static-records-file=
# Timeout in seconds after which the static records file is re-read
# and the contacts updated.
# Default: 600
#static-records-timeout=600
# Implementation used for storing the contact URIs of each address
# of record. Two backends are available:
# - redis : contacts are stored in a Redis database, which allows
# persistent and shared storage accross multiple Flexisip instances.
# - internal : contacts are stored in RAM. Of course, if flexisip
# is restarted, all the contact URIs are lost until clients update
# their registration.
# The redis backend is recommended, the internal being more adapted
# to very small deployments.
# Default: internal
#db-implementation=internal
# Hostname or address of the Redis server.
# Default: localhost
#redis-server-domain=localhost
# Port of the Redis server.
# Default: 6379
#redis-server-port=6379
# ACL username used to authenticate on Redis. Empty to disable.
# Setting this but not `redis-auth-password` is a misconfiguration,
# and will be ignored.
# Default:
#redis-auth-user=
# Authentication password for Redis. Empty to disable. If set but
# `redis-auth-user` is left unset or empty, Flexisip will attempt
# to register in legacy mode.
# Default:
#redis-auth-password=
# Timeout in milliseconds of the Redis connection.
# Default: 1500
#redis-server-timeout=1500
# When Redis is configured in master-slave, Flexisip will periodically
# ask which Redis instances are the slaves and the master. This
# is the period with which it will query the server. It will then
# determine whether is is connected to the master, and if not, let
# go of the connection and migrate to the master.
# Note: This requires that all Redis instances have the same password.
# Otherwise the authentication will fail.
# Default: 60
#redis-slave-check-period=60
# Tell if Flexisip should try to connect to Redis slaves if master
# went down. Can be disabled if slaves hostname info are on private
# network for example.
# Default: true
#redis-use-slaves-as-backup=true
# Sequence of proxies (space-separated) where requests will be redirected
# through (RFC3608)
# Default:
#service-route=
# Name of the custom Contact header parameter which is to indicate
# the expire time for chat message delivery.
# Default: message-expires
#message-expires-param-name=message-expires
# If not zero, the expire time put in the 200 OK response won't
# be the one required by the user agent, but will be slightly modified
# by subtracting a random value. The value given by this parameter
# is the maximum percentage of the initial expire that can be subtracted.
# If zero, no randomization is applied. Value must be in [0, 100].
# Default: 0
#register-expire-randomizer-max=0
##
## The purpose of the StatisticsCollector module is to collect call
## statistics (RFC 6035) and store them on the server.
##
[module::StatisticsCollector]
# Indicate whether the module is activated.
# Default: false
#enabled=false
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default: is_request && request.method-name == 'PUBLISH'
#filter=is_request && request.method-name == 'PUBLISH'
# SIP URI of the statistics collector. Note that application/vq-rtcpxr
# messages for this address will be deleted by this module and thus
# not be delivered.
# Default:
#collector-address=
##
## The Router module routes requests for domains it manages.
## The routing algorithm is as follows:
## - first skip route headers that directly point to this proxy.
## - if a route header is found that doesn't point to this proxy,
## then the request is not processed by the Router module, and will
## be handled by the Forward module at the end of the processing
## chain.
## - examine the request-uri: if it is part of the domains managed
## by this proxy (according to Registrar module 'reg-domains' definition,
## then attempt to resolve the request-uri from the Registrar database.
## - the results from the registrar database, in the form of contact
## headers, are sorted by priority (q parameter), if any.
## - for each set of contact with equal priorities, the request
## is forked, and sent to their corresponding sip URI. After a timeout
## defined by property 'call-fork-current-branches-timeout', a next
## set of contact header is determined.
## - responses are received from all attempted branches, and sent
## back to the request originator, according to the procedure of
## RFC3261 16.7 Response processing.
## The router module offers different variations of the routing logic,
## depending on whether it is an INVITE, a MESSAGE, or another type
## of request. The processing of MESSAGE request essentially differs
## from others because it allows to keep the MESSAGE for a later
## delivery, in which case the incoming transaction will be terminated
## with a 202 Accepted response.
##
[module::Router]
# Indicate whether the module is activated.
# Default: true
#enabled=true
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# Store and retrieve contacts without using the domain.
# Default: false
#use-global-domain=false
# Fork invites to late registers.
# Default: false
#fork-late=false
# All the forked have to decline in order to decline the caller
# invite.
# Default: false
#fork-no-global-decline=false
# Treat 603 Declined answers as urgent. Only relevant if fork-no-global-decline
# is set to true.
# Default: false
#treat-decline-as-urgent=false
# During a fork procedure, treat all failure response as urgent.
# Default: false
#treat-all-as-urgent=false
# Maximum time for a call fork to try to reach a callee, in seconds.
# Default: 90
#call-fork-timeout=90
# Maximum time before delivering urgent responses during a call
# fork, in seconds. The typical fork process requires to wait the
# best response from all branches before transmitting it to the
# client. However some error responses are retryable immediately
# (like 415 unsupported media, 401, 407) thus it is painful for
# the client to need to wait the end of the transaction time (32
# seconds) for these error codes.
# Default: 5
#call-fork-urgent-timeout=5
# Maximum time in seconds before trying the next set of lower priority
# contacts.
# Default: 10
#call-fork-current-branches-timeout=10
# Fork MESSAGE requests to client registering lately.
# Default: true
#message-fork-late=true
# Maximum duration for delivering a MESSAGE request. This property
# applies only if message-fork-late is 'true'; otherwise, the duration
# can't exceed the normal transaction duration.
# Default: 604800
#message-delivery-timeout=604800
# Maximum duration (in seconds) for accepting a MESSAGE request
# if no response is received from any recipients. This property
# is meaningful when message-fork-late is set to true.
# Default: 5
#message-accept-timeout=5
# If 'true', the message that are waiting for delivery will be stored
# in database instead of memory.
# Default: false
#message-database-enabled=false
# Choose the type of backend that Soci will use for the connection.
# Depending on your Soci package and the modules you installed,
# the supported databases are:`mysql` (and `sqlite3` soon)
# Default: mysql
#message-database-backend=mysql
# The configuration parameters of the backend. The basic format
# is "key=value key2=value2". For a mysql backend, this is a valid
# config: "db=mydb user=user password='pass' host=myhost.com". Please
# refer to the Soci documentation of your backend, for instance:
# http://soci.sourceforge.net/doc/master/backends/#supported-backends-and-features
# Default: db='mydb' user='myuser' password='mypass' host='myhost.com'
#message-database-connection-string=db='mydb' user='myuser' password='mypass' host='myhost.com'
# Size of the pool of connections that Soci will use for accessing
# the message database.
# Default: 100
#message-database-pool-size=100
# Default route to apply when the recipient is unreachable or when
# when all attempted destination have failed.It is given as a SIP
# URI, for example: sip:example.org;transport=tcp (without surrounding
# brakets)
# Default:
#fallback-route=
# During a call forking, allow several INVITEs going to the same
# next hop to be grouped into a single one. A proprietary custom
# header 'X-target-uris' is added to the INVITE to indicate the
# final targets of the INVITE.
# Default: false
#allow-target-factorization=false
# Whether the proxy is allowed to generate and send provisional
# responses during a call forking process. A typical example for
# this is the '110 Push sent' emitted by the proxy when at least
# one push notification has been sent to a target UA while routing
# an INVITE. Some old versions of Linphone (below linphone-sdk 4.2)
# suffer from an issue when receiving such kind of provisional responses
# that don't come from a remote client. This setting is mainly intended
# to temporarily workaround this situation.
# Default: true
#permit-self-generated-provisional-response=true
# Whether or not to resolve next hop in route header against registrar
# database. This is an extension to RFC3261, and should not be used
# unless in some specific deployment cases. A next hope in route
# header is otherwise resolved through standard DNS procedure by
# the Forward module.
# Default: false
#resolve-routes=false
# Whether or not to fallback to the parent domain if there is no
# fallback route set and the recipient is unreachable. For example,
# if routing to sip:bob@a.b.com returns no result, route the request
# to b.com. This is also a non-standard behavior.
# Default: false
#parent-domain-fallback=false
# Only use the fallback route if the expression is true.
# Default: true
#fallback-route-filter=true
# Max time, in seconds, the proxy will retain a request in order
# to maintain order.
# Default: 30
#max-request-retention-time=30
##
## This module performs push notifications to mobile phone notification
## systems: apple, android, as well as a generic http get/post to
## a custom server to which actual sending of the notification is
## delegated. The push notification is sent when an INVITE or MESSAGE
## request is not answered by the destination of the request within
## a certain period of time, configurable hereunder by 'timeout'
## parameter. The PushNotification has an implicit dependency on
## the Router module, which is in charge of creating the incoming
## and outgoing transactions and the context associated with the
## request forking process. No push notification can hence be sent
## if the Router module isn't activated. The time-to-live of the
## push notification depends on event for which the push notification
## is generated. - if it is for a call (INVITE), it will be set
## equal 'call-fork-timeout' property of the Router module, which
## corresponds to the maximum time for a call attempt.
## - if it is for an IM (MESSAGE or INVITE for a text session),
## then it will be set equal to the 'message-time-to-live' property.
##
[module::PushNotification]
# Indicate whether the module is activated.
# Default: false
#enabled=false
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# Number of seconds to wait before sending a push notification to
# device. A value lesser or equal to zero will make the push notification
# to be sent immediately, which is recommended since most of the
# time devices can't have a permanent connection with the Flexisip
# server.
# Default: 0
#timeout=0
# Time to live for the push notifications related to IM messages,
# in seconds. The default value '0' is interpreted as using the
# same value as for message-delivery-timeout of Router module.
# Default: 0
#message-time-to-live=0
# Maximum number of notifications queued for each push notification
# service
# Default: 100
#max-queue-size=100
# Number of push notification request retransmissions sent to a
# client for a same event (call or message). Retransmissions cease
# when a response is received from the client. Setting a value of
# zero disables retransmissions.
# Default: 0
#retransmission-count=0
# Retransmission interval in seconds for push notification requests,
# when a retransmission-count has been specified above.
# Default: 5
#retransmission-interval=5
# Default interval between to subsequent PNs when remote push notifications
# are used to notify a call invite to a clients that haven't published
# any token for VoIP and background push notifications. In that
# case, several PNs are sent subsequently until the call is picked
# up, declined or canceled. This parameter can be overridden by
# the client by using the 'pn-call-remote-push-interval' push parameter.
# A value of zero will cause the deactivation of push notification
# repetitions and the sending of thefinal notification. Thus, only
# the first push notification will be sent.
# The value must be in [0;30]
# Default: 0
#call-remote-push-interval=0
# If true, the following key in the payload of the push request
# will be set:
# * 'from-uri': the SIP URI of the caller or the message sender.
# * 'display-name': the display name of the caller or the message
# sender.
# * 'loc-args': the display name if not empty or the SIP URI instead.
#
# If false, the keys will be set but as empty.
# Default: false
#display-from-uri=false
# Enable push notification for apple devices
# Default: true
#apple=true
# Path to directory where to find Apple Push Notification service
# certificates. They should bear the appid of the application, suffixed
# by the release mode and .pem extension. For example: org.linphone.dev.pem
# org.linphone.prod.pem com.somephone.dev.pem etc... The files should
# be .pem format, and made of certificate followed by private key.
# This is also the path to the directory where to find Voice Over
# IP certificates (certicates to use PushKit). They should bear
# the appid of the application, suffixed by the release mode and
# .pem extension, and made of certificate followed by private key.
# For example: org.linphone.voip.dev.pem org.linphone.voip.prod.pem
# com.somephone.voip.dev.pem etc...
# Default: /etc/flexisip/apn
#apple-certificate-dir=/etc/flexisip/apn
# Set the badge value to 0 for Apple push
# Default: false
#no-badge=false
# Enable push notification for Android devices.
# Default: true
#firebase=true
# List of pairs of <Firebase Project Number>:<Firebase Cloud Messaging
# API (Legacy) Server Key> for each Android project that supports
# push notifications.
# Default:
#firebase-projects-api-keys=
# List of pairs of <Firebase Project Number>:<Path to service account
# json file> for each Android project that supports push notifications.
# Default:
#firebase-service-accounts=
# Represents the time in seconds to execute the access token refresh
# operation just before the current access token expires. This parameter
# is used to control overlapping access token lifetimes.
# Default: 300
#firebase-token-expiration-anticipation-time=300
# Default interval in seconds to execute the access token refresh
# operation in the event that the access token has not been successfully
# obtained.
# Default: 60
#firebase-default-refresh-interval=60
# Instead of having Flexisip sending the push notification directly
# to the Google/Apple/Microsoft push servers, send an http request
# to a server with all required information encoded in the URL,
# to which the actual sending of the push notification is delegated.
# The following arguments can be substituted in the http request
# uri, with the following values:
# - $type : apple, google, wp, firebase
# - $token : device token
# - $api-key : the api key to use (google and firebase only)
# - $app-id : application ID
# - $from-name : the display name in the from header
# - $from-uri : the sip uri of the from header
# - $from-tag : the tag of the from header
# - $to-uri : the sip uri of the to header
# - $call-id : the call-id of the INVITE or MESSAGE request
# - $event : call, message
# - $sound : the sound file to play with the notification
# - $msgid : the message id to put in the notification
# - $uid :
#
# The content of the text message is put in the body of the http
# request as text/plain, if any.
# Example: http://292.168.0.2/$type/$event?from-uri=$from-uri&tag=$from-tag&callid=$callid&to=$to-uri
# Default:
#external-push-uri=
# Method for reaching external-push-uri, typically GET or POST
# Default: GET
#external-push-method=GET
# Protocol used for reaching external-push-uri, http2 or http (deprecated)
# Default: http2
#external-push-protocol=http2
# Send service push notification every n minutes to all devices
# that are about to expire and should wake up to REGISTER back.
# 0 to disable. Recommended value: 30
# Default: 0
#register-wakeup-interval=0
# Start sending wake-up push notifications to contacts when they
# pass that percentage of their lifetime.
# Default: 50
#register-wakeup-threshold=50
##
## The MediaRelay module masquerades SDP message so that all RTP
## and RTCP streams go through the proxy. When the client has set
## ICE candidates in the SDP offer, then the MediaRelay module will
## automatically add ICE relay candidates. The RTP and RTCP streams
## are then routed so that each client receives the stream of the
## other. MediaRelay makes sure that RTP is ALWAYS established, even
## with uncooperative firewalls.
##
[module::MediaRelay]
# Indicate whether the module is activated.
# Default: true
enabled=true
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# The name of the SDP attribute to set by the first proxy to forbid
# subsequent proxies to provide relay. Use 'disable' to disable.
# Default: nortpproxy
#nortpproxy=nortpproxy
# The minimal value of SDP port range
#Default: 1024
sdp-port-range-min=11006
# The maximal value of SDP port range
# Default: 65535
sdp-port-range-max=17020
# Sends a ACK and BYE to 200Ok for INVITEs not belonging to any
# established call. This is to solve the race condition that happens
# when two callees answer the same call at the same time. According
# to RFC3261, the caller is expected to send an ACK followed by
# a BYE to the loser callee. This is not the case in RFC2543, where
# the proxy was supposed to do this. When set to true, the MediaRelay
# module will implement the RFC2543 behavior. Note that it may sound
# inappropriate to bundle this property with the media relay feature.
# However the MediaRelay module is the only one in Flexisip that
# has the visibility of SIP dialogs, which is necessary to implement
# this feature.
# Default: false
#bye-orphan-dialogs=false
# Maximum concurrent calls processed by the media-relay. Calls arriving
# when the limit is exceed will be rejected. A value of 0 means
# no limit.
# Default: 0
#max-calls=0
# When true, the 'c=' line and port number are set to the relay
# ip/port even if ICE candidates are present in the request, while
# the standard behavior is to leave the c= line and port number
# as they are in the original offer sent by the client. This variation
# allows callees that do not support ICE at all to benefit from
# the media relay service.
# Default: true
#force-relay-for-non-ice-targets=true
# Prevent media-relay ports to loop between them, which can cause
# 100% cpu on the media relay thread. You need to set this property
# to false if you are running test calls from clients running on
# the same IP address as the flexisip server
# Default: true
#prevent-loops=true
# In case multiples '183 Early media' responses are received for
# a call, only the first one will have RTP streams forwarded back
# to caller. This feature prevents the caller to receive 'mixed'
# streams, but it breaks scenarios where multiple servers play early
# media announcement in sequence.
# Default: true
#early-media-relay-single=true
# Maximum number of relayed early media streams per call. This is
# useful to limit the cpu usage due to early media relaying on embedded
# systems. A value of 0 stands for unlimited.
# Default: 0
#max-early-media-per-call=0
# Period of time in seconds, after which a relayed call without
# any activity is considered as no longer running. Activity counts
# RTP/RTCP packets exchanged through the relay and SIP messages.
# Default: 3600
#inactivity-period=3600
# Force the media relay to use the public address of Flexisip to
# relay calls. It not enabled, Flexisip will deduce a suitable IP
# address by basing on data from SIP messages, which could fail
# in tricky situations e.g. when Flexisip is behind a TCP proxy.
# Default: false
#force-public-ip-for-sdp-masquerading=false
##
## The purpose of the Transcoder module is to transparently transcode
## from one audio codec to another to make the communication possible
## between clients that do not share the same set of supported codecs.
## Concretely, it adds all missing codecs into the INVITEs it receives,
## and adds codecs matching the original INVITE into the 200Ok. Rtp
## ports and addresses are masqueraded so that the streams can be
## processed by the proxy. The transcoding job is done in the background
## by the Mediastreamer2 library, as consequence the set of supported
## codecs is exactly the the same as the codec set supported by Mediastreamer2,
## including the possible plugins you may installed to extend Mediastreamer2.
##
## WARNING: this module can conflict with the MediaRelay module as
## they are both changing the SDP. Make sure to configure them with
## different to-domains or from-domains filter if you want to enable
## both of them.
##
[module::Transcoder]
# Indicate whether the module is activated.
# Default: false
#enabled=false
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# Nominal size of RTP jitter buffer, in milliseconds. A value of
# 0 means no jitter buffer (packet processing).
# Default: 0
#jb-nom-size=0
# Whitespace separated list of user-agent strings for which audio
# rate control is performed.
# Default:
#rc-user-agents=
# Whitespace seprated list of audio codecs, in order of preference.
# The 'telephone-event' codec is necessary for inband DTMF processing.
# Default: speex/8000 amr/8000 iLBC/8000 gsm/8000 pcmu/8000 pcma/8000 telephone-event/8000
#audio-codecs=speex/8000 amr/8000 iLBC/8000 gsm/8000 pcmu/8000 pcma/8000 telephone-event/8000
# Remove the bandwidth limitations from SDP offers and answers
# Default: false
#remove-bw-limits=false
# If true, retransmissions of INVITEs will be blocked. The purpose
# of this option is to limit bandwidth usage and server load on
# reliable networks.
# Default: false
#block-retransmissions=false
##
## This module executes the basic routing task of SIP requests and
## pass them to the transport layer. It must always be enabled.
##
[module::Forward]
# Indicate whether the module is activated.
# Default: true
#enabled=true
# A request/response enters module if the boolean filter evaluates
# to true. Ex: from.uri.domain contains 'sip.linphone.org', from.uri.domain
# in 'a.org b.org c.org', (to.uri.domain in 'a.org b.org c.org')
# && (user-agent == 'Linphone v2'). You can consult the full filter
# documentation here : https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# Default:
#filter=
# A path to a configuration file describing routes to be prepended
# before forwarding a request, when specific conditions for the
# SIP request being forwarded are met. The condition is described
# using flexisip's filter syntax, as described on
# https://wiki.linphone.org/xwiki/wiki/public/view/Flexisip/Configuration/Filter%20syntax/
# The configuration file comprises lines using the following syntax:
# <sip route> <condition expressed as a filter expression>
# Comments are allowed with '#'.
# Conditions can spread over multiples lines provided that the continuation
# line starts with either spaces or tabs.
# The special condition '*' matches every request.
# The conditions are matched in the order they appear in the configuration
# file. The first fulfilled condition determines the route that
# is prepended.If the request does not match any condition, no route
# is prepended.
# The file may be empty, or no path may be specified, in which case
# no route is preprended either. Here is a an example of a valid
# routes configuration file:
# <sip:example.org;transport=tls> request.uri.domain == 'example.org'
# <sip:10.0.0.2:5070;transport=tcp> request.uri.params contains
# 'user=phone'
#
# Beware: that is not just a SIP URI, but a route. As a result,
# when the URI has parameters, brackets must enclose the URI, otherwise
# the parameters will be parsed as route parameters.
# Default:
#routes-config-path=
# Add a path header of this proxy
# Default: true
#add-path=true
# For SIP URIs, in asbsence of transport parameter, assume the given
# transport is to be used. Possible values are udp, tcp or tls.
# Default: udp
#default-transport=udp
# List of URL and contact params to remove
# Default: pn-tok pn-type app-id pn-msg-str pn-call-str pn-call-snd pn-msg-snd pn-timeout pn-silent pn-provider pn-prid pn-param
#params-to-remove=pn-tok pn-type app-id pn-msg-str pn-call-str pn-call-snd pn-msg-snd pn-timeout pn-silent pn-provider pn-prid pn-param
##
## Inter domain connections is a set of feature allowing to dynamically
## connect several Flexisip servers together in order to manage SIP
## routing at local and global scope. Let's suppose you have two
## SIP network a.example.net and b.example.net run privately and
## independently (no one from a.example.net needs to call someone
## at b.example.net). However, when people from a and b are outside
## of their network, they register to a worldwide available Flexisip
## instance running on 'global.example.net'. It is then possible
## to:
## * have calls made within a.example.net routed locally and sent
## to global.example.net in order to reach users inside and outside
## of a's network. Example: 1@a.example.net calls 2@a.example.net.
## If 2 is registered on a.example.net then the call is routed locally.
## On the contrary if 2 is absent and registered, the call is then
## sent to global.example.net and then routed by the global proxy.
## * when global.example.net receives a call from a user not within
## its native network (ex: 1@a.example.net calls 2@a.example.net),
## it can route this call to the proxy that is responsible for managing
## the local domain (a.example.net).
##
## This system is dynamic: the physical IP address of a and b network
## can change (dynamic ip address allocation)
## .This scenario is achieved with two key features:
## * a.example.net sends a REGISTER to global.example.net to indicate
## that it is the responsible for the entire domain a.example.net.
## The global.example.net authenticates this REGISTER thanks to TLS
## client certificate presented by a.example.net.
## * global.example.net is configured to accept this domain registration
## and route all calls it receives directly and destinated to a.example.net
## domain through the connection established by a.example.net during
## the domain registration.
##
[inter-domain-connections]
# Whether Flexisip shall accept registrations for entire domains
# Default: false
#accept-domain-registrations=false
# Whether Flexisip shall assume that there is a unique server per
# registered domain, which allows to clean old registrations and
# simplifies the routing logic.
# Default: false
#assume-unique-domains=false
# Path to a text file describing the domain registrations to make.
# This file must contains lines like:
# <local domain name> <SIP URI of proxy/registrar where to send
# the domain REGISTER> [password]>
# where:
# <local domain name> is a domain name managed locally by this
# proxy
# <SIP URI of proxy/registrar> is the SIP URI where the domain
# registration will be sent. The special uri parameter 'tls-certificates-dir'
# is understood in order to specify a TLS client certificate to
# present to the remote proxy.
# [password] is the password to use if the remote proxy/registrar
# requests a digest authentication. It is optional.
# If the file is absent or empty, no registrations are done.An
# example of such line is:
# belledonne.linphone.org <sips:sip.linphone.org;tls-certificates-dir=/etc/flexisip/client-cert>
# gghhiioozz
# Default: /etc/flexisip/domain-registrations.conf
#domain-registrations=/etc/flexisip/domain-registrations.conf
# When submitting a domain registration to a server over TLS, verify
# the certificate presented by the server. Disabling this option
# is only for test, because it is a security flaw
# Default: true
#verify-server-certs=true
# Interval in seconds for sending \r\n\r\n keepalives through the
# outgoing domain registration connection.A value of zero disables
# keepalives.
# Default: 30
#keepalive-interval=30
# Delay in milliseconds after which TCP/TLS connections will be
# considered as broken if no CRLF pong has beenreceived from the
# registrar. A delay of 0 means that no pong is expected after ping.
# The registrar must advertise the 'outbound' option tag in a Supported
# header for this detection to be active.
# Warning: This parameter must be strictly lower than “keepalive-interval”.
# Default: 0
#ping-pong-timeout-delay=0
# Delay in seconds before creating a new connection after connection
# is known as broken. Set '0' in order the connection be recreated
# immediately.
# Default: 5
#reconnection-delay=5
# Whether Flexisip shall only send a domain registration when a
# device is registered
# Default: false
#reg-when-needed=false
# Route received REGISTER request to the server in charge of the
# domain, according to accepted domain registrations. This option
# is intended to be used with 'reg-on-response' mode of Registrar
# module, and 'accept-domain-registrations' enabled too.The 'reg-on-response'
# mode typically allows Flexisip to forward an incoming REGISTER
# to an upstream server, and record the client's contact address
# upon receiving the 200 Ok response from the upstream server. When
# 'relay-reg-to-domains' is enabled, the routing to the upstream
# server is performed according to the domain registrations received
# previously by flexisip, instead of usual DNS-based procedures.
# Default: false
#relay-reg-to-domains=false
# regex to match domain names (host part of URL) for which the register
# requests should be routed to the upstream server.This option is
# intended to be used with 'relay-reg-to-domains' mode enabled.
# Default:
#relay-reg-to-domains-regex=
Ценники на вывоз мусора сейчас космос, любые лайфхаки по экономии в тему.
1xbet onlayn kazino platforması ilə vaxtınızı daha səmərəli və maraqlı keçirin. Saytın canlı kazino bölməsi istifadəçilərə fərqli bir dünya təklif edir. Burada canlı dilerli kazino oyunlarının hər bir növünü sınaqdan keçirə bilərsiniz. Krupyelərin peşəkarlığı oyunun dinamikasını və marağını artırır. Müntəzəm olaraq yenilənən oyun siyahısı cansıxıcılığa yol vermir. Hesabınızı artırmaq üçün onlarla fərqli və etibarlı üsul mövcuddur. Qazanılan pullar cəmi bir neçə dəqiqə ərzində şəxsi hesabınıza köçürülür. Aktiv fəaliyyətinizə görə fərdi bonuslar və hədiyyələr qazana bilərsiniz. Dəstək xidməti həm çat, həm də e-poçt vasitəsilə kömək göstərir. 1xbet ailəsinə qoşulun və böyük uduşlar üçün ilk addımı atın. onlayn kazino
我一直梦想, 看到你们相册那样的地方。真棒。
我喜欢, 这里分享真实经验。你的项目 就是 属于这里的。请继续。
我热爱这样的想法, 去那么多国家。真的很鼓舞。
能感受到热爱。继续保持 感受。
我关注这样的资源, 写得很实在。你的网站 就是 属于这里的。加油。
1
1
1