afb-config: rework on option --random-token
authorJosé Bollo <jose.bollo@iot.bzh>
Sun, 27 Aug 2017 12:50:43 +0000 (14:50 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Sun, 27 Aug 2017 13:00:29 +0000 (15:00 +0200)
When set, this option will enforce a random
token in any cases.

Not using the option --token has the same effect
asking for a random token.

So the option now serves to enforce a random token.

Change-Id: Iea2cee44b95d5479c36217d312ab6e8ce6726005
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/afb-config.c
src/afb-config.h

index 2a11458..b11f8a1 100644 (file)
@@ -25,8 +25,6 @@
 #include <limits.h>
 #include <unistd.h>
 
-#include <uuid/uuid.h>
-
 #include "verbose.h"
 #include "afb-config.h"
 #include "afb-hook.h"
@@ -47,7 +45,6 @@
 #define DEFLT_CACHE_TIMEOUT 100000     // default Static File Chache
                                        // [Client Side Cache
                                        // 100000~=1day]
-#define DEFLT_AUTH_TOKEN    NULL       // expect for debug should == NULL
 #define CTX_NBCLIENTS       10         // allow a default of 10 authenticated
                                        // clients
 
@@ -149,7 +146,7 @@ static AFB_options cliOptions[] = {
        {NO_LDPATH,         0, "no-ldpaths",  "Discard default ldpaths loading"},
 
        {SET_AUTH_TOKEN,    1, "token",       "Initial Secret [default=no-session, --token= for session without authentication]"},
-       {SET_RNDTOKEN,      0, "random-token","Creates a random token"},
+       {SET_RNDTOKEN,      0, "random-token","Enforce a random token"},
 
        {DISPLAY_VERSION,   0, "version",     "Display version and copyright"},
        {DISPLAY_HELP,      0, "help",        "Display this help"},
@@ -263,18 +260,6 @@ static void printHelp(FILE * file, const char *name)
 }
 
 
-/*----------------------------------------------------------
- |   adds a string to the list
- +--------------------------------------------------------- */
-static char *random_token()
-{
-       static char uuidstr[37];
-       uuid_t uuid;
-       uuid_generate_random(uuid);
-       uuid_unparse(uuid, uuidstr);
-       return uuidstr;
-}
-
 /*----------------------------------------------------------
  |   adds a string to the list
  +--------------------------------------------------------- */
@@ -578,7 +563,8 @@ static void parse_arguments(int argc, char **argv, struct afb_config *config)
                        break;
 
                case SET_RNDTOKEN:
-                       config->token = random_token();
+                       config->random_token = 1;
+                       break;
 
 #if defined(WITH_MONITORING_OTPION)
                case SET_MONITORING:
@@ -602,8 +588,7 @@ static void parse_arguments(int argc, char **argv, struct afb_config *config)
        free(gnuOptions);
 }
 
-// load config from disk and merge with CLI option
-static void config_set_default(struct afb_config *config)
+static void fulfill_config(struct afb_config *config)
 {
        // default HTTP port
        if (config->httpdPort == 0)
@@ -614,8 +599,8 @@ static void config_set_default(struct afb_config *config)
                config->apiTimeout = DEFLT_API_TIMEOUT;
 
        // default AUTH_TOKEN
-       if (config->token == NULL)
-               config->token = DEFLT_AUTH_TOKEN;
+       if (config->random_token)
+               config->token = NULL;
 
        // cache timeout default one hour
        if (config->cacheTimeout == 0)
@@ -733,7 +718,7 @@ struct afb_config *afb_config_parse_arguments(int argc, char **argv)
        result = calloc(1, sizeof *result);
 
        parse_arguments(argc, argv, result);
-       config_set_default(result);
+       fulfill_config(result);
        if (verbosity >= 3)
                afb_config_dump(result);
        return result;
index 9e15ca0..56bfa9a 100644 (file)
@@ -65,6 +65,7 @@ struct afb_config {
        unsigned noHttpd: 1;
        unsigned background: 1;         /* run in backround mode */
        unsigned monitoring: 1;         /* activates monitoring */
+       unsigned random_token: 1;       /* expects a random token */
 };
 
 extern struct afb_config *afb_config_parse_arguments(int argc, char **argv);