X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fconfig.c;h=2e7611a57591412d68f32325400cc45c4e4a8185;hb=0d170147150b90678225b55548215d09d8273e6d;hp=893b3a5f32912c6449f17c1d62984fd033a13fbe;hpb=cd054544444e92e7695dd288f0c04b7af0f668e3;p=src%2Fapp-framework-binder.git diff --git a/src/config.c b/src/config.c index 893b3a5f..2e7611a5 100644 --- a/src/config.c +++ b/src/config.c @@ -21,20 +21,18 @@ */ - #include "../include/local-def.h" #include #include #include - #define AFB_CONFIG_JTYPE "AFB_config" PUBLIC char *ERROR_LABEL[]=ERROR_LABEL_DEF; PUBLIC int verbose; -STATIC AFB_ErrorT AFB_Error [AFB_SUCCESS+1]; -STATIC json_object *AFBJsonType; +STATIC AFB_errorT AFBerr [AFB_SUCCESS+1]; +STATIC json_object *jTypeStatic; /* ------------------------------------------------------------------------------ * Get localtime and return in a string @@ -56,23 +54,34 @@ PUBLIC char * configTime (void) { } // load config from disk and merge with CLI option -PUBLIC AFB_ERROR configLoadFile (AFB_session * session, AFB_config *cliconfig) { +PUBLIC AFB_error configLoadFile (AFB_session * session, AFB_config *cliconfig) { static char cacheTimeout [10]; int fd; json_object * AFBConfig, *value; - // fix config redirect message - session->config->html5.msg = "Angular/HTML5 redirect"; - session->config->html5.len = strlen(session->config->html5.msg); - + // TBD integrate alias-dir array with config-file + session->config->aliasdir = cliconfig->aliasdir; + // default HTTP port if (cliconfig->httpdPort == 0) session->config->httpdPort=1234; else session->config->httpdPort=cliconfig->httpdPort; + + // default Plugin API timeout + if (cliconfig->apiTimeout == 0) session->config->apiTimeout=DEFLT_API_TIMEOUT; + else session->config->apiTimeout=cliconfig->apiTimeout; + + // default AUTH_TOKEN + if (cliconfig->token == NULL) session->config->token= DEFLT_AUTH_TOKEN; + else session->config->token=cliconfig->token; // cache timeout default one hour - if (cliconfig->cacheTimeout == 0) session->config->cacheTimeout=3600; + if (cliconfig->cacheTimeout == 0) session->config->cacheTimeout=DEFLT_CACHE_TIMEOUT; else session->config->cacheTimeout=cliconfig->cacheTimeout; + // cache timeout default one hour + if (cliconfig->cntxTimeout == 0) session->config->cntxTimeout=DEFLT_CNTX_TIMEOUT; + else session->config->cntxTimeout=cliconfig->cntxTimeout; + if (cliconfig->rootdir == NULL) { session->config->rootdir = getenv("AFBDIR"); if (session->config->rootdir == NULL) { @@ -88,19 +97,28 @@ PUBLIC AFB_ERROR configLoadFile (AFB_session * session, AFB_config *cliconfig) { // if no Angular/HTML5 rootbase let's try '/' as default if (cliconfig->rootbase == NULL) { - session->config->rootbase = "/"; + session->config->rootbase = "/opa"; } else { - session->config->console= cliconfig->console; + session->config->rootbase= cliconfig->rootbase; } - // if no rootapi use '/api' - if (cliconfig->rootbase == NULL) { - session->config->rootbase = "/api"; + if (cliconfig->rootapi == NULL) { + session->config->rootapi = "/api"; } else { - session->config->console= cliconfig->console; + session->config->rootapi= cliconfig->rootapi; } + if (cliconfig->smack == NULL) { + session->config->smack = "demo"; + } else { + session->config->smack= cliconfig->smack; + } + if (cliconfig->smack == NULL) { + session->config->plugins = "all"; + } else { + session->config->plugins= cliconfig->plugins; + } // if no session dir create a default path from rootdir if (cliconfig->sessiondir == NULL) { @@ -176,6 +194,10 @@ PUBLIC AFB_ERROR configLoadFile (AFB_session * session, AFB_config *cliconfig) { session->config->plugins = strdup (json_object_get_string (value)); } + if (!cliconfig->setuid && json_object_object_get_ex (AFBConfig, "setuid", &value)) { + session->config->setuid = strdup (json_object_get_string (value)); + } + if (!cliconfig->sessiondir && json_object_object_get_ex (AFBConfig, "sessiondir", &value)) { session->config->sessiondir = strdup (json_object_get_string (value)); } @@ -188,9 +210,6 @@ PUBLIC AFB_ERROR configLoadFile (AFB_session * session, AFB_config *cliconfig) { session->config->httpdPort = json_object_get_int (value); } - if (!cliconfig->setuid && json_object_object_get_ex (AFBConfig, "setuid", &value)) { - session->config->setuid = json_object_get_int (value); - } if (!cliconfig->localhostOnly && json_object_object_get_ex (AFBConfig, "localhostonly", &value)) { session->config->localhostOnly = json_object_get_int (value); @@ -199,11 +218,23 @@ PUBLIC AFB_ERROR configLoadFile (AFB_session * session, AFB_config *cliconfig) { if (!cliconfig->cacheTimeout && json_object_object_get_ex (AFBConfig, "cachetimeout", &value)) { session->config->cacheTimeout = json_object_get_int (value); } - // cacheTimeout is an interger but HTTPd wants it as a string + + if (!cliconfig->apiTimeout && json_object_object_get_ex (AFBConfig, "apitimeout", &value)) { + session->config->apiTimeout = json_object_get_int (value); + } + + if (!cliconfig->cntxTimeout && json_object_object_get_ex (AFBConfig, "cntxtimeout", &value)) { + session->config->cntxTimeout = json_object_get_int (value); + } + + // cacheTimeout is an integer but HTTPd wants it as a string snprintf (cacheTimeout, sizeof (cacheTimeout),"%d", session->config->cacheTimeout); session->cacheTimeout = cacheTimeout; // httpd uses cacheTimeout string version + json_object_put (AFBConfig); // decrease reference count to free the json object + + return AFB_SUCCESS; } @@ -228,10 +259,12 @@ PUBLIC void configStoreFile (AFB_session * session) { json_object_object_add (AFBConfig, "plugins" , json_object_new_string (session->config->plugins)); json_object_object_add (AFBConfig, "sessiondir" , json_object_new_string (session->config->sessiondir)); json_object_object_add (AFBConfig, "pidfile" , json_object_new_string (session->config->pidfile)); + json_object_object_add (AFBConfig, "setuid" , json_object_new_string (session->config->setuid)); json_object_object_add (AFBConfig, "httpdPort" , json_object_new_int (session->config->httpdPort)); - json_object_object_add (AFBConfig, "setuid" , json_object_new_int (session->config->setuid)); json_object_object_add (AFBConfig, "localhostonly" , json_object_new_int (session->config->localhostOnly)); json_object_object_add (AFBConfig, "cachetimeout" , json_object_new_int (session->config->cacheTimeout)); + json_object_object_add (AFBConfig, "apitimeout" , json_object_new_int (session->config->apiTimeout)); + json_object_object_add (AFBConfig, "cntxtimeout" , json_object_new_int (session->config->cntxTimeout)); err = json_object_to_file (session->config->configfile, AFBConfig); json_object_put (AFBConfig); // decrease reference count to free the json object @@ -258,18 +291,17 @@ PUBLIC AFB_session *configInit () { // stack config handle into session session->config = config; - AFBJsonType = json_object_new_string ("AFB_message"); + jTypeStatic = json_object_new_string ("AFB_message"); // initialise JSON constant messages and increase reference count to make them permanent verbosesav = verbose; verbose = 0; // run initialisation in silent mode - for (idx = 0; idx <= AFB_SUCCESS; idx++) { - AFB_Error[idx].level = idx; - AFB_Error[idx].label = ERROR_LABEL [idx]; - AFB_Error[idx].json = jsonNewMessage (idx, NULL); + AFBerr[idx].level = idx; + AFBerr[idx].label = ERROR_LABEL [idx]; + AFBerr[idx].json = jsonNewMessage (idx, NULL); } verbose = verbosesav; @@ -278,9 +310,9 @@ PUBLIC AFB_session *configInit () { // get JSON object from error level and increase its reference count -PUBLIC json_object *jsonNewStatus (AFB_ERROR level) { +PUBLIC json_object *jsonNewStatus (AFB_error level) { - json_object *target = AFB_Error[level].json; + json_object *target = AFBerr[level].json; json_object_get (target); return (target); @@ -288,12 +320,12 @@ PUBLIC json_object *jsonNewStatus (AFB_ERROR level) { // get AFB object type with adequate usage count PUBLIC json_object *jsonNewjtype (void) { - json_object_get (AFBJsonType); // increase reference count - return (AFBJsonType); + json_object_get (jTypeStatic); // increase reference count + return (jTypeStatic); } // build an ERROR message and return it as a valid json object -PUBLIC json_object *jsonNewMessage (AFB_ERROR level, char* format, ...) { +PUBLIC json_object *jsonNewMessage (AFB_error level, char* format, ...) { static int count = 0; json_object * AFBResponse; va_list args; @@ -313,7 +345,7 @@ PUBLIC json_object *jsonNewMessage (AFB_ERROR level, char* format, ...) { json_object_object_add (AFBResponse, "info" , json_object_new_string (message)); } if (verbose) { - fprintf (stderr, "AFB:%-6s [%3d]: ", AFB_Error [level].label, count++); + fprintf (stderr, "AFB:%-6s [%3d]: ", AFBerr [level].label, count++); if (format != NULL) { fprintf (stderr, "%s", message); } else {