ant-http/lib/plugin.h

116 lines
2.1 KiB
C
Raw Normal View History

2017-07-29 22:00:34 +02:00
#ifndef PLUGIN_H
#define PLUGIN_H
#ifdef USE_DB
2015-10-22 11:39:11 +02:00
#include "dbhelper.h"
#endif
2017-07-29 23:54:43 +02:00
#include "ws.h"
#include "scheduler.h"
2015-10-22 11:39:11 +02:00
2018-09-26 11:07:48 +02:00
//typedef void(*call)();
#ifdef USE_DB
2015-10-22 11:39:11 +02:00
typedef sqlite3* sqldb;
#endif
2015-10-22 11:39:11 +02:00
2017-07-29 22:00:34 +02:00
#ifdef USE_DB
2015-10-22 11:39:11 +02:00
sqldb getdb();
2016-10-30 16:14:04 +01:00
sqldb __getdb(char *name);
#endif
2017-07-29 22:00:34 +02:00
char* route(const char*);
char* htdocs(const char*);
char* config_dir();
2015-10-22 11:39:11 +02:00
/*Default function for plugin*/
2018-09-26 11:07:48 +02:00
// init the plugin
2019-11-13 17:00:11 +01:00
void init();
void destroy();
void* handle(void*);
plugin_header_t* meta();
void use_raw_body();
2019-11-13 17:00:11 +01:00
/*
STATIC PART, should be included in any plugin
*/
2019-11-19 17:07:04 +01:00
#ifdef PLUGIN_IMPLEMENT
2019-11-13 17:00:11 +01:00
static plugin_header_t __plugin__;
// private function
void __init_plugin__(const char* pl,config_t* conf){
__plugin__.name = strdup(pl);
2019-12-20 16:49:41 +01:00
__plugin__.dbpath= conf->db_path;
__plugin__.pdir = conf->plugins_dir;
2019-12-20 19:26:45 +01:00
__plugin__.tmpdir = conf->tmpdir;
2019-11-13 17:00:11 +01:00
__plugin__.raw_body = 0;
init();
};
void use_raw_body()
{
__plugin__.raw_body = 1;
}
#ifdef USE_DB
sqldb __getdb(char *name)
{
int plen = strlen(name)+strlen(__plugin__.dbpath)+4;
char* path = (char*) malloc(plen*sizeof(char));
strcpy(path,__plugin__.dbpath);
strcat(path,name);
strcat(path,".db");
//LOG("database: %s\n", path);
sqldb ret = (sqldb)database(path);
free(path);
return ret;
}
sqldb getdb()
{
return __getdb(__plugin__.name);
}
#endif
plugin_header_t* meta()
{
return &__plugin__;
}
char* route(const char* repath)
{
int len = strlen(__plugin__.name) + 2;
if(repath != NULL)
len += strlen(repath)+1;
char * path = (char*) malloc(len*sizeof(char));
strcpy(path,"/");
strcat(path,__plugin__.name);
if(repath != NULL)
{
strcat(path,"/");
strcat(path,repath);
}
return path;
}
2019-12-20 16:49:41 +01:00
const char* tmpdir()
2019-11-13 17:00:11 +01:00
{
2019-12-20 16:49:41 +01:00
return (const char*) __plugin__.tmpdir;
2019-11-13 17:00:11 +01:00
}
char* config_dir()
{
struct stat st;
char* path = __s("%s%s%s", __plugin__.pdir,DIR_SEP, __plugin__.name);
if (stat(path, &st) == -1)
mkdir(path, 0755);
return path;
}
void __release__()
{
destroy();
LOG("Releasing plugin\n");
if(__plugin__.name) free(__plugin__.name);
2019-12-20 16:49:41 +01:00
//if(__plugin__.dbpath) free(__plugin__.dbpath);
//if(__plugin__.htdocs) free(__plugin__.htdocs);
//if(__plugin__.pdir) free(__plugin__.pdir);
2019-11-13 17:00:11 +01:00
}
2017-07-29 22:00:34 +02:00
#endif
2019-11-19 17:07:04 +01:00
#endif