summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2020-01-03afb-evt: Ensure unsubscribe worksJose Bollo3-106/+134
Fix the logic of unsubscribing to events. It was not possible before to implment it without tracking every session and context. It was not done because of the required complexity. This implementation ensures that unexpected events lead to a removal of the listener from the list of watchers of the events. The management of the list of watchers is reworked to free unused memory. Bug-AGL: SPEC-3069 Change-Id: Ie67372adbde9dcb9dc6c5c2738111d22609e7256 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2020-01-03afb-evt: Improve name of listening functionsJosé Bollo6-22/+21
Some more improvement on the road of the following bug: Bug-AGL: SPEC-3069 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: I5ad6439fa6051566ab2caf271345eda1efcef398
2020-01-03afb-proto-ws: Add message for unexpected eventJose Bollo5-3/+65
This new message allows to revoke an event no more expected or listened. Bug-AGL: SPEC-3069 Change-Id: I71945e322276f29b01b628bdf43d75599b521fc3 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2020-01-03afb-proto-ws: Improve comment and namesJose Bollo1-21/+21
Some more comment and naming improvement on the road of the following bug: Bug-AGL: SPEC-3069 Change-Id: I001ccfba2ea59604d217feb6afe3e5a313f3fbaf Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2020-01-03AFB.js: pass event nameJosé Bollo1-3/+3
The event name is given at second position, preserving existing code and making its use optionnal. Bug-AGL: SPEC-3069 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: Ieeed1762977b990c139d56c4d78e2b539d6927c6
2020-01-03afb-apiset: Fix start of apisJose Bollo1-33/+68
When using dynamically created/destroyed API, the binder might miss to start some apis. This fixes that issue by enforcing to restart from beginning until all is initialised. Bug-AGL: SPEC-3087 Change-Id: I4dd8c60c8465419a46132bf9f6deffa11e172e2a Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-12-24main-afb-client-demo: Fix typoJose Bollo1-2/+2
New line markers were missing. Bug-AGL: SPEC-3066 Change-Id: I4f1cf990edfb7772480ba658b6eda94bdd7e0289 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-12-20afb-token: Fix a critical bugicefish_8.99.4icefish/8.99.48.99.4Jose Bollo2-19/+56
Management of tokens had a big bug, due to insufficent testing. This fixes the issue that leaded to memory crashes. BUG-AGL: SPEC-3066 Change-Id: If967ec58ed04dc715d255a5e7c2196133ce3ec4a Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-12-12afb-daemon: Fix optionnal portJosé Bollo1-55/+60
Since: - introduction of interface to set the listening port(s) and address(es) - use of nss-localuser for discriminating binders there is no more strict need for exporting the port and substituting it. So the substitution is make only if needed. Since removal of token generation, there is no more need to propoagate any token. The two possibilities are kept for being used whene needed and to ensure sweet transition. Bug-AGL: SPEC-2968 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: I1d2b4d765f244e46de3071baddd8b3d0817b9436
2019-12-03main-afb-daemon: manage listening interfacesicefish_8.99.3icefish_8.99.2icefish/8.99.3icefish/8.99.28.99.38.99.2Jose Bollo3-11/+43
This change allows to specify interfaces to serve explicitely. By default the option --port=PORT lead to serving interface of specification "tcp:*:PORT". Meaning that all interfaces are listened. This is intended to be used with localuser family of hostnames. Bug-AGL: SPEC-2968 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: I3fb2a77a5c03dd4c2118ebe3267794f79bfc0262
2019-12-03afb-socket: Add ability to set a default schemeJose Bollo2-20/+49
This is a basic improvement for allowing simple option setting when uri are to be written. It allows to set contextually the default scheme. Bug-AGL: SPEC-2968 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh> Change-Id: I9d7be96743c47b3dd788a35b0b3642387613bacb
2019-12-03Relax constraint on aliasesJose Bollo1-1/+1
Without relaxing constraint, it is impossible to alias 2 directory contents for the same prefix. Relaxing it is needed for implementing ".well-known" interface. Bug-AGL: SPEC-2968 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh> Change-Id: I339699bbe66ed3df74ed4ac92344646339e5f2ad
2019-12-03AFB.js: Enforce single codeJosé Bollo1-219/+1
AFB.js was present with 2 different versions. This make it unique. Bug-AGL: SPEC-2968 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: Iee7a5a08fa1457d572000e42da4147c9fa5944b8
2019-12-03afb-perm: separate access to permission dbJosé Bollo7-67/+206
Access to permission database is better handled in a separate file. It will afterward evolve to integrate cynagora. Bug-AGL: SPEC-2968 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: Iebcd4e227e3e6c318029926499afb9d41d3f72c7
2019-12-03afb-supervision: Improve messagesJosé Bollo1-2/+2
The messages prompted when the supervisor is absent were of to high priority. Bug-AGL: SPEC-2968 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: Ic53a3039c2d3ed5be0138ec3215d58e27758a79c
2019-12-03afb-context & afb-token: rework token validationJosé Bollo5-42/+39
Validation of token is now linked to backend permission database. Bug-AGL: SPEC-2968 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: I30b049f92b8324740abecbb9539f7413ad55f7ec
2019-12-03afb-context: Move credentials to contextJosé Bollo21-131/+222
The split between context and credentials in requests was somehow artificial and awkward. This change move the credentials to the context and removes as many references to credentials as possible in favor of working on contexts. Change the value returned by afb_auth_check to be 1 if validated, 0 or less than zero if not validated. Bug-AGL: SPEC-2968 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: I979dc841e03247e126e3fa8433a1cc0d4108adf0
2019-12-02afb-hswitch: Update websocket policyJose Bollo1-5/+0
The previous policy for websocket was to enforce them to present a valid token when establishing. This policy is removed because the Websocket API of javascript doesn't provide a way to set the Bearer token in the HTTP header of the negociation (a big miss in my opinion). But because the new policy of token logic is to check the token at each request, it is not more needed to check it at establishment. Bug-AGL: SPEC-2968 Change-Id: I2941757492a27a2eed14e26fbb411330ab4aa8bc Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-12-02afb-auth: Increase and improve use of afb-authJose Bollo6-107/+93
This change factorize code for version V1 of bindings and centralizes management of authorisations in a single place. Bug-AGL: SPEC-2968 Change-Id: I6ad95d5bfa0d85dbb6d2060fc9ebca08b68eb4e9 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-29afb-error-text: Introduce standard error textJose Bollo11-63/+149
The standard error text are used to return standard HTTP error codes. Bug-AGL: SPEC-2968 Change-Id: Ic70e7982b1e05a1830cfa4e54813227621192ae2 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-29afb-proto-ws: Change the protocol WSAPIJose Bollo4-334/+638
Change internals of the protocol WSAPI for the following rationale: 1. Enforce specific declaration and transmission of session identifiers and of access tokens. 2. Lower the size of identifiers to be 16 bits. 3. Introduce protocol versionning through a mechanism of offer/set. The main purpose of that change is to optimize the count of data transmitted. It manages as best as possible the transmission of access tokens the less possible times. Same for sessions that the chage was transmitted at each call. Bug-AGL: SPEC-2968 Change-Id: If0a22b86627ead35a410e51c1028025c5b02c38f Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-29afb-stub-ws: Enforce asynchronous describeJose Bollo6-128/+164
Because remote apis describe themselves asynchronousely, it is better to have asynchronous describe api. Bug-AGL: SPEC-2968 Change-Id: I52b4dab697f229ad01ea2b73d6b8dee22d507912 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-29afb-evt: Use 16 bits for idsJose Bollo6-35/+42
16 bits are enough Bug-AGL: SPEC-2968 Change-Id: I0e8708c1d6a3934a342721a6ce5edb4676df6d1b Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-29u16id: Add maps for identifiers id of 16 bitsJose Bollo9-1/+659
These maps will shortly be used by protocol to handle tokens/sessions/events. Bug-AGL: SPEC-2968 Change-Id: Iadef7d6e01c8ef021516749524b10ccc1abec340 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-29afb-session: remove initial tokenJose Bollo5-53/+18
Tokens are no more managed by the binder. Bug-AGL: SPEC-2968 Change-Id: Idf1c38105f8ede82cd0ed43aeae3e8e69b9845a3 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-29afb-session: Expose a local id for sessionsJose Bollo3-42/+83
Also, improve readability and memory footprint Bug-AGL: SPEC-2968 Change-Id: I90104fb19a44e2810b92bef51d774acf734fd90f Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-29Use afb_token in contextsJose Bollo7-11/+22
Tokens are now object used in the context. Bug-AGL: SPEC-2968 Change-Id: I107d31732202b7b1172afaf09f3a52470f050d7c Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-29Move tokens from sessions to requestsJose Bollo7-36/+39
Tokens are no more related to sessions. Each request provides a token. In the case of websockets or connected link, the context can record the token. Bug-AGL: SPEC-2968 Change-Id: I1442b0422584c5a5b860ddb826518b0e673612f9 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-29Don't return the uuidJose Bollo5-24/+2
uuid is available in cookies and through a call to monitor/session Bug-AGL: SPEC-2968 Change-Id: I72912f3dc7985cca09e77c952e416b608711abbe Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-25Remove returning tokenJose Bollo12-215/+195
The token is no more generated by the binder Bug-AGL: SPEC-2968 Change-Id: I43f66c7613b42d33058e167b831a93b2112d3b9e Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-25Remove refreshing tokenJose Bollo11-96/+3
The token is no more generated by the binder but by some external component. Bug-AGL: SPEC-2968 Change-Id: I2c6221034272ab097e21e7727e4840b6b47bd0dc Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-25afb-hreq: Handle access_token query parameterJosé Bollo3-13/+24
As specified by OAuth2 protocols, the access token can be passed as a POST/GET parameter of name 'access_token'. Bug-AGL: SPEC-2968 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: I0e02e6fd0d53dad6de994d4482350fe42ecfce48
2019-11-20monitoring: Fix display on connection errorJose Bollo1-1/+1
When the connection can't occur, the output is not correct. Bug-AGL: SPEC-2975 Change-Id: I9cc185329ddccb00f2544dd7b17841b108cc2c81 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-20coverage: Fix regressionJose Bollo3-5/+92
The coverage test was broken. This restores it. Also add a simple build script that covers most of the code by default. Bug-AGL: SPEC-2974 Change-Id: I4fc5a0ba54195738405460a04f985bb67b81b5df Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-20Introduce object for tokensicefish_8.99.1icefish/8.99.18.99.1Jose Bollo10-20/+275
For further optimizations, the token is represented by a specific structure. Bug-AGL: SPEC-2968 Change-Id: I3d46a12c8c16809c6cc1d543fa2e6309927ed84d Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-20afb-hreq: Handle HTTP header AuthorizationJose Bollo1-11/+38
Allows the client to pass its authorization token using the standard RFC 6750 method. Bug-AGL: SPEC-2968 Change-Id: Ie9428f4b63554af121b091282ae2c126b4d0c020 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-20afb-proto-ws: Fix crash on event to disconnectedJose Bollo1-98/+102
There was a race condition that made the binder crashing when reporting event to a client that was disconnecting. Bug-AGL: SPEC-2967 Change-Id: I37a654960b42fbce5548ace9d3fb50cf2b375090 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-20afb-api-dbus: Fix broken broadcast in dbus apisJose Bollo1-5/+10
Probably because of conditional compiling, afb-api-dbus was broken since introduction of uuid and hops in broadcats. This change fixes this issue. Bug-AGL: SPEC-2969 Change-Id: I9a0fd8552f5f61d6eafa1ed83f6e09e6474378ff Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-11-19docs(func-service.md): typoLi Xiaoming1-1/+1
Bug-AGL: SPEC-2714 Change-Id: I913a836d8b762771d4a966870569b48e4c06804c Signed-off-by: Li Xiaoming <lixm.fnst@cn.fujitsu.com>
2019-11-06jobs: Fix callsync hangingJose Bollo1-25/+48
The function implementing jobs_enter, used by implementations of synchronous calls, was not taking care of waking up a thread. This had the effect of blocking calls made by an external thread. Bug-AGL: SPEC-2937 Change-Id: I4bf0265b4c029fb619ef7128824ee9d46a45996e Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-10-17sig-monitor: Fix exit in signal handlerJosé Bollo2-2/+25
Calling exit in signal interrupts wasn't correctly handling the case where the signal interrupts a thread waiting in the main loop. This can lead to the binder error report: CRITICAL: Can't enter dispatch while in dispatch! This patch defers the call to exit in a job. Bug-AGL: SPEC-2907 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: I49c7cca1d229ae957d9ea9bfb8838161ce73a53e
2019-10-01Improve detection of the bindingsJosé Bollo1-3/+3
The symbol 'afbBindingV3root' may be defined in shared libraries that are not bindings. Using it to detect bindings v3 can lead to false detection and errors. Bug-AGL: SPEC-2841 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: Ib2bc77d95e3306e7b4a883136ce27c92f8524a8d
2019-09-13Revert "Make source files relative"José Bollo1-1/+0
This reverts commit 45a4e69d4ef15c70d2b74ea4d0d2e4cd22e3adea. Revert looks good because the issue has to be adressed by the build environment. Bug-AGL: SPEC-2801 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: Id2f1f3890b5965e0a28f189834c758be5bd08d55
2019-09-13jobs: Wake up an event loop if neededJosé Bollo1-2/+8
A queued job must be treated. It was not the case when the job was queued from a foreign thread. This change detect that a potential hang exists and wake up an event loop to avoid it. Bug-AGL: SPEC-2809 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: Id12d32771ea37df5f5f2e208ec9645a6c4b0d0ab
2019-09-10Make source files relativeJosé Bollo1-0/+1
It is intended to enhance reproducibility of produced binaries as unmeaning prefixes are removed. Bug-AGL: SPEC-2801 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: I6a7ee9fa2ce4a744f7a5ef8a3c9886cd6a9f15e9
2019-08-23Fix binding example path & update afb-daemon optionsLi Xiaoming2-9/+10
Bug-AGL: SPEC-2714 Change-Id: I78aee6b3d96728a7eb394ddd94000c516fbc63ba Signed-off-by: Li Xiaoming <lixm.fnst@cn.fujitsu.com>
2019-08-20Fix client disconnection closeJosé Bollo3-9/+9
Before that change, the client disconection made a loop on read but wasn't closing the link. Bug-AGL: SPEC-2759 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: Iecfbb95cb1b7079e695ff5c08155b2310bf4b8d8
2019-08-19jobs: Add starting mode for jobsJose Bollo3-54/+136
Also improve naming of variables. Bug-AGL: SPEC-2720 Change-Id: I8efa74e27256425df18f57b3de257c234ff60e69 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
2019-08-19Replace obsolete argument "sessiondir" with "workdir"Li Xiaoming1-3/+3
afb-daemon can not recognize arg "sessiondir" now, it will report "Error: Bad option detected".Use "workdir" instead. Bug-AGL: SPEC-2714 Change-Id: I0a194efa7a37ce3e6624c44e48d3e98dcfdda4c2 Signed-off-by: Li Xiaoming <lixm.fnst@cn.fujitsu.com>
2019-08-09Avoid lock when child diesJose Bollo2-8/+18
Interaction between pthread_cond_wait, pthread_broadcast and signal may lead to lock when the child of afb-daemon dies. To avoid that sad behavior, this commit defers the call to "job_exit" using lazy job queueing. Bug-AGL: SPEC-2720 Change-Id: Ifd1a56f4a439e1704f79a1291fa01f39b1640f29 Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>