Scénario
1. Configuration
1.1 En entreprise
Contexte: l'entreprise utilise un serveur PBX (comme Asterisk) à l'interne et offre des comptes SIP à ses employés. Les employés se connectent avec une IP locale directement au serveur.
Configuration SFLPhone: Compte SIP avec:
- SIP Proxy: l'IP ou le nom de domaine du serveur asterisk. Par exemple: sip.mycompany.com
- Nom d'utilisateur: votre nom d'utilisateur asterisk (attribué par l'administrateur, le champ entre [])
- Authorization User: votre nom d'utilisateur asterisk (attribué par l'administrateur, soit le champ entre [] ou encore l'attribut username= s'il est spécifié)
- Password: votre mot de passe asterisk (attribué par l'administrateur)
- Auto-register: YES
- STUN/Use Stun: NO
- DTMF/Send DTMF as: SIP INFO
Configuration du compte dans Asterisk (/etc/asterisk/sip.conf):
[nomduuser] secret=motdepasse host=dynamic nat=no dtmfmode=info type=friend canreinvite=yes
Si vous regarder dans asterisk le résultat (après un sip reload), vous devriez voir:
*CLI> sip show users Username Secret Accountcode Def.Context ACL NAT nomduuser motdepasse default No RFC3581
1.2 À la maison (compte)
Contexte: un utilisateur utilise le serveur d'entreprise ou encore un service de téléphonie IP (comme le serveur de sipphone). L'utilisateur est connecté sur un réseau local (petit routeur) et n'a pas une IP publique. L'utilisateur est donc en arrière d'un NAT.
Configuration interne: avec proxy et avec STUN: yes.
Configuration du serveur asterisk: nat=yes
1.3 À la maison (sans compte)
Contexte: l'utilisateur est à la maison et veut communiquer avec une adresse SIP qui est impossible de rejoindre avec un serveur d'entreprise. L'utilisateur ne veut pas recevoir d'appel, mais seulement appeler un autre utilisateur. L'utilisateur est derrière un NAT (routeur d'un réseau local).
Configuration interne: sans proxy. STUN: yes
1.4 Pour faire des tests personnel
Contexte: un utilisateur veut tester SFLphone avec un client asterisk sur le même ordinateur ou sur un réseau local.
Configuration interne: avec proxy (ip locale du serveur asterisk, par exemple: 127.0.0.1 ou 192.168.0.2). STUN: no. Le nom d'utilisateur doit être le même que le nom entre [] dans le fichier de configuration d'asterisk.
Configuration du serveur asterisk: nat=no
Compiler SFLPhone
BASEPATH=~/program #1. common c++2 1.3.6 wget ftp://ftp.gnu.org/pub/gnu/commoncpp/commoncpp2-1.3.6.tar.gz tar xzvf commoncpp2-1.3.6.tar.gz cd commoncpp2-1.3.6 PROG_COMMONCPP2=$BASEPATH/commoncpp2 install -d $PROG_COMMONCPP2 ./configure --prefix=$PROG_COMMONCPP2 make #make check make install #beaucoup d'avertissement lors de la génération doxygen #changement root des nouvelles librairies su -c 'echo "$PROG_COMMONCPP2/lib" >> /etc/ld.so.conf' export PATH=$PATH:$PROG_COMMONCPP2/bin cd .. #2. ccrtp-1.3.0 wget ftp://ftp.gnu.org/pub/gnu/ccrtp/ccrtp-1.3.0.tar.gz tar xzvf ccrtp-1.3.0.tar.gz cd ccrtp-1.3.0 PROG_CCRTP=$BASEPATH/ccrtp install -d $PROG_CCRTP ./configure --prefix=$PROG_CCRTP make #make check make install su -c 'echo "$PROG_CCRTP/lib" >> /etc/ld.so.conf' export PATH=$PATH:$PROG_CCRTP/bin cd .. #3 libosip2 wget http://ftp.gnu.org/gnu/osip/libosip2-2.2.0.tar.gz tar xzvf libosip2-2.2.0.tar.gz cd libosip2-2.2.0 PROG_LIBOSIP2=$BASEPATH/libosip2 install -d $PROG_LIBOSIP2 ./configure --prefix=$PROG_LIBOSIP2 make #make check make install su -c 'echo "$PROG_LIBOSIP2/lib" >> /etc/ld.so.conf' su -c '/sbin/ldconfig' cd .. # libeXosip wget http://savannah.nongnu.org/download/exosip/libeXosip-0.9.0.tar.gz tar xzvf libeXosip-0.9.0.tar.gz cd libeXosip-0.9.0 PROG_LIBEXOSIP=$BASEPATH/libexosip install -d $PROG_LIBEXOSIP LDFLAGS="-L$PROG_LIBOSIP2/lib" CFLAGS="-DSHOW_MESSAGE -I$PROG_LIBOSIP2/include" ./configure --prefix=$PROG_LIBEXOSIP --disable-josua # # Attention, josua/jcalls.h à besoin de <mediastream.h> # # L'ajouter l'option '-fpermissive' au fichier josua/Makefile à la ligne CXXFLAGS = -g -O2 # ce qui donne la ligne: CXXFLAGS = -g -O2 -fpermissive # d'après http://forge.novell.com/pipermail/sflphone-dev/2005-January/000005.html # ne fonctionne pas # donc, j'ai disable la compilation de josua avec --disable-josua # selon http://www.atosc.org/pipermail/public/osip/2004-July/004199.html # make make install su -c 'echo "$PROG_LIBEXOSIP/lib" >> /etc/ld.so.conf' su -c '/sbin/ldconfig' export PATH=$PATH:$PROG_LIBEXOSIP/bin cd .. # SFLPhone wget http://forge.novell.com/modules/xfcontent/private.php/sflphone/0.3/sflphone-0.3.tar.gz tar xzvf sflphone-0.3.tar.gz cd sflphone-0.3 PROG_SFLPHONE=$BASEPATH/sflphone install -d $PROG_SFLPHONE # # Attention, il faut modifier le fichier ./configure pour # mettre les bon répertoire CCPPDIR, CCRTPDIR, OSIPDIR, EXOSIPDIR # $BASEPATH/nom_lib # # Il faut modifier la ligne # dir=`is_in_path include/ccrtp/rtp.h ${CLASSIC_DIRS}:$CCDIR -p` # par # dir=`is_in_path include/ccrtp/rtp.h ${CLASSIC_DIRS}:$CCRTPDIR -p` # ./configure -prefix $PROG_SFLPHONE # # Attention, il faut modifier la ligne du fichier src/Makefile # INCPATH = -I. -I$(QTDIR)/include -I$(CCPPDIR)/include/cc++2 -I$(CCRTPDIR)/include -I$(OSIPDIR)/include -I$(EXOPSIP)/include -I/usr/include -I../gsm # par # INCPATH = -I. -I$(QTDIR)/include -I$(CCPPDIR)/include/cc++2 -I$(CCRTPDIR)/include -I$(OSIPDIR)/include -I$(EXOSIPDIR)/include -I/usr/include -I../gsm # Pour les librairies qui ne sont pas dans le répertoire standart, j'ai aussi modifié la variable LIBS # LIBS=-L$(QTDIR)/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm -L/opt/lib -losip2 -leXosip -lccrtp1 -lasound `$(CCPPDIR)/bin/ccgnu2-config --flags --stdlibs` # par # LIBS=-L$(QTDIR)/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm -L/opt/lib -losip2 -leXosip -lccrtp1 -lasound -L$(CCRTPDIR)/lib -L$(OSIPDIR)/lib -L$(EXOSIPDIR)/lib -L$(CCPPDIR)/bin/ccgnu2-config --flags --stdlibs` make make install
Gaffes de compilation
J'avais oublié de recharger le cache de ldconfig pour la compilation de libeXosip et sflphone, donc j'avais fait des liens symboliques vers /usr/lib des librairies de libosip2. À ne pas faire... Il suffit de faire un /sbin/ldconfig en root pour arranger le tout et utiliser les includes dans les options de configuration (-I/path/of/lib) lors du processus de liaison (linking).
Si on s'en aperçoit après la compilation des .cpp, il faut faire un make clean, et refaire la compilation pour éviter des problèmes sérieux de dépendances.
De plus, je n'avais pas lu le README du logiciel sflphone avant de compiler eXosip, qui recommande d'enlever la compilation de josua. Mais au moins, je l'ai trouvé.
Compiler sflphone sur debian à partir du CVS
1. Obtenir les outils nécessaires (en root) # apt-get install libcommoncpp2-dev libccrtp-dev libxml2-dev libosip2-dev libexosip2-dev # apt-get install cvs ssh # apt-get install make autoconf automake1.9 pkg-config # apt-get install gcc g++ libstdc++6-4.0-dev Pour la partie QT NE PAS INSTALLER # apt-get install xorg-dev (mode texte) CAR IL DÉSINSTALLE GDM!!! # apt-get install libqt3-mt-dev 2. Obtenir le source avec cvs $ mkdir project && cd project $ export CVS_RSH=ssh $ cvs -z3 -d:ext:anonymous@forgecvs1.novell.com:/cvsroot/sflphone co sflphone 3. Compiler $ cd sflphone $ make -f Makefile.cvs $ ./configure (ou ./configure --enable-debug=full) 4. Batîr $ make 5. Essayer $ cd src $ ./sflphoned (dans un autre terminal) $ netcat 127.0.0.1 3999 version a getevents s stop me If you get: - configure: error: no acceptable C compiler found in $PATH # apt-get install gcc - checking for C compiler default output file name... configure: error: C compiler cannot create executables # apt-get install libstdc++6-4.0-dev - Apparently on your system our assumption sizeof size_t == sizeof unsigned long does not apply. # apt-get install g++ - *** The pkg-config script could not be found. Make sure it is *** in your path, or set the PKG_CONFIG environment variable *** to the full path to pkg-config. # apt-get install pkg-config - /usr/include/cc++2/cc++/pointer.h:55: error: invalid function declaration /usr/include/ccrtp/queuebase.h:158: error: expected ';' before '<' token /usr/include/ccrtp/queuebase.h: In member function 'ost::PayloadType ost::AppDat aUnit::getType() const': Modifier /usr/include/cc++2/cc++/pointer.h et ajouter les lignes avant le namespace #ifndef CCXX_MISSING_H_ #include <cc++/missing.h> #endif
Qui parle de sflphone?
Logiciel/Software...
- Novell: SFLPhone 0.4.1-Pre1 (now)
- Linux-Québec: SFLPhone IRC Channel
- voip-info.org: SFLPhone 0.3 (17 of June, 2005)
- Softpedia: SFLphone 0.3 (June 17th, 2005)
- KDE-apps: SFLPhone 0.3 (cyrlleberaud 02 Jun 05)
- SineApps (mac-asterisk): SFLPhone 0.3 (Jérôme Oufella, 2005-05-31)
- StarGeek : SFLPhone 0.3 (2005-05-04)
- E-rezo: SFLPhone 0.3 (2005-04-11)
- LinuxFr: SFLphone 0.3 est arrivé (09 avril 2005 par Jérôme Oufella)
- Dicodunet : SFLphone 0.3 est arrivée (DLFP, 2005-04-09)
- Nattor: SFLphone 0.3 (8 avril 2005)
- Freshmeat: SFLphone 0.3 (April 06th, 2005)
- SIPX-Wiki: Howto Configure SFLphone with sipX (6 mar 2005)
- Salon Stratégies communications-marketings: SFLPhone 0.2 (2005-03-22)
- LogicieLibre.Net: SFLPhone 0.1 (31-01-2005)
- Linux Today, Release Digest:KDE : SFLPhone 0.2 (2005-01-26)
Individus/Individuals...
- Mon stage chez Savoir-Faire Linux (Yan Morin, 2005-08-28)
- Tummy.com, A review of Linux-based SIP Phones: SFLPhone 0.4 (Sean Reifschneider, August 28, 2005)
- Day to day documentation (Yan Morin, 2005-08-27)
- wormulon.net: SFLPhone 0.4 (August 10, 2005)
- Mac OS X Hints Community: SFLPhone 0.1 (01.08.2005)
- GnomeMeeting-devel-list: SFLPhone 0.3 (Colin Guthrie, 08 Jul 2005)
- : SFLPhone 0.3 (Tundmatu Sõdur, 7th juuli, 2005)
- The Tao of Mac - SIP/Clients: SFLPhone 0.3 (Rui Carmo, 2005-07-01)
- SIP Phone : SFLPhone 0.3 (ralfk, 01 Jul, 2005)
- Installation personnalisée de SFLPhone 0.3 (Yan Morin, 2005-06-11)
- debian-user-french mailing list: SFLPhone 0.3 (Guillaume BRAS, 2005-05-20)
- Tech-pkg mailing list: SFLPhone 0.2 (John Nemeth, 2005-03-12)
- Polito.it: SFLphone 0.2 (FORNO FABIO, Feb 23, 2005)
- VoIP: SFLPhone 0.2 (David-Web, 10th February 2005)
- One Point Zero : SFLPhone 0.2 (2005-01-15)
- CommonC++ Mailing list (David Sugar, 31 Jan 2005)
- Asterisk VOIP News: SFLPhone 0.3 (Jérôme Oufella, 2005-05-01)
- [Asterisk-Users] Linphone / Kphone / lipz4: SFLPhone 0.2 (Klemens Kasemaa, Feb 15 2005)
- Blog: SFLphone Open Source SIP 0.1 (Tom Keating's VoIP Blog, January 12, 2005)
- [VOIP] SFLphone (Ende der Vernunft - EDV)
- A Mozilla-based Universal SIP Client (zap, croczilla)