mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-12 22:09:25 +08:00
60515d893a031bc420ad5752dbcd34e99d0dd717

Update libupnp to version 1.8.4. For windows, the IPV6 preprocessor must be undefined. Or else libupnp won't initialize. Added visual studio 2017 support via one patch for windows that also combines previous windows patches. UPnPController: Class that the jami classes use to control the opening and closing of ports. Every service has it's own upnp controller. The controller does it's actions by using the upnp context class. Also refactored the functions used to add mappings. Instead of using two different functions with different types of parameters, we now use one function with parameters that have default values. The logic stays the same but the function call is more clear. UPnPContext: Class that holds a (linked) list of discovered IGDs and their corresponding protocols (which discovered them). Whenever the controller wants to add or remove a mapping, the context picks a valid IGD in it's list and uses the correct protocol to complete the required action. This class also has the ability to swap protocols for an IGD that was discovered by more then one protocol. UPnPProtocol: Virtual base class that defines the functions needed by the context to use the corresponding protocol. PUPnP: UPnPProtocol derived class that represents a upnp client that uses the portable upnp library (libupnp). Every time the client discovers a new IGD it uses a callback to add it to the context's main IGD linked list. It also has an internal list of IGDs that it discovered. Added features to this class include: - IGD event subscription. - Use UpnpInit2 function instead of deprecated UpnpInit function. It's also supposed to support IPv6. NatPmp: UPnPProtocol derived class that represents a upnp client that uses the NAT-PMP library (libnatpmp). Unlike libupnp, libnatpmp only supports discovering one IGD. Also uses callbacks to add the IGD it finds to the context's main IGD class. Also inclided debug warning prints whenever a controller opens and closes the ports. That way we can keep track of whenever the application opens and closes ports on the internet gateway device. Gitlab: #96 Change-Id: I199271edac2c6d93dc60c24e2e2aefe36de7950c
COPYRIGHT NOTICE Copyright (C) 2004-2019 Savoir-faire Linux Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Introduction ------------ GNU Ring is a Voice-over-IP software phone. We want it to be: - user friendly (fast, sleek, easy to learn interface) - professional grade (transfers, holds, optimal audio quality) - compatible with Asterisk (using SIP account) - decentralized call (P2P-DHT) - customizable As the SIP/audio daemon and the user interface are separate processes, it is easy to provide different user interfaces. GNU Ring comes with various graphical user interfaces and even scripts to control the daemon from the shell. GNU Ring is currently used by the support team of Savoir-faire Linux Inc. More information is available on the project homepage: https://www.jami.net/ This source tree contains the daemon application only, DRing, that handles the business logic of GNU Ring. UIs are located in differents repositories. See the Contributing section for more information. Short description of content of source tree ------------------------------------------- - src/ is the core of DRing. - bin/ contains applications main code. - bin/dbus, the D-Bus XML interfaces, and C++ bindings - bin/restcpp, the C++ REST API implemented with Restbed About Savoir-faire Linux ------------------------ Savoir-faire Linux is a consulting company based in Montreal, Quebec. For more information, please check out our website: https://www.savoirfairelinux.com/ How to compile on Linux ----------------------- 1) Compile the dependencies first cd contrib mkdir native cd native ../bootstrap make 2) Then the dring application cd ../../ ./autogen.sh ./configure make make install Done ! More details available here: https://git.jami.net/savoirfairelinux/ring-project/wikis/technical/Build-instructions How to compile on OSX --------------------- # These first steps are only necessary if you don't use a package manager. cd extras/tools ./bootstrap make export PATH=$PATH:/location/of/ring/daemon/extras/tools/build/bin # Or, use your favorite package manager to install the necessary tools (macports or brew). automake, pkg-config, libtool, gettext, yasm # Compile the dependencies cd contrib mkdir native cd native ../bootstrap make -j # Then the daemon cd ../../ ./autogen.sh ./configure --without-dbus --prefix=<install_path> make If you want to link against libringclient and native client easiest way is to add to ./configure: --prefix=<prefix_path> Do a little dance! Common Issues ------------- autopoint not found: When using Homebrew, autopoint is not found even when gettext is installed, because symlinks are not created. Run: 'brew link --force gettext' to fix it. Clang compatibility (developers only) ------------------------------------- It is possible to compile dring with Clang by setting CC and CXX variables to 'clang' and 'clang++' respectively when calling ./configure. Currently it is not possible to use the DBus interface mechanism, and the interaction between daemon and client will not work; for each platform where D-Bus is not available the client should implement all the methods in the *_stub.cpp files. How to compile with the REST API -------------------------------- GNU Ring offers two REST API. One written in C++, and the other written in Cython. Up to this date, only the C++ API is available. The Cython API will soon follow. To compile Ring-daemon with the C++ REST API, follow these two steps : 1) Compile the dependencies cd contrib mkdir native cd native ../bootstrap make make .restbed 2) Then compile the daemon cd ../../ ./autogen.sh ./configure --without-dbus --with-restcpp make SIP accounts --------------------- You may register an existing SIP account through the account wizard in both clients (KDE and GNOME). By doing this, you will be able to call other accounts known to this server. Contributing to GNU Ring ------------------------ Of course we love patches. And contributions. And spring rolls. Development website / Bug Tracker: - https://git.jami.net/savoirfairelinux/ring-project Repositories are hosted on Gerrit, which we use for code review. It also contains the client subprojects: - https://gerrit-ring.savoirfairelinux.com/#/admin/projects/ Do not hesitate to join us and post comments, suggestions, questions and general feedback on the GNU Ring mailing-list: https://lists.gnu.org/mailman/listinfo/ring IRC (on #freenode): - #ring -- The GNU Ring Team
Description
Languages
C++
85.3%
SWIG
2.6%
Python
2.6%
Makefile
2.1%
CMake
1.7%
Other
5.5%