Tokens are no more managed by the binder.
Bug-AGL: SPEC-2968
Change-Id: Idf1c38105f8ede82cd0ed43aeae3e8e69b9845a3
Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
#include "afb-session.h"
#include "afb-hook.h"
-#include "afb-token.h"
#include "verbose.h"
#include "pearson.h"
#include "uuid.h"
uint16_t genid; /**< for generating ids */
int timeout; /**< common initial timeout */
struct afb_session *first; /**< sessions */
- struct afb_token *initok;/**< common initial token */
pthread_mutex_t mutex; /**< declare a mutex to protect hash table */
} sessions = {
.count = 0,
.genid = 1,
.timeout = 3600,
.first = 0,
- .initok = 0,
.mutex = PTHREAD_MUTEX_INITIALIZER
};
/**
* Initialize the session manager with a 'max_session_count',
- * an initial common 'timeout' and an initial common token 'initok'.
+ * an initial common 'timeout'
*
* @param max_session_count maximum allowed session count in the same time
* @param timeout the initial default timeout of sessions
- * @param initok the initial default token of sessions
*/
-int afb_session_init (int max_session_count, int timeout, const char *initok)
+int afb_session_init (int max_session_count, int timeout)
{
- int rc;
- uuid_stringz_t uuid;
-
- /* check parameters */
- if (initok && strlen(initok) >= sizeof sessions.initok) {
- ERROR("initial token '%s' too long (max length %d)",
- initok, ((int)(sizeof sessions.initok)) - 1);
- errno = EINVAL;
- return -1;
- }
-
/* init the sessionset (after cleanup) */
sessionset_lock();
sessionset_cleanup(1);
else
sessions.max = (uint16_t)max_session_count;
sessions.timeout = timeout;
- if (initok == NULL) {
- uuid_new_stringz(uuid);
- initok = uuid;
- }
- sessions.initok = 0;
- if (*initok) {
- rc = afb_token_get(&sessions.initok, initok);
- if (rc < 0)
- return rc;
- }
sessionset_unlock();
return 0;
}
sessionset_unlock();
}
-/**
- * @return the initial token set at initialization
- */
-const char *afb_session_initial_token()
-{
- return sessions.initok ? afb_token_string(sessions.initok) : "";
-}
-
/* Searchs the session of 'uuid' */
struct afb_session *afb_session_search (const char *uuid)
{
#define AFB_SESSION_TIMEOUT_DEFAULT -2
#define AFB_SESSION_TIMEOUT_IS_VALID(x) ((x) >= AFB_SESSION_TIMEOUT_DEFAULT)
-extern int afb_session_init(int max_session_count, int timeout, const char *initok);
+extern int afb_session_init(int max_session_count, int timeout);
extern void afb_session_purge();
-extern const char *afb_session_initial_token();
extern void afb_session_foreach(void (*callback)(void *closure, struct afb_session *session), void *closure);
extern struct afb_session *afb_session_create (int timeout);
static int execute_command()
{
- struct json_object *exec, *oport;
+ struct json_object *exec, *oport, *otok;
struct sigaction siga;
char port[20];
const char *token;
}
else {
/* instantiate arguments and environment */
- token = afb_session_initial_token();
+ if (json_object_object_get_ex(main_config, "token", &otok))
+ token = json_object_get_string(otok);
+ else
+ token = SUBST_STR"p";
args = instanciate_command_args(exec, port, token);
if (args && instanciate_environ(port, token) >= 0) {
/* run */
}
/* initialize session handling */
- if (afb_session_init(max_session_count, session_timeout, token)) {
+ if (afb_session_init(max_session_count, session_timeout)) {
ERROR("initialisation of session manager failed");
goto error;
}
goto error;
}
if (addenv_int("AFB_PORT", http_port)
- || addenv("AFB_TOKEN", afb_session_initial_token())) {
+ || addenv("AFB_TOKEN", token?:"")) {
ERROR("can't set HTTP environment");
goto error;
}
/* run the command */
afb_debug("start-exec");
- if (execute_command() < 0)
+ if (execute_command(http_port, token) < 0)
goto error;
/* ready */
}
/* configure the daemon */
- if (afb_session_init(main_config->nbSessionMax, main_config->cntxTimeout, main_config->token)) {
+ if (afb_session_init(main_config->nbSessionMax, main_config->cntxTimeout)) {
ERROR("initialisation of session manager failed");
goto error;
}
/* check the initialisation */
START_TEST (check_initialisation)
{
- ck_assert_int_eq(0, afb_session_init(0, 0, NULL));
- ck_assert_int_eq(0, afb_session_init(200, 0, NULL));
- ck_assert_int_eq(0, afb_session_init(10, 0, GOOD_UUID));
- ck_assert_str_eq(GOOD_UUID, afb_session_initial_token());
- ck_assert_int_eq(-1, afb_session_init(10, 0, BAD_UUID));
- ck_assert_int_eq(errno, EINVAL);
+ ck_assert_int_eq(0, afb_session_init(0, 0));
+ ck_assert_int_eq(0, afb_session_init(200, 0));
}
END_TEST
struct afb_session *s, *x;
/* init */
- ck_assert_int_eq(0, afb_session_init(10, 3600, GOOD_UUID));
+ ck_assert_int_eq(0, afb_session_init(10, 3600));
/* create a session */
s = afb_session_create(AFB_SESSION_TIMEOUT_DEFAULT);
START_TEST (check_capacity)
{
struct afb_session *s[3];
- ck_assert_int_eq(0, afb_session_init(2, 3600, GOOD_UUID));
+ ck_assert_int_eq(0, afb_session_init(2, 3600));
s[0] = afb_session_create(AFB_SESSION_TIMEOUT_DEFAULT);
ck_assert(s[0]);
s[1] = afb_session_create(AFB_SESSION_TIMEOUT_DEFAULT);
int i, j;
/* init */
- ck_assert_int_eq(0, afb_session_init(10, 3600, GOOD_UUID));
+ ck_assert_int_eq(0, afb_session_init(10, 3600));
/* create a session */
s = afb_session_create(AFB_SESSION_TIMEOUT_DEFAULT);
struct afb_session *s;
/* init */
- ck_assert_int_eq(0, afb_session_init(10, 3600, GOOD_UUID));
+ ck_assert_int_eq(0, afb_session_init(10, 3600));
/* create the hooking */
hs = afb_hook_create_session(NULL, afb_hook_flags_session_all, &hookitf, NULL);