/flexisip

Linphone.org mirror for flexisip (git://git.linphone.org/flexisip.git)

Primary LanguageC++GNU Affero General Public License v3.0AGPL-3.0

Flexisip is general purpose SIP proxy with media capabilities.
It is released under the AGPLv3 or later. Please understand the terms of AGPLv3 in COPYING before deploying it.

Documentation
---------------------

You will find a comprehensive documentation on how to use Flexisip online 
here: https://wiki.linphone.org/wiki/index.php/Flexisip:start

Compilation
---------------------

Flexisip depends on the following required externals:
- oRTP
- sofia-sip library, 'bc' branch maintained by belledonne communications. 
  You can clone it from git://git.linphone.org/sofia-sip -b bc
- autotools, libtool (for compilation only)

It is recommended that you compile and install flexisip and the dependencies 
in a prefix, so that they don't interfere with legitimate versions installed 
in your system.

Optionally it also depends on:
- mediastreamer2 (use --disable-trancoder if not present)
- net-snmp
- odbc
- hiredis
- protobuf
- xsd (>= 4, for old OS on which this version isn't packaged, rpm and deb 
  are available here: http://www.codesynthesis.com/products/xsd/download.xhtml)
- pdflatex to generate the documentation in PDF format.
- xercesc3 

You can issue ./configure --help to specify these up.

cmake/Xcode under macosx
--------------

To compile, with cmake/Xcode, first update submodule using:
- git submodule update --init
- ./prepare.py -G Xcode flexisip \
	-DENABLE_REDIS=NO \
	-DENABLE_ODBC=NO \
	-DEP_sofiasip_CONFIGURE_OPTIONS=PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ 
- xcodebuild -project WORK/flexisip/cmake/Project.xcodeproj/ 
- open WORK/flexisip/Build/flexisip/flexisip.xcodeproj

Configuration
---------------------

Flexisip needs a configuration file for running correctly.
You can either:
- copy and modify file flexisip.conf.sample to flexisip.conf in directory <prefix>/etc/flexisip
- or issue `flexisip --dump-default all > flexisip.conf` in a terminal 
  to generate a configuration file with the default values.


ODBC
---------------------

ODBC allows you to use a database for authentication. 
Some tuning is possible to allow for better performances.

Enable pooling in odbc.ini and use a thread safe driver.
Use ODBCINI and ODBCSYSINI environement variable to override ini files location.
The connection string defined in authentication section of flexisip.conf may use
either a DSN or a DSN-less connection string.

Example odbc.ini file:
[myodbc3]
Driver       = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Description  = MySQL ODBC 3.51 Driver DSN
Server       = localhost
Port         =
User         = user
Password     = password
Database     = flexisip
Option       = 4
Socket       =


Developer notes:
---------------------

With sofia-sip, you have the choice between msg_dup and msg_copy,
sip_from_dup and sip_from_copy etc...
The difference isn't well documented in sofia-sip documentation.
However it is important to understand that
*_copy() just makes a copy of the structure, not the strings pointed by it
*_dup() makes a copy of structure plus all included strings inside.

*_copy() versions can be thus dangerous. Use *_dup() in doubt.