# Launching options of afb-daemon

The launch options for binder **afb-daemon** are:

```
 -v, --verbose           Verbose Mode, repeat to increase verbosity
 -q, --quiet             Quiet Mode, repeat to decrease verbosity
 -l, --log=xxxx          Tune log level
     --foreground        Get all in foreground mode
     --daemon            Get all in background mode
 -n, --name=xxxx         Set the visible name
 -p, --port=xxxx         HTTP listening TCP port  [default 1234]
     --roothttp=xxxx     HTTP Root Directory [default no root http (files not served but apis still available)]
     --rootbase=xxxx     Angular Base Root URL [default /opa]
     --rootapi=xxxx      HTML Root API URL [default /api]
     --alias=xxxx        Multiple url map outside of rootdir [eg: --alias=/icons:/usr/share/icons]
     --apitimeout=xxxx   Binding API timeout in seconds [default 20]
     --cntxtimeout=xxxx  Client Session Context Timeout [default 32000000]
     --cache-eol=xxxx    Client cache end of live [default 100000]
 -w, --workdir=xxxx      Set the working directory [default: $PWD or current working directory]
 -u, --uploaddir=xxxx    Directory for uploading files [default: workdir]
     --rootdir=xxxx      Root Directory of the application [default: workdir]
     --ldpaths=xxxx      Load bindings from dir1:dir2:... [default = /opt/jobol/lib64/afb]
 -b, --binding=xxxx      Load the binding of path
     --weak-ldpaths=xxxx Same as --ldpaths but ignore errors
     --no-ldpaths        Discard default ldpaths loading
 -t, --token=xxxx        Initial Secret [default=random, use --token= to allow any token]
 -r, --random-token      Enforce a random token
 -V, --version           Display version and copyright
 -h, --help              Display this help
     --ws-client=xxxx    Bind to an afb service through websocket
     --ws-server=xxxx    Provide an afb service through websockets
 -A, --auto-api=xxxx     Automatic load of api of the given directory
     --session-max=xxxx  Max count of session simultaneously [default 200]
     --tracereq=xxxx     Log the requests: no, common, extra, all
     --traceditf=xxxx    Log the daemons: no, common, all
     --tracesvc=xxxx     Log the services: no, all
     --traceevt=xxxx     Log the events: no, common, extra, all
     --traceses=xxxx     Log the sessions: no, all
     --traceapi=xxxx     Log the apis: no, common, api, event, all
 -c, --call=xxxx         call at start format of val: API/VERB:json-args
     --no-httpd          Forbid HTTP service
 -e, --exec              Execute the remaining arguments
 -M, --monitoring        Enable HTTP monitoring at <ROOT>/monitoring/
```

## help

Prints help with available options

## version

Display version and copyright

## verbose

Increases the verbosity, can be repeated

## quiet

Decreases the verbosity, can be repeated

## log=xxxx

Tune the log level mask. The levels are:

 - error
 - warning
 - notice
 - info
 - debug

The level can be set using + or -.

| Examples | descritpion
|-----------------|-------------------
| error,warning   | selects only the levels error and warning
| +debug          | adds level debug to the current verbosity
| -warning        | remove the level warning from the current verbosity
| +warning-debug,info | Adds error and remove errors and warnings

## port=xxxx

HTTP listening TCP port  [default 1234]

## workdir=xxxx

Directory where the daemon must run [default: $PWD if defined
or the current working directory]

## uploaddir=xxxx

Directory where uploaded files are temporarily stored [default: workdir]

## rootdir=xxxx

Root directory of the application to serve [default: workdir]

## roothttp=xxxx

Directory of HTTP served files. If not set, files are not served
but apis are still accessible.

## 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 bindings 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

binding 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 32000000 that is 1 year]

## cache-eol=xxxx

Client cache end of live [default 100000 that is 27,7 hours]

## session-max=xxxx

Maximum count of simultaneous sessions [default 200]

## ldpaths=xxxx

Load bindings from given paths separated by colons
as for dir1:dir2:binding1.so:... [default = $libdir/afb]

You can mix path to directories and to bindings.
The sub-directories of the given directories are searched
recursively.

The bindings are the files terminated by '.so' (the extension
so denotes shared object) that contain the public entry symbol.

## weak-ldpaths=xxxx

Same as --ldpaths but instead of stopping on error, ignore errors and continue.

## binding=xxxx

Load the binding 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.

## random-token

Generate a random starting token. See option --exec.

## ws-client=xxxx

Transparent binding to a binder afb-daemon service through a WebSocket.

The value of xxxx is either a unix naming socket, of the form "unix:path/api",
or an internet socket, of the form "host:port/api".

## ws-server=xxxx

Provides a binder afb-daemon service through WebSocket.

The value of xxxx is either a unix naming socket, of the form "unix:path/api",
or an internet socket, of the form "host:port/api".

## foreground

Get all in foreground mode (default)

## daemon

Get all in background mode

## no-httpd

Forbids HTTP serve

## exec

Must be the last option for afb-daemon. The remaining
arguments define a command that afb-daemon will launch.
The sequences @p, @t and @@ of the arguments are replaced
with the port, the token and @.

## tracereq=xxxx

Trace the processing of requests in the log file.

Valid values are 'no' (default), 'common', 'extra' or 'all'.

## traceapi=xxxx

Trace the accesses to functions of class api.

Valid values are 'no' (default), 'common', 'api', 'event' or 'all'.

## traceevt=xxxx

Trace the accesses to functions of class event.

Valid values are 'no' (default), 'common', 'extra' or 'all'.

## call=xxx

Call a binding at start (can be be repeated).
The values are given in the form API/VERB:json-args.

Example: --call 'monitor/set:{"verbosity":{"api":"debug"}}'

## monitoring

Enable HTTP monitoring at <ROOT>/monitoring/

## name=xxxx

Set the visible name

## auto-api=xxxx

Automatic activation of api of the given directory when the api is missing.