remove the document afb-daemon.{md,html}
authorJosé Bollo <jose.bollo@iot.bzh>
Mon, 30 May 2016 12:50:15 +0000 (14:50 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Mon, 30 May 2016 12:50:15 +0000 (14:50 +0200)
Change-Id: I6877be36cbc4e4125d7cdf658807aee98de4c82a
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
doc/afb-application-writing.html
doc/afb-application-writing.md
doc/afb-daemon.html [deleted file]
doc/afb-daemon.md [deleted file]
doc/afb-overview.html
doc/afb-overview.md

index 7c0278d..f1e8990 100644 (file)
@@ -15,21 +15,28 @@ Author:  José Bollo
 <p><ul>
  <li><a href="#HOWTO.WRITE.an.APPLICATION.above.AGL.FRAMEWORK">HOWTO WRITE an APPLICATION above AGL FRAMEWORK</a>
  <ul>
 <p><ul>
  <li><a href="#HOWTO.WRITE.an.APPLICATION.above.AGL.FRAMEWORK">HOWTO WRITE an APPLICATION above AGL FRAMEWORK</a>
  <ul>
-  <li><a href="#Writing.an.HTML5.application">Writing an HTML5 application</a></li>
-  <li><a href="#Writing.a.Qt.application">Writing a Qt application</a></li>
-  <li><a href="#Writing.a.C.application">Writing a C application</a></li>
+  <li><a href="#Languages.for.writing.Applications">Languages for writing Applications</a>
+  <ul>
+   <li><a href="#Writing.an.HTML5.application">Writing an HTML5 application</a></li>
+   <li><a href="#Writing.a.Qt.application">Writing a Qt application</a></li>
+   <li><a href="#Writing.a.C.application">Writing a C application</a></li>
+  </ul>
+  </li>
   <li><a href="#Handling.sessions.within.applications">Handling sessions within applications</a>
   <ul>
   <li><a href="#Handling.sessions.within.applications">Handling sessions within applications</a>
   <ul>
-   <li><a href="#Exchanging.tokens">Exchanging tokens</a></li>
    <li><a href="#Handling.sessions">Handling sessions</a></li>
    <li><a href="#Handling.sessions">Handling sessions</a></li>
+   <li><a href="#Exchanging.tokens">Exchanging tokens</a></li>
   </ul>
   </li>
  </ul>
  </li>
 </ul></p>
 
   </ul>
   </li>
  </ul>
  </li>
 </ul></p>
 
+<a name="Languages.for.writing.Applications"></a>
+<h2>Languages for writing Applications</h2>
+
 <a name="Writing.an.HTML5.application"></a>
 <a name="Writing.an.HTML5.application"></a>
-<h2>Writing an HTML5 application</h2>
+<h3>Writing an HTML5 application</h3>
 
 <p>Developpers of HTML5 applications (client side) can easyly create
 applications for AGL framework using their prefered
 
 <p>Developpers of HTML5 applications (client side) can easyly create
 applications for AGL framework using their prefered
@@ -51,7 +58,7 @@ with the current x-afb-json1 protocol.</p>
 
 
 <a name="Writing.a.Qt.application"></a>
 
 
 <a name="Writing.a.Qt.application"></a>
-<h2>Writing a Qt application</h2>
+<h3>Writing a Qt application</h3>
 
 <p>Writing Qt applications is also possible because Qt offers APIs to
 make HTTP queries and to connect using WebSockets.</p>
 
 <p>Writing Qt applications is also possible because Qt offers APIs to
 make HTTP queries and to connect using WebSockets.</p>
@@ -66,7 +73,7 @@ a simple &ldquo;hello world&rdquo; application in QML</li>
 
 
 <a name="Writing.a.C.application"></a>
 
 
 <a name="Writing.a.C.application"></a>
-<h2>Writing a C application</h2>
+<h3>Writing a C application</h3>
 
 <p>C applications can use the binder afb-daemon through a websocket connection.</p>
 
 
 <p>C applications can use the binder afb-daemon through a websocket connection.</p>
 
@@ -85,8 +92,8 @@ and being less dependant of libsystemd.</p>
 <a name="Handling.sessions.within.applications"></a>
 <h2>Handling sessions within applications</h2>
 
 <a name="Handling.sessions.within.applications"></a>
 <h2>Handling sessions within applications</h2>
 
-<a name="Exchanging.tokens"></a>
-<h3>Exchanging tokens</h3>
+<p>Applications must be aware of the the features session and token
+when they interact with the binder afb-daemon.</p>
 
 <p>Applications are communicating with their binder afb-daemon using
 a network connection or a kind of network connection (unix domain
 
 <p>Applications are communicating with their binder afb-daemon using
 a network connection or a kind of network connection (unix domain
@@ -95,12 +102,25 @@ Also, HTTP protocol is not a connected protocol. It means that
 the socket connection can not be used to authenticate a client.</p>
 
 <p>For this reason, the binder should authenticate the application
 the socket connection can not be used to authenticate a client.</p>
 
 <p>For this reason, the binder should authenticate the application
-by using a commonly shared secret named token.</p>
-
-<p>At start, the framework communicate a common secret to both the binder
-and its client: the application. When the application</p>
+by using a commonly shared secret named token and the identification
+of the client named session.</p>
 
 <a name="Handling.sessions"></a>
 <h3>Handling sessions</h3>
 
 <a name="Handling.sessions"></a>
 <h3>Handling sessions</h3>
+
+<p>Plugins and features of the binder need to keep track of the client
+instances. In principle, a binder afb-daemon is launched by application
+instance. But for services, a binder</p>
+
+<a name="Exchanging.tokens"></a>
+<h3>Exchanging tokens</h3>
+
+<p>At start, the framework communicate a common secret to both the binder
+and its client: the application. This initial secret is the
+initial token.</p>
+
+<p>For each of its client application, the binder manages a current active
+token. The initial token is the default active token. It is the expected
+token for new clients.</p>
 </body>
 </html>
 </body>
 </html>
index 7d2cd63..ead31a9 100644 (file)
@@ -6,8 +6,10 @@ HOWTO WRITE an APPLICATION above AGL FRAMEWORK
 
 TABLE-OF-CONTENT-HERE
 
 
 TABLE-OF-CONTENT-HERE
 
-Writing an HTML5 application
-----------------------------
+Languages for writing Applications
+----------------------------------
+
+### Writing an HTML5 application
 
 Developpers of HTML5 applications (client side) can easyly create
 applications for AGL framework using their prefered
 
 Developpers of HTML5 applications (client side) can easyly create
 applications for AGL framework using their prefered
@@ -26,8 +28,7 @@ Two examples of HTML5 applications are given:
 
 - [afm-client](https://github.com/iotbzh/afm-client) a simple "Home screen" application
 
 
 - [afm-client](https://github.com/iotbzh/afm-client) a simple "Home screen" application
 
-Writing a Qt application
-------------------------
+### Writing a Qt application
 
 Writing Qt applications is also possible because Qt offers APIs to
 make HTTP queries and to connect using WebSockets.
 
 Writing Qt applications is also possible because Qt offers APIs to
 make HTTP queries and to connect using WebSockets.
@@ -38,8 +39,7 @@ It is demontrated by the sample application token-websock:
 - [token-websock](https://github.com/iotbzh/afb-daemon/blob/master/test/token-websock.qml) 
 a simple "hello world" application in QML
 
 - [token-websock](https://github.com/iotbzh/afb-daemon/blob/master/test/token-websock.qml) 
 a simple "hello world" application in QML
 
-Writing a C application
------------------------
+### Writing a C application
 
 C applications can use the binder afb-daemon through a websocket connection.
 
 
 C applications can use the binder afb-daemon through a websocket connection.
 
@@ -58,7 +58,8 @@ and being less dependant of libsystemd.
 Handling sessions within applications
 -------------------------------------
 
 Handling sessions within applications
 -------------------------------------
 
-### Exchanging tokens
+Applications must be aware of the the features session and token
+when they interact with the binder afb-daemon.
 
 Applications are communicating with their binder afb-daemon using
 a network connection or a kind of network connection (unix domain
 
 Applications are communicating with their binder afb-daemon using
 a network connection or a kind of network connection (unix domain
@@ -67,11 +68,24 @@ Also, HTTP protocol is not a connected protocol. It means that
 the socket connection can not be used to authenticate a client.
 
 For this reason, the binder should authenticate the application
 the socket connection can not be used to authenticate a client.
 
 For this reason, the binder should authenticate the application
-by using a commonly shared secret named token.
+by using a commonly shared secret named token and the identification
+of the client named session.
+
+### Handling sessions
+
+Plugins and features of the binder need to keep track of the client
+instances. In principle, a binder afb-daemon is launched by application
+instance. But for services, a binder 
+
+### Exchanging tokens
 
 At start, the framework communicate a common secret to both the binder
 
 At start, the framework communicate a common secret to both the binder
-and its client: the application. When the application 
+and its client: the application. This initial secret is the
+initial token.
+
+For each of its client application, the binder manages a current active
+token. The initial token is the default active token. It is the expected
+token for new clients.
 
 
-### Handling sessions
 
 
 
 
diff --git a/doc/afb-daemon.html b/doc/afb-daemon.html
deleted file mode 100644 (file)
index 85b2498..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-<html>
-<head>
-  <link rel="stylesheet" type="text/css" href="doc.css">
-  <meta charset="UTF-8">
-</head>
-<body>
-<a name="The.binder.AFB-DAEMON"></a>
-<h1>The binder AFB-DAEMON</h1>
-
-<pre><code>version: 1
-Date:    30 mai 2016
-Author:  José Bollo
-</code></pre>
-
-<p><ul>
- <li><a href="#The.binder.AFB-DAEMON">The binder AFB-DAEMON</a>
- <ul>
-  <li><a href="#Launching.the.binder.afb-daemon">Launching the binder afb-daemon</a></li>
-  <li><a href="#Working.with.afb-daemon">Working with afb-daemon</a></li>
-  <li><a href="#Future.of.afb-daemon">Future of afb-daemon</a></li>
- </ul>
- </li>
-</ul></p>
-
-<a name="Launching.the.binder.afb-daemon"></a>
-<h2>Launching the binder afb-daemon</h2>
-
-<p>The launch options for binder <strong>afb-daemon</strong> are:</p>
-
-<pre><code>  --help
-
-        Prints help with available options
-
-  --version
-
-        Display version and copyright
-
-  --verbose
-
-        Increases the verbosity, can be repeated
-
-  --port=xxxx
-
-        HTTP listening TCP port  [default 1234]
-
-  --rootdir=xxxx
-
-        HTTP Root Directory [default $AFBDIR or else $HOME/.AFB]
-
-  --rootbase=xxxx
-
-        Angular Base Root URL [default /opa]
-
-        This is used for any application of kind OPA (one page application).
-        When set, any missing document whose url has the form /opa/zzz
-        is translated to /opa/#!zzz
-
-  --rootapi=xxxx
-
-        HTML Root API URL [default /api]
-
-        The plugins are available within that url.
-
-  --alias=xxxx
-
-        Maps a path located anywhere in the file system to the
-        a subdirectory. The syntax for mapping a PATH to the
-        subdirectory NAME is: --alias=/NAME:PATH.
-
-        Example: --alias=/icons:/usr/share/icons maps the
-        content of /usr/share/icons within the subpath /icons.
-
-        This option can be repeated.
-
-  --apitimeout=xxxx
-
-        Plugin API timeout in seconds [default 20]
-
-        Defines how many seconds maximum a method is allowed to run.
-        0 means no limit.
-
-  --cntxtimeout=xxxx
-
-        Client Session Timeout in seconds [default 3600]
-
-  --cache-eol=xxxx
-
-        Client cache end of live [default 100000 that is 27,7 hours]
-
-  --sessiondir=xxxx
-
-        Sessions file path [default rootdir/sessions]
-
-  --ldpaths=xxxx
-
-        Load Plugins from given paths separated by colons
-        as for dir1:dir2:plugin1.so:... [default = $libdir/afb]
-
-        You can mix path to directories and to plugins.
-        The sub-directories of the given directories are searched
-        recursively.
-
-        The plugins are the files terminated by '.so' (the extension
-        so denotes shared object) that contain the public entry symbol.
-
-  --plugin=xxxx
-
-        Load the plugin of given path.
-
-  --token=xxxx
-
-        Initial Secret token to authenticate.
-
-        If not set, no client can authenticate.
-
-        If set to the empty string, then any initial token is accepted.
-
-  --mode=xxxx
-
-        Set the mode: either local, remote or global.
-
-        The mode indicate if the application is run locally on the host
-        or remotely through network.
-
-  --readyfd=xxxx
-
-        Set the #fd to signal when ready
-
-        If set, the binder afb-daemon will write "READY=1\n" on the file
-        descriptor whose number if given (/proc/self/fd/xxx).
-
-  --dbus-client=xxxx
-
-        Transparent binding to a binder afb-daemon service through dbus.
-
-        It creates an API of name xxxx that is implemented remotely
-        and queried via DBUS.
-
-  --dbus-server=xxxx
-
-        Provides a binder afb-daemon service through dbus.
-
-        The name xxxx must be the name of an API defined by a plugin.
-        This API is exported through DBUS.
-
-  --foreground
-
-        Get all in foreground mode (default)
-
-  --daemon
-
-        Get all in background mode
-</code></pre>
-
-<a name="Working.with.afb-daemon"></a>
-<h2>Working with afb-daemon</h2>
-
-<a name="Future.of.afb-daemon"></a>
-<h2>Future of afb-daemon</h2>
-
-<ul>
-<li><p>Integration of the protocol JSON-RPC for the websockets.</p></li>
-<li><p>The binder afb-daemon would launch the applications directly.</p></li>
-<li><p>The current setting of mode (local/remote/global) might be reworked to a
-mechanism for querying configuration variables.</p></li>
-<li><p>Implements &ldquo;one-shot&rdquo; initial token. It means that after its first
-authenticated use, the initial token is removed and no client can connect
-anymore.</p></li>
-</ul>
-</body>
-</html>
diff --git a/doc/afb-daemon.md b/doc/afb-daemon.md
deleted file mode 100644 (file)
index 72d5eac..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-The binder AFB-DAEMON
-=====================
-    version: 1
-    Date:    30 mai 2016
-    Author:  José Bollo
-
-TABLE-OF-CONTENT-HERE
-
-Launching the binder afb-daemon
--------------------------------
-
-The launch options for binder **afb-daemon** are:
-
-         --help
-
-               Prints help with available options
-
-         --version
-
-               Display version and copyright
-
-         --verbose
-
-               Increases the verbosity, can be repeated
-
-         --port=xxxx
-
-               HTTP listening TCP port  [default 1234]
-
-         --rootdir=xxxx
-
-               HTTP Root Directory [default $AFBDIR or else $HOME/.AFB]
-
-         --rootbase=xxxx
-
-               Angular Base Root URL [default /opa]
-
-               This is used for any application of kind OPA (one page application).
-               When set, any missing document whose url has the form /opa/zzz
-               is translated to /opa/#!zzz
-
-         --rootapi=xxxx
-
-               HTML Root API URL [default /api]
-
-               The plugins are available within that url.
-
-         --alias=xxxx
-
-               Maps a path located anywhere in the file system to the
-               a subdirectory. The syntax for mapping a PATH to the
-               subdirectory NAME is: --alias=/NAME:PATH.
-
-               Example: --alias=/icons:/usr/share/icons maps the
-               content of /usr/share/icons within the subpath /icons.
-
-               This option can be repeated.
-
-         --apitimeout=xxxx
-
-               Plugin API timeout in seconds [default 20]
-
-               Defines how many seconds maximum a method is allowed to run.
-               0 means no limit.
-
-         --cntxtimeout=xxxx
-
-               Client Session Timeout in seconds [default 3600]
-
-         --cache-eol=xxxx
-
-               Client cache end of live [default 100000 that is 27,7 hours]
-
-         --sessiondir=xxxx
-
-               Sessions file path [default rootdir/sessions]
-
-         --ldpaths=xxxx
-
-               Load Plugins from given paths separated by colons
-               as for dir1:dir2:plugin1.so:... [default = $libdir/afb]
-
-               You can mix path to directories and to plugins.
-               The sub-directories of the given directories are searched
-               recursively.
-
-               The plugins are the files terminated by '.so' (the extension
-               so denotes shared object) that contain the public entry symbol.
-
-         --plugin=xxxx
-
-               Load the plugin of given path.
-
-         --token=xxxx
-
-               Initial Secret token to authenticate.
-
-               If not set, no client can authenticate.
-
-               If set to the empty string, then any initial token is accepted.
-
-         --mode=xxxx
-
-               Set the mode: either local, remote or global.
-
-               The mode indicate if the application is run locally on the host
-               or remotely through network.
-
-         --readyfd=xxxx
-
-               Set the #fd to signal when ready
-
-               If set, the binder afb-daemon will write "READY=1\n" on the file
-               descriptor whose number if given (/proc/self/fd/xxx).
-
-         --dbus-client=xxxx
-
-               Transparent binding to a binder afb-daemon service through dbus.
-
-               It creates an API of name xxxx that is implemented remotely
-               and queried via DBUS.
-
-         --dbus-server=xxxx
-
-               Provides a binder afb-daemon service through dbus.
-
-               The name xxxx must be the name of an API defined by a plugin.
-               This API is exported through DBUS.
-
-         --foreground
-
-               Get all in foreground mode (default)
-
-         --daemon
-
-               Get all in background mode
-
-
-Working with afb-daemon
------------------------
-
-
-
-Future of afb-daemon
---------------------
-
-- Integration of the protocol JSON-RPC for the websockets.
-
-- The binder afb-daemon would launch the applications directly.
-
-- The current setting of mode (local/remote/global) might be reworked to a
-mechanism for querying configuration variables.
-
-- Implements "one-shot" initial token. It means that after its first
-authenticated use, the initial token is removed and no client can connect
-anymore.
-
-
index cfb5de7..8e03ff1 100644 (file)
@@ -24,6 +24,8 @@ Author:  José Bollo
   </ul>
   </li>
   <li><a href="#The.plugins.of.the.binder.afb-daemon">The plugins of the binder afb-daemon</a></li>
   </ul>
   </li>
   <li><a href="#The.plugins.of.the.binder.afb-daemon">The plugins of the binder afb-daemon</a></li>
+  <li><a href="#Launching.the.binder.afb-daemon">Launching the binder afb-daemon</a></li>
+  <li><a href="#Future.development.of.afb-daemon">Future development of afb-daemon</a></li>
  </ul>
  </li>
 </ul></p>
  </ul>
  </li>
 </ul></p>
@@ -213,5 +215,156 @@ written with any language through web technologies ala JSON RPC.</p>
 
 
 <p>A specific document shows</p>
 
 
 <p>A specific document shows</p>
+
+<a name="Launching.the.binder.afb-daemon"></a>
+<h2>Launching the binder afb-daemon</h2>
+
+<p>The launch options for binder <strong>afb-daemon</strong> are:</p>
+
+<pre><code>  --help
+
+        Prints help with available options
+
+  --version
+
+        Display version and copyright
+
+  --verbose
+
+        Increases the verbosity, can be repeated
+
+  --port=xxxx
+
+        HTTP listening TCP port  [default 1234]
+
+  --rootdir=xxxx
+
+        HTTP Root Directory [default $AFBDIR or else $HOME/.AFB]
+
+  --rootbase=xxxx
+
+        Angular Base Root URL [default /opa]
+
+        This is used for any application of kind OPA (one page application).
+        When set, any missing document whose url has the form /opa/zzz
+        is translated to /opa/#!zzz
+
+  --rootapi=xxxx
+
+        HTML Root API URL [default /api]
+
+        The plugins are available within that url.
+
+  --alias=xxxx
+
+        Maps a path located anywhere in the file system to the
+        a subdirectory. The syntax for mapping a PATH to the
+        subdirectory NAME is: --alias=/NAME:PATH.
+
+        Example: --alias=/icons:/usr/share/icons maps the
+        content of /usr/share/icons within the subpath /icons.
+
+        This option can be repeated.
+
+  --apitimeout=xxxx
+
+        Plugin API timeout in seconds [default 20]
+
+        Defines how many seconds maximum a method is allowed to run.
+        0 means no limit.
+
+  --cntxtimeout=xxxx
+
+        Client Session Timeout in seconds [default 3600]
+
+  --cache-eol=xxxx
+
+        Client cache end of live [default 100000 that is 27,7 hours]
+
+  --sessiondir=xxxx
+
+        Sessions file path [default rootdir/sessions]
+
+  --session-max=xxxx
+
+        Maximum count of simultaneous sessions [default 10]
+
+  --ldpaths=xxxx
+
+        Load Plugins from given paths separated by colons
+        as for dir1:dir2:plugin1.so:... [default = $libdir/afb]
+
+        You can mix path to directories and to plugins.
+        The sub-directories of the given directories are searched
+        recursively.
+
+        The plugins are the files terminated by '.so' (the extension
+        so denotes shared object) that contain the public entry symbol.
+
+  --plugin=xxxx
+
+        Load the plugin of given path.
+
+  --token=xxxx
+
+        Initial Secret token to authenticate.
+
+        If not set, no client can authenticate.
+
+        If set to the empty string, then any initial token is accepted.
+
+  --mode=xxxx
+
+        Set the mode: either local, remote or global.
+
+        The mode indicate if the application is run locally on the host
+        or remotely through network.
+
+  --readyfd=xxxx
+
+        Set the #fd to signal when ready
+
+        If set, the binder afb-daemon will write "READY=1\n" on the file
+        descriptor whose number if given (/proc/self/fd/xxx).
+
+  --dbus-client=xxxx
+
+        Transparent binding to a binder afb-daemon service through dbus.
+
+        It creates an API of name xxxx that is implemented remotely
+        and queried via DBUS.
+
+  --dbus-server=xxxx
+
+        Provides a binder afb-daemon service through dbus.
+
+        The name xxxx must be the name of an API defined by a plugin.
+        This API is exported through DBUS.
+
+  --foreground
+
+        Get all in foreground mode (default)
+
+  --daemon
+
+        Get all in background mode
+</code></pre>
+
+<a name="Future.development.of.afb-daemon"></a>
+<h2>Future development of afb-daemon</h2>
+
+<ul>
+<li><p>The binder afb-daemon would launch the applications directly.</p></li>
+<li><p>The current setting of mode (local/remote/global) might be reworked to a
+mechanism for querying configuration variables.</p></li>
+<li><p>Implements &ldquo;one-shot&rdquo; initial token. It means that after its first
+authenticated use, the initial token is removed and no client can connect
+anymore.</p></li>
+<li><p>Creates some intrinsic APIs.</p></li>
+<li><p>Make the service connection using WebSocket not DBUS.</p></li>
+<li><p>Management of targetted events.</p></li>
+<li><p>Securisation of LOA.</p></li>
+<li><p>Integration of the protocol JSON-RPC for the websockets.</p></li>
+</ul>
 </body>
 </html>
 </body>
 </html>
index a5dcdf0..37fdd0c 100644 (file)
@@ -182,3 +182,162 @@ This simple idea is declined to serves multiple purposes:
 3. provide customers services
 
 A specific document shows 
 3. provide customers services
 
 A specific document shows 
+
+
+Launching the binder afb-daemon
+-------------------------------
+
+The launch options for binder **afb-daemon** are:
+
+         --help
+
+               Prints help with available options
+
+         --version
+
+               Display version and copyright
+
+         --verbose
+
+               Increases the verbosity, can be repeated
+
+         --port=xxxx
+
+               HTTP listening TCP port  [default 1234]
+
+         --rootdir=xxxx
+
+               HTTP Root Directory [default $AFBDIR or else $HOME/.AFB]
+
+         --rootbase=xxxx
+
+               Angular Base Root URL [default /opa]
+
+               This is used for any application of kind OPA (one page application).
+               When set, any missing document whose url has the form /opa/zzz
+               is translated to /opa/#!zzz
+
+         --rootapi=xxxx
+
+               HTML Root API URL [default /api]
+
+               The plugins are available within that url.
+
+         --alias=xxxx
+
+               Maps a path located anywhere in the file system to the
+               a subdirectory. The syntax for mapping a PATH to the
+               subdirectory NAME is: --alias=/NAME:PATH.
+
+               Example: --alias=/icons:/usr/share/icons maps the
+               content of /usr/share/icons within the subpath /icons.
+
+               This option can be repeated.
+
+         --apitimeout=xxxx
+
+               Plugin API timeout in seconds [default 20]
+
+               Defines how many seconds maximum a method is allowed to run.
+               0 means no limit.
+
+         --cntxtimeout=xxxx
+
+               Client Session Timeout in seconds [default 3600]
+
+         --cache-eol=xxxx
+
+               Client cache end of live [default 100000 that is 27,7 hours]
+
+         --sessiondir=xxxx
+
+               Sessions file path [default rootdir/sessions]
+
+         --session-max=xxxx
+
+               Maximum count of simultaneous sessions [default 10]
+
+         --ldpaths=xxxx
+
+               Load Plugins from given paths separated by colons
+               as for dir1:dir2:plugin1.so:... [default = $libdir/afb]
+
+               You can mix path to directories and to plugins.
+               The sub-directories of the given directories are searched
+               recursively.
+
+               The plugins are the files terminated by '.so' (the extension
+               so denotes shared object) that contain the public entry symbol.
+
+         --plugin=xxxx
+
+               Load the plugin of given path.
+
+         --token=xxxx
+
+               Initial Secret token to authenticate.
+
+               If not set, no client can authenticate.
+
+               If set to the empty string, then any initial token is accepted.
+
+         --mode=xxxx
+
+               Set the mode: either local, remote or global.
+
+               The mode indicate if the application is run locally on the host
+               or remotely through network.
+
+         --readyfd=xxxx
+
+               Set the #fd to signal when ready
+
+               If set, the binder afb-daemon will write "READY=1\n" on the file
+               descriptor whose number if given (/proc/self/fd/xxx).
+
+         --dbus-client=xxxx
+
+               Transparent binding to a binder afb-daemon service through dbus.
+
+               It creates an API of name xxxx that is implemented remotely
+               and queried via DBUS.
+
+         --dbus-server=xxxx
+
+               Provides a binder afb-daemon service through dbus.
+
+               The name xxxx must be the name of an API defined by a plugin.
+               This API is exported through DBUS.
+
+         --foreground
+
+               Get all in foreground mode (default)
+
+         --daemon
+
+               Get all in background mode
+
+
+Future development of afb-daemon
+--------------------------------
+
+- The binder afb-daemon would launch the applications directly.
+
+- The current setting of mode (local/remote/global) might be reworked to a
+mechanism for querying configuration variables.
+
+- Implements "one-shot" initial token. It means that after its first
+authenticated use, the initial token is removed and no client can connect
+anymore.
+
+- Creates some intrinsic APIs.
+
+- Make the service connection using WebSocket not DBUS.
+
+- Management of targetted events.
+
+- Securisation of LOA.
+
+- Integration of the protocol JSON-RPC for the websockets.
+
+