#include <limits.h>
#include <unistd.h>
-#include <uuid/uuid.h>
-
#include "verbose.h"
#include "afb-config.h"
#include "afb-hook.h"
#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
#define SET_BACKGROUND 2
#define SET_FORGROUND 3
-#define SET_TCP_PORT 5
#define SET_ROOT_DIR 6
#define SET_ROOT_BASE 7
#define SET_ROOT_API 8
#define SET_TRACEEVT 'E'
#define SET_EXEC 'e'
#define DISPLAY_HELP 'h'
+#if defined(WITH_MONITORING_OTPION)
+#define SET_MONITORING 'M'
+#endif
+#define SET_TCP_PORT 'p'
#define SET_QUIET 'q'
#define SET_RNDTOKEN 'r'
#define SET_TRACESVC 'S'
#define SET_VERBOSE 'v'
#define SET_WORK_DIR 'w'
-#define SHORTOPTS "c:D:E:ehqrT:t:u:Vvw:"
+const char shortopts[] =
+ "c:D:E:ehp:qrT:t:u:Vvw:"
+#if defined(WITH_MONITORING_OTPION)
+ "M"
+#endif
+;
// Command line structure hold cli --command + help text
typedef struct {
{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"},
{SET_NO_HTTPD, 0, "no-httpd", "Forbids HTTP service"},
{SET_EXEC, 0, "exec", "Execute the remaining arguments"},
+#if defined(WITH_MONITORING_OTPION)
+ {SET_MONITORING, 0, "monitoring", "enable HTTP monitoring at <ROOT>/monitoring/"},
+#endif
{0, 0, NULL, NULL}
/* *INDENT-ON* */
};
}
-/*----------------------------------------------------------
- | 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
+--------------------------------------------------------- */
}
// get all options from command line
- while ((optc = getopt_long(argc, argv, SHORTOPTS, gnuOptions, NULL)) != EOF) {
+ while ((optc = getopt_long(argc, argv, shortopts, gnuOptions, NULL)) != EOF) {
switch (optc) {
case SET_VERBOSE:
verbosity++;
break;
case SET_RNDTOKEN:
- config->token = random_token();
+ config->random_token = 1;
break;
+#if defined(WITH_MONITORING_OTPION)
+ case SET_MONITORING:
+ config->monitoring = 1;
+ break;
+#endif
+
case DISPLAY_VERSION:
noarg(optc);
printVersion(stdout);
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)
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)
if (config->ldpaths == NULL && config->weak_ldpaths == NULL && !config->no_ldpaths)
list_add(&config->ldpaths, BINDING_INSTALL_DIR);
+#if defined(WITH_MONITORING_OTPION)
+ if (config->monitoring)
+ list_add(&config->aliases, strdup("/monitoring:"BINDING_INSTALL_DIR"/monitoring"));
+#endif
+
// if no config dir create a default path from uploaddir
if (config->console == NULL) {
config->console = malloc(512);
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;