From da9b5d47f01f786f3170c80724a1a6d8f9b94ebb Mon Sep 17 00:00:00 2001 From: Fulup Ar Foll Date: Tue, 29 Dec 2015 02:15:07 +0100 Subject: [PATCH] Switch to unique token model Token/Session Plugin is now able to issue a globally-valid token (re-useable with all Plugins, so that an application using multiple plugins is not forced to manage multiple tokens anymore). Adapt Audio & Radio Plugins to this model (init functions do not create a token anymore, check for a prior existing one). Signed-off-by: Manuel Bachmann Author: Fulup Ar Foll Author: Manuel Bachmann --- plugins/audio/audio-api.c | 4 ++-- plugins/radio/radio-api.c | 4 ++-- src/rest-api.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/audio/audio-api.c b/plugins/audio/audio-api.c index 4c7df8b0..3877ce5b 100644 --- a/plugins/audio/audio-api.c +++ b/plugins/audio/audio-api.c @@ -58,7 +58,7 @@ STATIC void freeAudio (void *context) { /* ------ PUBLIC PLUGIN FUNCTIONS --------- */ -STATIC json_object* init (AFB_request *request) { /* AFB_SESSION_CREATE */ +STATIC json_object* init (AFB_request *request) { /* AFB_SESSION_CHECK */ json_object *jresp; int idx; @@ -225,7 +225,7 @@ STATIC json_object* ping (AFB_request *request) { /* AFB_SESSION_NONE */ } STATIC AFB_restapi pluginApis[]= { - {"init" , AFB_SESSION_CREATE, (AFB_apiCB)init , "Audio API - init"}, + {"init" , AFB_SESSION_CHECK, (AFB_apiCB)init , "Audio API - init"}, {"volume" , AFB_SESSION_CHECK, (AFB_apiCB)volume , "Audio API - volume"}, {"channels", AFB_SESSION_CHECK, (AFB_apiCB)channels , "Audio API - channels"}, {"mute" , AFB_SESSION_CHECK, (AFB_apiCB)mute , "Audio API - mute"}, diff --git a/plugins/radio/radio-api.c b/plugins/radio/radio-api.c index 1cbf3149..b09cea86 100644 --- a/plugins/radio/radio-api.c +++ b/plugins/radio/radio-api.c @@ -126,7 +126,7 @@ STATIC void freeRadio (void *context, void *handle) { /* ------ PUBLIC PLUGIN FUNCTIONS --------- */ -STATIC json_object* init (AFB_request *request) { /* AFB_SESSION_CREATE */ +STATIC json_object* init (AFB_request *request) { /* AFB_SESSION_CHECK */ json_object *jresp; @@ -306,7 +306,7 @@ STATIC json_object* ping (AFB_request *request) { /* AFB_SESSION_NONE */ STATIC AFB_restapi pluginApis[]= { - {"init" , AFB_SESSION_CREATE, (AFB_apiCB)init , "Radio API - init"}, + {"init" , AFB_SESSION_CHECK, (AFB_apiCB)init , "Radio API - init"}, {"power" , AFB_SESSION_CHECK, (AFB_apiCB)power , "Radio API - power"}, {"mode" , AFB_SESSION_CHECK, (AFB_apiCB)mode , "Radio API - mode"}, {"freq" , AFB_SESSION_CHECK, (AFB_apiCB)freq , "Radio API - freq"}, diff --git a/src/rest-api.c b/src/rest-api.c index 398ba577..2596f305 100644 --- a/src/rest-api.c +++ b/src/rest-api.c @@ -510,7 +510,7 @@ ProcessApiCall: // client did not pass token on URI let's use cookies if ((!request->restfull) && (request->context != NULL)) { char cookie[64]; - snprintf (cookie, sizeof (cookie), "%s=%s", COOKIE_NAME, request->uuid); + snprintf (cookie, sizeof (cookie), "%s=%s;path=/api;max-age=%d", COOKIE_NAME, request->uuid, request->config->cntxTimeout); MHD_add_response_header (webResponse, MHD_HTTP_HEADER_SET_COOKIE, cookie); } -- 2.16.6