1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
|
# Launching options of afb-daemon
The launch options for binder **afb-daemon** are:
```
-v, --verbose Verbose Mode, repeat to increase verbosity
-c, --color Colorize the ouput
-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
-D, --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] relative to workdir
--rootdir=xxxx Root Directory of the application [default: workdir] relative to workdir
--ldpaths=xxxx Load bindings from dir1:dir2:... [default: path of afb-dbus-binding.so]
-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
--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/
-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 (when --daemon)
--trap-faults=xxxx Trap faults: on, off, yes, no, true, false, 1, 0 (default: true)
```
## help
Prints help with available options
## version
Display version and copyright
## verbose
Increases the verbosity, can be repeated
## color
Add basic colorization to the ouput.
## 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.
## 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
|