*/
-
#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;
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
}
// 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;
+ session->config->mode = cliconfig->mode;
// 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) {
// 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->ldpaths == NULL) {
+ session->config->ldpaths = PLUGIN_INSTALL_DIR;
+ } else {
+ session->config->ldpaths= cliconfig->ldpaths;
+ }
// if no session dir create a default path from rootdir
if (cliconfig->sessiondir == NULL) {
session->config->rootapi = strdup (json_object_get_string (value));
}
- if (!cliconfig->smack && json_object_object_get_ex (AFBConfig, "smack", &value)) {
- session->config->smack = strdup (json_object_get_string (value));
- }
-
- if (!cliconfig->plugins && json_object_object_get_ex (AFBConfig, "plugins", &value)) {
- session->config->plugins = strdup (json_object_get_string (value));
+ if (!cliconfig->ldpaths && json_object_object_get_ex (AFBConfig, "plugins", &value)) {
+ session->config->ldpaths = 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));
}
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);
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;
}
json_object_object_add (AFBConfig, "rootdir" , json_object_new_string (session->config->rootdir));
json_object_object_add (AFBConfig, "rootapi" , json_object_new_string (session->config->rootapi));
json_object_object_add (AFBConfig, "rootbase" , json_object_new_string (session->config->rootbase));
- json_object_object_add (AFBConfig, "smack" , json_object_new_string (session->config->smack));
- json_object_object_add (AFBConfig, "plugins" , json_object_new_string (session->config->plugins));
+ json_object_object_add (AFBConfig, "plugins" , json_object_new_string (session->config->ldpaths));
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
// 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;
// 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);
// 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;
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 {