simplification of config
[src/app-framework-binder.git] / include / local-def.h
index edaf1bb..a55326f 100644 (file)
@@ -1,5 +1,5 @@
 /*
-   alsajson-gw -- provide a REST/HTTP interface to ALSA-Mixer
+   local-def.h -- provide a REST/HTTP interface
 
    Copyright (C) 2015, Fulup Ar Foll
 
 
 
 
-
-#define AJQ_VERSION "0.1"
-
 /* other definitions --------------------------------------------------- */
 
 // Note: because of a bug in libmagic MAGIC_DB NULL should not be used for default
-#define MAGIC_DB "/usr/share/misc/magic.mgc"
 #define OPA_INDEX "index.html"
 #define MAX_ALIAS 10           // max number of aliases
-#define COOKIE_NAME   "AJB_session"
+#define COOKIE_NAME   "afb-session"
 
 
 #define DEFLT_CNTX_TIMEOUT  3600   // default Client Connection Timeout
@@ -87,9 +83,6 @@ typedef enum  {AFB_PLUGIN_JSON=123456789, AFB_PLUGIN_JSCRIPT=987654321,  AFB_PLU
 // prebuild json error are constructed in config.c
 typedef enum  { AFB_FALSE, AFB_TRUE, AFB_FATAL, AFB_FAIL, AFB_WARNING, AFB_EMPTY, AFB_SUCCESS, AFB_DONE, AFB_UNAUTH} AFB_error;
 
-extern char *ERROR_LABEL[];
-#define ERROR_LABEL_DEF {"false", "true","fatal", "fail", "warning", "empty", "success"}
-
 #define BANNER "<html><head><title>Application Framework Binder</title></head><body>Application Framework </body></html>"
 #define JSON_CONTENT  "application/json"
 #define FORM_CONTENT "multipart/form-data"
@@ -100,14 +93,8 @@ extern char *ERROR_LABEL[];
 typedef json_object* (*AFB_apiCB)();
 typedef void (*AFB_freeCtxCB)(void*, void*, char*);
 
-// Error code are requested through function to manage json usage count
-typedef struct {
-  int   level;
-  char* label;
-  json_object *json;
-} AFB_errorT;
-
-typedef enum  {AFB_POST_NONE=0, AFB_POST_JSON, AFB_POST_FORM} AFB_PostType;
+typedef enum  {AFB_POST_NONE=0, AFB_POST_JSON, AFB_POST_FORM, AFB_POST_EMPTY} AFB_PostType;
+typedef enum  {AFB_MODE_LOCAL=0, AFB_MODE_REMOTE, AFB_MODE_GLOBAL} AFB_Mode;
 
 // Post Upload File Handle
 typedef struct {
@@ -130,7 +117,7 @@ typedef struct {
   int    uid;               // post uid for debug
   AFB_PostType type;        // JSON or FORM
   AFB_apiCB  completeCB;    // callback when post is completed
-  char   *private;          // use internally to keep track or partial buffer
+  char   *privatebuf;       // use internally to keep track or partial buffer
   struct MHD_PostProcessor *pp; // iterator handle
 } AFB_PostHandle;
 
@@ -156,43 +143,26 @@ typedef struct {
   size_t len;
 } AFB_aliasdir;
 
-// Command line structure hold cli --command + help text
-typedef struct {
-  int  val;        // command number within application
-  int  has_arg;    // command number within application
-  char *name;      // command as used in --xxxx cli
-  char *help;      // help text
-} AFB_options;
-
 // main config structure
 typedef struct {
   char *logname;           // logfile path for info & error log
   char *console;           // console device name (can be a file or a tty)
   int  localhostOnly;
   int   httpdPort;
-  char *smack;             // smack label
   char *ldpaths;           // list of plugins directories
   char *rootdir;           // base dir for httpd file download
   char *rootbase;          // Angular HTML5 base URL
   char *rootapi;           // Base URL for REST APIs
-  char *pidfile;           // where to store pid when running background
   char *sessiondir;        // where to store mixer session files
-  char *configfile;        // where to store configuration on gateway exit
-  char *setuid;            // downgrade uid to username
   char *token;             // initial authentication token [default NULL no session]
   int  cacheTimeout;
   int  apiTimeout;
   int  cntxTimeout;        // Client Session Context timeout
   int  pluginCount;        // loaded plugins count
+  AFB_Mode mode;           // mode of listening
   AFB_aliasdir *aliasdir;  // alias mapping for icons,apps,...
 } AFB_config;
 
-typedef struct {
-  int  len;        // command number within application
-  json_object *jtype;
-} AFB_privateApi;
-
-
 typedef struct {
      char    *msg;
      size_t  len;
@@ -207,7 +177,6 @@ typedef struct {
   AFB_sessionE session;
   AFB_apiCB callback;
   char *info;
-  AFB_privateApi *private;
 } AFB_restapi;
 
 // Plugin definition
@@ -252,21 +221,20 @@ typedef struct {
   AFB_plugin **plugins;
 } AFB_request;
 
-
+struct afb_hsrv_handler;
+struct MHD_Daemon;
 typedef struct {
   AFB_config  *config;   // pointer to current config
   // List of commands to execute
-  int  killPrevious;
   int  background;        // run in backround mode
   int  foreground;        // run in forground mode
-  int  configsave;        // Save config on disk on start
   char *cacheTimeout;     // http require timeout to be a string
-  void *httpd;            // anonymous structure for httpd handler
+  struct MHD_Daemon *httpd;            // structure for httpd handler
   int  fakemod;           // respond to GET/POST request without interacting with sndboard
-  int  forceexit;         // when autoconfig from script force exit before starting server
+  int  readyfd;           // a #fd to signal when ready to serve
   AFB_plugin **plugins;   // pointer to REST/API plugins 
   magic_t  magic;         // Mime type file magic lib
-  sigjmp_buf restartCkpt; // context save for restart set/longjmp
+  struct afb_hsrv_handler *handlers;
 } AFB_session;