Commit 01497943 authored by Emmanuel Milou's avatar Emmanuel Milou

Clean up in the working directory

parent 2419fc6e
// AsciiDoc file
About
=====
SFLphone is meant to be a robust enterprise-class desktop phone. It is designed with a hundred-calls-a-day receptionist in mind. It can work for you, too.
SFLphone is released under the *GNU General Public License*.
SFLphone is being developed by the global community, and maintained by
http://www.savoirfairelinux.com[Savoir-faire Linux], a Montreal,
Quebec, Canada-based Linux consulting company.
// AsciiDoc file
Build notes
===========
sflphoned
---------
Instructions to build `sflphoned`:
TIP: Check out to fullfill the sflfile:Dependencies.txt[dependencies] first.
dbus-c++-bindings
~~~~~~~~~~~~~~~~~
Go to `libs/dbus` and run:
-------------------------
./autogen.sh
./configure --prefix=/usr
make
sudo make install
-------------------------
You can replace `--prefix=/usr` by whatever prefix you like. Make sure to
also change this value in the next steps.
NOTE: If you have `colorgcc`, configure will *fail* on `libeXpat`. Issue an `unset CC` and `unset CXX` to build the dbus bindings.
libiax2
~~~~~~~
Go to `libs/libiax2` and run:
-------------------------
./gen.sh
./configure --prefix=/usr
make
sudo make install
-------------------------
the daemon
~~~~~~~~~~
Then, go to the root of the repository, and run:
---------------------------------------------------
autoreconf --install
./configure --prefix=/usr
make
sudo make install
---------------------------------------------------
Run:
--------------------------------------
./configure --prefix=/usr --with-debug
--------------------------------------
to enable debug mode.
sflphone-qt
-----------
`sflphone-qt` is *deprecated* and can't be built anymore.
sflphone-gtk
------------
Compile `sflphone-gtk` by running:
-------------------------
cd sflphone-gtk
gnome-autogen.sh
./configure --prefix=/usr
make
sudo make install
-------------------------
Here again, run `./configure` with `--with-debug` to enable debugging mode.
NOTE: You may need to run `autoreconf --install` before the `configure` script.
You'll find `gnome-autogen.sh` in some `gnome-common`-like package of
your distribution. You can also replace it by a call to:
`autoreconf --install`.
// AsciiDoc file
Debugging techniques for SFLphone
---------------------------------
Listening protocol using `tcpdump`:
----------------------
----------------------
// AsciiDoc file
Dependencies to compile SFLphone daemon
---------------------------------------
`--------------------`----------`-----------------------------------------------------
Program Version Notes
--------------------------------------------------------------------------------------
libiax2 0.2.3 http://svncommunity.digium.com/view/libiax2/trunk/[svn repos] Source code included in the git repository.
Common C++2 1.3.21 http://sourceforge.net/projects/cplusplus/[website]
ccRTP 1.3.5 http://sourceforge.net/projects/cplusplus/[website]
libeXosip2 ** 2.2.2 http://savannah.nongnu.org/projects/exosip/[website]
libosip2 2.2.2 http://www.gnu.org/software/osip/[website]
libsamplerate 0.1.2 http://www.mega-nerd.com/SRC/[website]
libdbus-glib 0.73 Packaged with your favorite distribution.
dbus-c++-1 0.5 Source code included in the git repository. See Build notes.
libexpat1 1.95.8 Packaged with your favorite distribution.
libboost-dev 1.34.1
--------------------------------------------------------------------------------------
Dependencies to compile SFLphone-GTK
------------------------------------
`--------------------`----------`-----------------------------------------------------
Program Version Notes
--------------------------------------------------------------------------------------
libgtk2.0 2.2
gtkglext 1.0 Video branch. Integration OpenGL and GTK
dbus-glib 0.35
gnome-common
--------------------------------------------------------------------------------------
Dependencies to use audio codecs
--------------------------------
`--------------------`----------`-----------------------------------------------------
Program Version Notes
--------------------------------------------------------------------------------------
libgsm1-dev 1.0.10 Standard package - Necessary to use GSM codec
libspeex1-dev 1.1.12 Standard package - Necessary to use SPEEX codec
--------------------------------------------------------------------------------------
// AsciiDoc
Downloads
=========
Latest release:
[grid="all"]
`--------------------`----------`---------------------------
Package Type Link
------------------------------------------------------------
*SFLphone 0.7.2* Sources http://www.sflphone.org/releases/sflphone-0.7.2.tar.gz[Download] sflfile:Build.txt[Build notes]
FC6-RPM http://www.sflphone.org/releases/packages/rpm-fc6/sflphone-0.7.2-1.i386.rpm[Download]
RC6-SRPM http://www.sflphone.org/releases/packages/rpm-fc6/devel/sflphone-0.7.2-1.src.rpm[Download]
*SFLphone 0.7.0* Source http://www.sflphone.org/releases/sflphone-0.7.0.tar.gz[Download]
FC4-RPM http://www.sflphone.org/releases/packages/rpm-fc4/sflphone-0.7.0-1.i386.rpm[Download]
FC4-SRPM http://www.sflphone.org/releases/packages/rpm-fc4/devel/sflphone-0.7.0-1.src.rpm[Download]
------------------------------------------------------------
Latest source code
------------------
See the sflfile:Git_Access.txt[repository access] page for the latest source
code.
// [done], [not done], [not tested], etc.. are defined in asciidoc.conf
Features
========
SFLphone feature map
--------------------
* SIP features
- transfer: [done] and tested
- reinvite: [done] and tested
- play DTMF sipinfo: [done] and tested
- receive text message: [done] and tested with sipsak
- SFLphone to snom (asterisk): [done] and tested
- SFLphone to SFLphone (IP and no proxy): [done] and tested
- conference: [not done] yet
- send text message: [not done] yet
* IAX support: almost [done]
- place call: [done]
- transfer call: [done]
* Audio devices:
- OSS: [done] and tested (portaudio)
- ALSA: [done] and tested (portaudio)
- ALSA with dmix: [not tested]
- JACK: [partial], portaudio has problems to open it
- ASIO on windows: in portaudio, [not tested]
- on MacOSX: we can't use portaudio in 8kHz. libsamplerate was added to convert from 44,1kHz to 8kHz.
* Codecs:
- G711a/PCM: [done] and tested
- G711u: [done] and tested
- GSM: [done] and tested
- Speex codec 8khz: [not tested] but integrated
- ILBc: [notdone]
* Video support:
- video integration in SIP: [not done]
- video integration in IAX: [not done]
- integration in QT: not done
* Zeroconf:
- sflphone-d: partially
- sflphone-qt: not done
* SFLphone Client:
- QT3: done and tested on linux
- QT4: not tested
- GTK: not done
- Command Line Interface (in C): partially done
- Command Line Interface (in python): not done
* MacOSX port:
- compilation: done
- 44,1khz to 8khz conversion (with libsamplerate): not tested
* Windows port:
- compilation of sflphoned: not done
- compilation of sflphone-qt (qt3): not done
- compilation of sflphone-qt (qt4): not done
* Desktop Integration:
- firefox sip: handling: open sflphone, not integrated in install process
- konqueror sip: handling: open sflphone, not integrated in install process
- addressbook: open sflphone and call, not integrated in install process
- inter-process communication: [not done]
- tray icon: [not done]
- menu icon (.desktop): only in fedora rpm
- LDAP enterprise directory support: [not done]
* Packaging:
- Remove libeXosip2 from package: [not done]
- Remove portaudio final from package: [not done]
- Fedora Core 4 packages: [done]
- Suse 9.3 packages: [done]
- .tar.gz publication: [done]
- Debian packages: [not done]
- Suse 10 packages: [not done]
SFLphone-qt (linux)
-------------------
* audiodevice input/output selector: [not done]
* drag'n'drop over lcd screen: [done]
* paste with ctrl+v: [done]
* keyboard mapping: [partial], not completed
* keyboard shortcut: [partial], not completed
// AsciiDoc file
Git anonymous access
--------------------
To grab source code form SFLphone's git repository, run:
---------------------------------------------
git clone git://sflphone.org/git/sflphone.git
---------------------------------------------
which requires pass-through of *tcp port 9418*, or
----------------------------------------------
git clone http://sflphone.org/git/sflphone.git
----------------------------------------------
then
----------------------------------------------
cd sflphone
----------------------------------------------
View sflsite:build[build notes] for more details.
Git developer access
--------------------
Run:
--------------------------------------------------------------
ssh-keygen -C sflphone_org@sflphone.org
cat ~/.ssh/id_rsa.pub
--------------------------------------------------------------
and transmit us the content of the `id_rsa.pub` file, for shared-key
authentication. Then, if you already have a cloned repository, run:
--------------------------------------------------------------
git-config remote.origin.url git+ssh://sflphone_org@sflphone.org/git/sflphone.git
--------------------------------------------------------------
Otherwise, grab a new copy:
--------------------------------------------------------------
git clone git+ssh://sflphone_org@sflphone.org/git/sflphone.git
cd sflphone
autoreconf --install
--------------------------------------------------------------
// AsciiDoc file
Git developer access
--------------------
Run:
--------------------------------------------------------------
ssh-keygen -C sflphone_org@sflphone.org
cat ~/.ssh/id_rsa.pub
--------------------------------------------------------------
and transmit us the content of the `id_rsa.pub` file, for shared-key
authentication. Then, if you already have a cloned repository, run:
--------------------------------------------------------------
git-config remote.origin.url git+ssh://sflphone_org@sflphone.org/git/sflphone.git
--------------------------------------------------------------
Otherwise, grab a new copy:
--------------------------------------------------------------
git clone git+ssh://sflphone_org@sflphone.org/git/sflphone.git
cd sflphone
autoreconf --install
--------------------------------------------------------------
View sflsite:build[build notes] for more details.
//AsciiDoc file
Vision
------
SFLphone aims to provide an easy to use, feature full, standard compliant, VoIP software phone.
Goals for next release (0.8)
----------------------------
- Server side:
* Functional IAX transport
* Near perfect audio
* Multiple-client (GUI or other) connectivity to server
- New Gtk+ GUI with following functionality (although the server can do more):
* User can place a call
* User can answer a call
* User can transfer a call
* User can have an unlimited number of calls
* User can put a call on hold and off hold
* User is informed of waiting voice mail
* User can set up new SIP/IAX accounts
* User can edit current accounts
* User can delete accounts
* User can adjust speaker and microphone volume
* All instances of the UI must stay in sync.
Goals for release 0.8.5
-----------------------
- Server side:
* Perfect audio
* Better error handling of failed account registrations
* Fully working multiple account functionality
- Gtk+ GUI updates
* User can set up audio parameters
* User can set up STUN and proxy settings for SIP accounts
* User can choose a ringtone theme
* User can set up locale settings
* Desktop notification of events
* User can choose an account to place a call with
- Basic Python command-line client
* User can place a call
* User can answer calls
* User can send DTMF
* User can transfer a call
Goals for release 0.9
---------------------
- Server side:
* Contacts management (LDAP)
* Call history
* SMS sending
* Status (DND, Available, ...)
- Gtk+ GUI updates
* User can receive and send SMS messages
* User is informed of call duration
* User can set up speed call buttons
* User can consult/clear call history
* User can set a status
- Python CLI client
* Stable and mature code
* Extensible and configurable client
* User can put a call on hold and off hold
* User can adjust speaker and microphone volume
* User can script the client and integrate into other components
* CLI stays in sync with any other number of GUI/CLI/clients
// AsciiDoc file
IRC
===
Server:: `irc.freenode.org`
Channel:: `#sflphone`
// AsciiDoc file
Mailing lists
=============
sflphone-user
-------------
http://pouetpouet.list.com[subscribe] http://pouetpouet2.list.com[unsubscribe]
http://pouetpouet6.list.com[archives]
sflphone-devel
--------------
http://pouetpouet3.list.com[subscribe] http://pouetpouet4.list.com[unsubscribe]
http://pouetpouet5.list.com[archives]
// AsciiDoc file
News
====
January 2008:: Partnership with *Polytechnic School* of Montreal to implement video calls and video conference. Read sflsite:sflvideo[here].
December 2007:: Upcoming release 0.8.0. See the last sflsite:screenshots[].
September 2007:: A new Gtk+ client is being written, to play with the new D-BUS client/server interface.
//AsciiDoc file
Partnership
-----------
A partnership between Savoir-Faire Linux and the *Polytechnic school* of Montreal will begin in January 2008.
Five students from Polytechnic school will be working part-time on the project for a period of four months.
Goals
-----
- The technical goal of this partnership is to implement a video layer in SFLphone to allow *video calls* and *video conferencing*. It is an interesting challenge because videoconference is not much implemented in softphones yet. The first step consists in implementing peer-to-peer video calls.
- This is how the application should behave on a client side:
* The user opens a multimedia session with an other client (SIP protocol)
* Local video capture (video4linux2 driver) is compressed and shipped through RTP packets.
* In the same time, the incoming video stream (in RTP packets also) is decompressed and displayed.
* The visualization framework should be flexible and should allow user parametrization. 3D API OpenGL should be used.
// AsciiDoc file
Screenshots of upcoming releases
--------------------------------
This is an upcoming client, to be released with version 0.8.
.New SFLphone-GTK client (ver. 0.8)
sflimage::images/screenshots/sflphone_gtk_0.8.png[New SFLphone GTK client]
.New SFLphone-GTK client with the dialpad (ver. 0.8)
sflimage::images/screenshots/sflphoneDialpad_gtk_0.8.png[New SFLphone GTK client]
Historical screenshots
----------------------
.SFLphone 0.6.2 - Brushed metal skin
sflimage::images/screenshots/sflphone_qt3_0.6.2.png[SFLphone 0.6.2]
.SFLphone 0.6 - Alternate skin
sflimage::images/screenshots/sflphone_metal.png[SFLphone 0.6]
#
# Used in Features.txt
#
[replacements]
\[done\]\s*(.*)$=<span style="color: green">done \1<span>
\[not\s?done\]\s*(.*)$=<span style="color: red">not done \1<span>
\[partial\]\s*(.*)$=<span style="color: orange">partially done \1<span>
\[not\s?tested\]\s*(.*)$=<span style="color: orange">not tested \1<span>
#
# Used everywhere to link pages together. Refers to another
#
ifdef::backend-xhtml11[]
[sflfile-inlinemacro]
<a href="index.php?file={target}">{0?{0}}{0!{target}}</a>
[sflsite-inlinemacro]
<a href="index.php?mod={target}">{0?{0}}{0!{target}}</a>
endif::backend-xhtml11[]
#
# Image links (with "image:")
#
[sflimage-blockmacro]
<div class="image">
<a id="{id}"></a>
<div class="content">
<a class="image" href="{link#}">
<img src="index.php?img={target}" alt="{1={target}}"{1? title="{1}"}{width? width="{width}"}{height? height="{height}"}/>
{link#}</a>
</div>
<div class="image-title">{title}</div>
</div>
\ No newline at end of file
include/osip2/osip.h
type_t = INT
542 struct osip_event
543 {
544 type_t type; /**< Event Type */
545 int transactionid; /**< identifier of the related osip transaction */
546 osip_message_t *sip; /**< SIP message (optional) */
547 };
include/osipparser2/osip_message.h
52 /**
53 * Structure for SIP Message (REQUEST and RESPONSE).
54 * @struct osip_message
55 */
56 struct osip_message
57 {
58 char *sip_version; /**< SIP version (SIP request only) */
59 osip_uri_t *req_uri; /**< Request-Uri (SIP request only) */
60 char *sip_method; /**< METHOD (SIP request only) */
61
62 int status_code; /**< Status Code (SIP answer only) */
63 char *reason_phrase; /**< Reason Phrase (SIP answer only) */
64
65 osip_list_t *accepts; /**< Accept headers */
66 osip_list_t *accept_encodings; /**< Accept-Encoding headers */
67 osip_list_t *accept_languages; /**< Accept-Language headers */
68 osip_list_t *alert_infos; /**< Alert-Info headers */
69 osip_list_t *allows; /**< Allows headers */
70 osip_list_t *authentication_infos;/**< authentication_info headers */
71 osip_list_t *authorizations; /**< Authorizations headers */
72 osip_call_id_t *call_id; /**< Call-ID header */
73 osip_list_t *call_infos; /**< Call-Infos header */
74 osip_list_t *contacts; /**< Contacts headers */
75 osip_list_t *content_dispositions;/**< Content-Dispositions headers */
76 osip_list_t *content_encodings; /**< Content-Encodings headers */
77 osip_content_length_t *content_length; /**< Content-Length header */
78 osip_content_type_t *content_type; /**< Content-Type header */
79 osip_cseq_t *cseq; /**< CSeq header */
80 osip_list_t *error_infos; /**< Error-Info headers */
81 osip_from_t *from; /**< From header */
82 osip_mime_version_t *mime_version;/**< Mime-Version header */
83 osip_list_t *proxy_authenticates; /**< Proxy-Authenticate headers */
84 osip_list_t *proxy_authentication_infos; /**< P-Authentication-Info headers */
85 osip_list_t *proxy_authorizations;/**< Proxy-authorization headers */
86 osip_list_t *record_routes; /**< Record-Route headers */
87 osip_list_t *routes; /**< Route headers */
88 osip_to_t *to; /**< To header */
89 osip_list_t *vias; /**< Vias headers */
90 osip_list_t *www_authenticates; /**< WWW-Authenticate headers */
91
92 osip_list_t *headers; /**< Other headers */
93
94 osip_list_t *bodies; /**< List of attachements */
95
96 /*
97 1: structure and buffer "message" are identical.
98 2: buffer "message" is not up to date with the structure info (call osip_message_to_str to update it).
99 */
100 int message_property; /**@internal */
101 char *message; /**@internal */
102 size_t message_length; /**@internal */
103
104 void *application_data; /**can be used by upper layer*/
105 };
249 * @struct eXosip_event
250 */
251 struct eXosip_event
252 {
253 eXosip_event_type_t type; /**< type of the event */
254 char textinfo[256]; /**< text description of event */
255 void *external_reference; /**< external reference (for calls) */
256
257 osip_message_t *request; /**< request within current transaction */
258 osip_message_t *response; /**< last response within current transaction */
259 osip_message_t *ack; /**< ack within current transaction */
260
261 int tid; /**< unique id for transactions (to be used for answers) */
262 int did; /**< unique id for SIP dialogs */
263
264 int rid; /**< unique id for registration */
265 int cid; /**< unique id for SIP calls (but multiple dialogs!) */
266 int sid; /**< unique id for outgoing subscriptions */
267 int nid; /**< unique id for incoming subscriptions */
268
269 int ss_status; /**< current Subscription-State for subscription */
270 int ss_reason; /**< current Reason status for subscription */
271 };
opip_fifo_get retourne un void*
el = osip_list_get (ff->queue, 0);
typedef enum eXosip_event_type
{
/* REGISTER related events */
0 EXOSIP_REGISTRATION_NEW, /**< announce new registration. */
1 EXOSIP_REGISTRATION_SUCCESS, /**< user is successfully registred. */
2 EXOSIP_REGISTRATION_FAILURE, /**< user is not registred. */
3 EXOSIP_REGISTRATION_REFRESHED, /**< registration has been refreshed. */
4 EXOSIP_REGISTRATION_TERMINATED, /**< UA is not registred any more. */
/* INVITE related events within calls */
5 EXOSIP_CALL_INVITE, /**< announce a new call */
6 EXOSIP_CALL_REINVITE, /**< announce a new INVITE within call */
7 EXOSIP_CALL_NOANSWER, /**< announce no answer within the timeout */
8 EXOSIP_CALL_PROCEEDING, /**< announce processing by a remote app */
9 EXOSIP_CALL_RINGING, /**< announce ringback */
10 EXOSIP_CALL_ANSWERED, /**< announce start of call */
11 EXOSIP_CALL_REDIRECTED, /**< announce a redirection */
12 EXOSIP_CALL_REQUESTFAILURE, /**< announce a request failure */
13 EXOSIP_CALL_SERVERFAILURE, /**< announce a server failure */
14 EXOSIP_CALL_GLOBALFAILURE, /**< announce a global failure */
15 EXOSIP_CALL_ACK, /**< ACK received for 200ok to INVITE */
16 EXOSIP_CALL_CANCELLED, /**< announce that call has been cancelled */
17 EXOSIP_CALL_TIMEOUT, /**< announce that call has failed */
/* request related events within calls (except INVITE) */
18 EXOSIP_CALL_MESSAGE_NEW, /**< announce new incoming MESSAGE. */
19 EXOSIP_CALL_MESSAGE_PROCEEDING, /**< announce a 1xx for MESSAGE. */
20 EXOSIP_CALL_MESSAGE_ANSWERED, /**< announce a 200ok */
21 EXOSIP_CALL_MESSAGE_REDIRECTED, /**< announce a failure. */
22 EXOSIP_CALL_MESSAGE_REQUESTFAILURE, /**< announce a failure. */
23 EXOSIP_CALL_MESSAGE_SERVERFAILURE, /**< announce a failure. */
24 EXOSIP_CALL_MESSAGE_GLOBALFAILURE, /**< announce a failure. */
25 EXOSIP_CALL_CLOSED, /**< a BYE was received for this call */
/* for both UAS & UAC events */
26 EXOSIP_CALL_RELEASED, /**< call context is cleared. */
/* response received for request outside calls */
27 EXOSIP_MESSAGE_NEW, /**< announce new incoming MESSAGE. */
28 EXOSIP_MESSAGE_PROCEEDING, /**< announce a 1xx for MESSAGE. */
29 EXOSIP_MESSAGE_ANSWERED, /**< announce a 200ok */
30 EXOSIP_MESSAGE_REDIRECTED, /**< announce a failure. */
31 EXOSIP_MESSAGE_REQUESTFAILURE, /**< announce a failure. */
32 EXOSIP_MESSAGE_SERVERFAILURE, /**< announce a failure. */
33 EXOSIP_MESSAGE_GLOBALFAILURE, /**< announce a failure. */
/* Presence and Instant Messaging */
34 EXOSIP_SUBSCRIPTION_UPDATE, /**< announce incoming SUBSCRIBE. */
35 EXOSIP_SUBSCRIPTION_CLOSED, /**< announce end of subscription. */
36 EXOSIP_SUBSCRIPTION_NOANSWER, /**< announce no answer */
37 EXOSIP_SUBSCRIPTION_PROCEEDING, /**< announce a 1xx */
38 EXOSIP_SUBSCRIPTION_ANSWERED, /**< announce a 200ok */
39 EXOSIP_SUBSCRIPTION_REDIRECTED, /**< announce a redirection */
40 EXOSIP_SUBSCRIPTION_REQUESTFAILURE, /**< announce a request failure */
41 EXOSIP_SUBSCRIPTION_SERVERFAILURE, /**< announce a server failure */
42 EXOSIP_SUBSCRIPTION_GLOBALFAILURE, /**< announce a global failure */
43 EXOSIP_SUBSCRIPTION_NOTIFY, /**< announce new NOTIFY request */
44 EXOSIP_SUBSCRIPTION_RELEASED, /**< call context is cleared. */
45 EXOSIP_IN_SUBSCRIPTION_NEW, /**< announce new incoming SUBSCRIBE.*/
46 EXOSIP_IN_SUBSCRIPTION_RELEASED, /**< announce end of subscription. */
47 EXOSIP_EVENT_COUNT /**< MAX number of events */
} eXosip_event_type_t;