Hack --plugins=path
[src/app-framework-binder.git] / src / config.c
index 6691ca0..815d11f 100644 (file)
 
 */
 
-
 #include "../include/local-def.h"
 #include <stdarg.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 
-
 #define AFB_CONFIG_JTYPE "AFB_config"
 
 PUBLIC  char *ERROR_LABEL[]=ERROR_LABEL_DEF;
@@ -61,14 +59,29 @@ PUBLIC AFB_error configLoadFile (AFB_session * session, AFB_config *cliconfig) {
    int fd;
    json_object * AFBConfig, *value;
    
+   // 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) {
@@ -101,14 +114,12 @@ PUBLIC AFB_error configLoadFile (AFB_session * session, AFB_config *cliconfig) {
        session->config->smack= cliconfig->smack;
    }
 
-   if  (cliconfig->smack == NULL) {
-       session->config->plugins = "all";
+   if  (cliconfig->plugins == NULL) {
+       session->config->plugins = PLUGIN_INSTALL_DIR;
    } else {
        session->config->plugins= cliconfig->plugins;
    }
 
-
-
    // if no session dir create a default path from rootdir
    if  (cliconfig->sessiondir == NULL) {
        session->config->sessiondir = malloc (512);
@@ -183,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));
    }
@@ -195,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);
@@ -206,9 +218,19 @@ 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
 
  
@@ -237,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
@@ -281,9 +305,6 @@ PUBLIC AFB_session *configInit () {
   }
   verbose = verbosesav;
   
-  // Load Plugins
-  initPlugins (session);
-  
   return (session);
 }