#ifndef LOCAL_DEF_H
#define LOCAL_DEF_H
-#ifndef _GNU_SOURCE
- #define _GNU_SOURCE
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <termios.h>
-#include <sys/ioctl.h>
-#include <sys/signal.h>
-#include <sys/types.h>
-#include <time.h>
#include <json.h>
-#include <microhttpd.h>
#include <magic.h>
-#include <setjmp.h>
-#include <signal.h>
-#include <uuid/uuid.h>
-
-
+#include <microhttpd.h>
/* other definitions --------------------------------------------------- */
{
const char *name;
enum AFB_sessionE session;
- json_object* (*callback)();
+ struct json_object* (*callback)();
const char *info;
};
typedef enum AFB_pluginE AFB_pluginE;
typedef enum AFB_sessionE AFB_sessionE;
-typedef json_object* (*AFB_apiCB)();
+typedef struct json_object* (*AFB_apiCB)();
typedef void (*AFB_freeCtxCB)(void*);
typedef struct AFB_restapi AFB_restapi;
typedef struct AFB_plugin AFB_plugin;
-
-
-
-
-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 {
- int fd;
- char *path;
- int errcode;
- json_object* jresp;
-} AFB_PostCtx;
-
-typedef struct {
- int len; // post element size
- char *data; // post data in raw format
- AFB_PostType type; // Json type
-} AFB_PostRequest;
-
-// Post handler
-typedef struct {
- void* ctx; // Application context
- int len; // current len for post
- int uid; // post uid for debug
- AFB_PostType type; // JSON or FORM
- AFB_apiCB completeCB; // callback when post is completed
- char *privatebuf; // use internally to keep track or partial buffer
- struct MHD_PostProcessor *pp; // iterator handle
-} AFB_PostHandle;
-
-typedef struct {
- enum MHD_ValueKind kind; // kind type of the value
- const char *key; // key 0-terminated key for the value
- const char *filename; // filename of the uploaded file, NULL if not known
- const char *mimetype; // content_type mime-type of the data, NULL if not known
- const char *encoding; // transfer_encoding encoding of the data, NULL if not known
- const char *data; // data pointer to size bytes of data at the specified offset
- uint64_t offset; // offset of data in the overall value
- size_t len; // number of bytes in data available
-} AFB_PostItem;
-
-typedef struct {
- char path[512];
- int fd;
-} AFB_staticfile;
-
typedef struct {
char *url;
char *path;
size_t len;
} AFB_aliasdir;
-typedef struct {
- char *msg;
- size_t len;
-} AFB_redirect_msg;
-
-// User Client Session Context
-typedef struct {
- char uuid[37]; // long term authentication of remote client
- char token[37]; // short term authentication of remote client
- time_t timeStamp; // last time token was refresh
- int restfull; // client does not use cookie
- void **contexts; // application specific context [one per plugin]]
-} AFB_clientCtx;
-
// main config structure
struct AFB_config
{
typedef struct {
const char *uuid;
const char *url;
- char *prefix; // plugin convivial name
- char *method;
+ const char *prefix; // plugin convivial name
+ const char *method;
+/*
AFB_PostRequest *post;
- json_object *jresp;
+*/
+ struct json_object *jresp;
void *context; // Hold Client Context when using session
int restfull; // request is resfull [uuid token provided]
int errcode; // http error code
struct AFB_config *config; // plugin may need access to config
- struct MHD_Connection *connection;
+ struct afb_req *areq;
} AFB_request;
struct afb_hsrv_handler;
struct MHD_Daemon;
-struct AFB_session {
+struct AFB_session
+{
struct AFB_config *config; // pointer to current config
// List of commands to execute
int background; // run in backround mode