{"id":18939322,"url":"https://github.com/belledonnecommunications/flexisip","last_synced_at":"2025-04-12T18:52:36.600Z","repository":{"id":32641978,"uuid":"36228361","full_name":"BelledonneCommunications/flexisip","owner":"BelledonneCommunications","description":"Linphone.org mirror for flexisip (git://git.linphone.org/flexisip.git)","archived":false,"fork":false,"pushed_at":"2024-10-21T16:54:52.000Z","size":18077,"stargazers_count":149,"open_issues_count":157,"forks_count":73,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-10-22T06:04:35.068Z","etag":null,"topics":["linphone","server","sip","voip"],"latest_commit_sha":null,"homepage":"http://flexisip.org","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"harvesthq/chosen","license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BelledonneCommunications.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-05-25T11:50:26.000Z","updated_at":"2024-10-21T16:54:56.000Z","dependencies_parsed_at":"2023-10-12T18:57:24.352Z","dependency_job_id":"a8950a05-da53-4f81-9ff7-27615ec7cf11","html_url":"https://github.com/BelledonneCommunications/flexisip","commit_stats":null,"previous_names":[],"tags_count":59,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BelledonneCommunications%2Fflexisip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BelledonneCommunications%2Fflexisip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BelledonneCommunications%2Fflexisip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BelledonneCommunications%2Fflexisip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BelledonneCommunications","download_url":"https://codeload.github.com/BelledonneCommunications/flexisip/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248618243,"owners_count":21134200,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["linphone","server","sip","voip"],"created_at":"2024-11-08T12:17:08.402Z","updated_at":"2025-04-12T18:52:36.560Z","avatar_url":"https://github.com/BelledonneCommunications.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flexisip\n\nFlexisip is a comprehensive, modular and scalable SIP server suite written in C++17. It offers a wide range of\nfunctionalities, including:\n\n* **Proxy Server**: acts as a central hub for routing SIP messages.\n    * **Push Notification Service**: delivers SIP notifications (in-calls, messages) to mobile devices even when the app\n      is not actively running.\n* **Presence Server**: enables users to see the online status of others and their availability for calls.\n* **Conference Server**: enables group voice and video calls.\n* **Back-to-Back User Agent (B2BUA) Server**: enables caller identity translation, media-level transcoding and SIP\n  trunking.\n* **RegEvent Server**: notify tier domains of user registration\n\n## Deployment and Applications:\n\n* **Server-based VoIP Service**: Flexisip can be deployed on server machines to run a full-fledged SIP VoIP service.\n  This is exemplified by the free linphone.org service, which has been powered by Flexisip since 2011. Users can create\n  SIP accounts on this service to connect with each other.\n* **Embedded Solutions**: Flexisip can also be embedded and run seamlessly on smaller hardware systems, making it\n  suitable for various embedded applications.\n\n# License\n\nCopyright © Belledonne Communications\n\nFlexisip is dual licensed, and can be licensed and distributed:\n\n- under a GNU Affero GPLv3 license for free (see COPYING file for details)\n- under a proprietary license, for closed source projects. Contact Belledonne Communications for any question about\n  [costs and services](https://www.linphone.org/en/flexisip-sip-server/#flexisip-license).\n\n# Documentation\n\n- [Supported features and RFCs](https://www.linphone.org/en/flexisip-sip-server/#flexisip-software)\n- [Flexisip documentation](https://www.linphone.org/en/flexisip-sip-server/#flexisip-documentation)\n\n# Dependencies\n\n| Dependency      | Description                                                                                                                           | Mandatory | Enabled by default |\n|:----------------|:--------------------------------------------------------------------------------------------------------------------------------------|:---------:|:------------------:|\n| OpenSSL         | TLS stack.                                                                                                                            |     X     |                    |\n| LibNgHttp2      | HTTP2 stack.                                                                                                                          |     X     |                    |\n| libsrtp2        | Secure RTP (SRTP) and UST Reference Implementations                                                                                   |     X     |                    |\n| SQLite3         | Library for handling SQlite3 file                                                                                                     |     X     |                    |\n| libmysql-client | Client library for MySQL database.                                                                                                    |     X     |                    |\n| Hiredis         | Redis DB client library, used for Registrar DB and communications between Flexisip instances of a same cluster. (-DENABLE\\_REDIS=YES) |           |         X          |\n| NetSNMP         | SNMP library, used for SNMP support. (-DENABME\\_SNMP=YES)                                                                             |           |         X          |\n| XercesC         | XML parser. (-DENABLE\\_PRESENCE=YES)                                                                                                  |           |         X          |\n| jsoncpp         | JSON parsing and writing (-DENABLE\\_B2BUA=YES)                                                                                        |           |         X          |\n| cpp-jwt         | JSON Web Token support (-DENABLE\\_OPENID\\_CONNECT=YES)                                                                                        |           |         X          |\n\n# Compilation\n\n## Required build tools\n\n- C and C++ compiler. GCC and Clang are supported *as long as they are recent enough for building C++17 code*. On\n  Redhat/CentOS 7, we recommend installing gcc-7 from https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/ .\n  The default gcc-4.8 is not sufficient.\n- CMake \u003e= 3.13\n- make or Ninja\n- Python \u003e= 3\n- Doxygen\n- Git\n\n## Building Flexisip with CMake\n\nCreate a build directory and configure the project:\n\n### From cloned GIT repository\n\n```bash\nmkdir ./build\ncmake -S . -B ./build\nmake -C ./build -j\u003cnjobs\u003e\n```\n\n### Custom\nWhen built outside a git repository, you have to manually mention Flexisip and Linphone-SDK versions.\n\n```bash\nmkdir ./build\ncmake -S . -B ./build -DFLEXISIP_VERSION=\u003cversion\u003e -DLINPHONESDK_VERSION=\u003cversion\u003e\nmake -C ./build -j\u003cnjobs\u003e\n```\n\n### Some tips\n\nCheck *CMakeLists.txt* to know the list of the available options and their default value. To change an option, invoke\n*CMake* again and specify the option you need to change.\nFor instance, here is how to disable the presence server feature:\n\n```bash\ncmake ./build -DENABLE_PRESENCE=OFF\nmake -C ./build -j\u003cnjobs\u003e\n```\n\nYou may also use *ccmake* or *cmake-gui* utilities to interactively configure the project:\n\n```bash\nccmake ./build\nmake -C ./build -j\u003cnjobs\u003e\n```\n\n## Building RPM or DEB packages\n\nThis procedure will help you generate a unique RPM package containing Flexisip, all its dependencies and the\ncorresponding package for debug symbols.\nThe following options are relevant for packaging:\n\n| Option                 | Description                                                                |\n|:-----------------------|:---------------------------------------------------------------------------|\n| `CMAKE_INSTALL_PREFIX` | Prefix path where the package will install the files.                      |\n| `SYSCONF_INSTALL_DIR`  | Directory where Flexisip expects to find its default configuration.        |\n| `CMAKE_BUILD_TYPE`     | Set it to “RelWithDebInfo” to have debug symbols in the debuginfo package. |\n| `CPACK_GENERATOR`      | Package type: “RPM” or “DEB”.                                              |\n\n```bash\ncmake ./build -DCMAKE_INSTALL_PREFIX=/opt/belledonne-communications -DCMAKE_BUILD_TYPE=RelWithDebInfo -DSYSCONF_INSTALL_DIR=/etc -DCPACK_GENERATOR=RPM\nmake -C ./build -j\u003cnjobs\u003e package\n```\n\nPackages are now available in the `./build` directory.\n\n[More info on RPM packaging](./packaging/rpm/README.md)\n\n## Docker\n\nA docker image can be built from sources using the following command:\n\n```bash\ndocker build -t flexisip --build-arg='njobs=\u003cnjobs\u003e' -f docker/flex-from-src .\n```\n\n## Nix ❄️\n\nFlexisip can also be compiled with [Nix]. From the root of the repository, you can obtain a development shell using:\n\n```sh\nnix-shell\n```\n\nOr with Flakes enabled:\n\n```sh\nnix develop\n```\n\nNix makes it easier to have a reproducible development environment on any Linux distribution, and doesn't interfere with\nother installed tooling. It is just an additional, **optional** way to build flexisip.\n\n### Example build commands:\n\n```sh\nCC=gcc CXX=g++ BUILD_DIR_NAME=\"build\" cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -S . -B ./$BUILD_DIR_NAME -G \"Ninja\" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=\"$PWD/$BUILD_DIR_NAME/install\" -DENABLE_UNIT_TESTS=ON -DENABLE_STRICT_LINPHONESDK=OFF -DINTERNAL_JSONCPP=OFF\ncd build\nclear \u0026\u0026 cmake --build . --target install \u0026\u0026 LSAN_OPTIONS=\"suppressions=../sanitizer_ignore.txt\" bin/flexisip_tester --resource-dir \"../tester/\" --verbose\n```\n\n### Note to maintainers\n\nAt the exception to [`shell.nix`](./shell.nix), `.nix` files should live inside the [`nix/`](./nix/) folder.\n\nAll `.nix` files should be formatted with `nixpkgs-fmt`.\n\n[Nix]: https://nixos.org/\n\n# Configuration\n\nFlexisip needs a configuration file to run correctly.\nUse `./flexisip --dump-all-default \u003e flexisip.conf` to generate a documented default configuration file.\n\n# Developer notes\n\nWith sofia-sip, you can choose between `msg_dup()` and `msg_copy()`, `sip_from_dup()` and `sip_from_copy()`, _etc_.\nThe difference isn't well documented in the sofia-sip documentation, but it is important to understand that:\n\n- `*_dup()` makes a copy of the structure plus all included strings inside (deep copy).\n- `*_copy()` just makes a copy of the structure, not the strings pointed by it (shallow copy). **These functions are\n  dangerous**; use `*_dup()` versions in doubt.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbelledonnecommunications%2Fflexisip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbelledonnecommunications%2Fflexisip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbelledonnecommunications%2Fflexisip/lists"}