# 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 --background Get all in background 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 --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 --traceglob=xxxx Log the globals: none, all --traceditf=xxxx Log the daemons: no, common, all --tracesvc=xxxx Log the services: no, 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 /monitoring/ -C, --config=xxxx Load options from the given config file -Z, --dump-config Dump the config to stdout and exit -s, --set=xxxx Set parameters ([API]/[KEY]:JSON or {"API":{"KEY":JSON}} -o, --output=xxxx Redirect stdout and stderr to output file ``` ## 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 /monitoring/ ## name=xxxx Set the visible name ## auto-api=xxxx Automatic activation of api of the given directory when the api is missing. ## config=xxxx Load options from the given config file This can be used instead of arguments on the command line. Example: afb-daemon \ --no-ldpaths \ --binding /home/15646/bindings/binding45.so \ --binding /home/15646/bindings/binding3.so \ --tracereq common \ --port 5555 \ --token SPYER \ --set api45/key:54027a5e3c6cb2ca5ddb97679ce32f185b067b0a557d16a8333758910bc25a72 \ --exec /home/15646/bin/test654 @p @t is equivalent to: afb-daemon --config /home/15646/config1 when the file **/home/15646/config1** is: { "no-ldpaths": true, "binding": [ "\/home\/15646\/bindings\/binding45.so", "\/home\/15646\/bindings\/binding3.so" ], "tracereq": "common", "port": 5555, "token": "SPYER", "set" : { "api45": { "key": "54027a5e3c6cb2ca5ddb97679ce32f185b067b0a557d16a8333758910bc25a72" } }, "exec": [ "\/home\/15646\/bin\/test654", "@p", "@t" ] } The options are the keys of the config object. See option --dump-config ## dump-config Output a JSON representation of the configuration resulting from environment and options. ## output=xxxx Redirect stdout and stderr to output file ## set=xxxx Set values that can be retrieved by bindings. The set value can have different formats. The most generic format is **{"API1":{"KEY1":VALUE,"KEY2":VALUE2,...},"API2":...}** This example set 2 keys for the api *chook*: afb-daemon -Z --set '{"chook":{"account":"urn:chook:b2ca5ddb97679","delay":500}}' { "set": { "chook": { "account": "urn:chook:b2ca5ddb97679", "delay": 500 } } } An other format is: **[API]/[KEY]:VALUE**. When API is omitted, it take the value "*". When KEY is ommitted, it take the value of "*". The settings for the API \* are globals and apply to all bindings. The settings for the KEY \* are mixing the value for the API. The following examples are all setting the same values: afb-daemon --set '{"chook":{"account":"urn:chook:b2ca5ddb97679","delay":500}}' afb-daemon --set 'chook/*:{"account":"urn:chook:b2ca5ddb97679","delay":500}' afb-daemon --set 'chook/:{"account":"urn:chook:b2ca5ddb97679","delay":500}' afb-daemon --set 'chook/account:"urn:chook:b2ca5ddb97679"' --set chook/delay:500