92 lines
4.0 KiB
C
92 lines
4.0 KiB
C
/****************************************************************************
|
|
* This file is part of the project AqHome.
|
|
* AqHome (c) by 2025 Martin Preuss, all rights reserved.
|
|
*
|
|
* The license for this file can be found in the file COPYING which you
|
|
* should have received along with this file.
|
|
****************************************************************************/
|
|
|
|
#ifndef AQHOME_CGI_MSERVICE_H
|
|
#define AQHOME_CGI_MSERVICE_H
|
|
|
|
#include <aqhome-cgi/service/module.h>
|
|
#include <aqhome-cgi/service/service.h>
|
|
#include <aqhome-cgi/service/session.h>
|
|
|
|
#include <aqcgi/request.h>
|
|
|
|
#include <gwenhywfar/buffer.h>
|
|
|
|
|
|
#define AQH_MODSERVICE_RQFLAGS_RAWFILE 0x10000000
|
|
|
|
|
|
|
|
typedef int (*AQH_MODSERVICE_HANDLEREQUEST_FN)(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, const char *sLastPathElem);
|
|
typedef AQH_MODULE* (*AQH_MODSERVICE_LOADSUBMODULE_FN)(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, const char *sModuleName);
|
|
typedef void (*AQH_MODSERVICE_ADDHEADER_FN)(AQH_MODULE *m, const char *lang, GWEN_BUFFER *dbuf);
|
|
typedef void (*AQH_MODSERVICE_ADDFOOTER_FN)(AQH_MODULE *m, const char *lang, GWEN_BUFFER *dbuf);
|
|
|
|
|
|
typedef struct AQH_MODSERVICE_HANDLER_ENTRY AQH_MODSERVICE_HANDLER_ENTRY;
|
|
struct AQH_MODSERVICE_HANDLER_ENTRY {
|
|
const char *page;
|
|
int httpMethod;
|
|
uint32_t perms;
|
|
void (*handlerFn)(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, GWEN_BUFFER *dbuf);
|
|
};
|
|
|
|
|
|
|
|
void AQH_ModService_Extend(AQH_MODULE *m, AQH_SERVICE *sv, const char *baseFolder);
|
|
|
|
AQH_SERVICE *AQH_ModService_GetService(const AQH_MODULE *m);
|
|
const char *AQH_ModService_GetBaseFolder(const AQH_MODULE *m);
|
|
|
|
uint32_t AQH_ModService_GetUserPerms(const AQH_MODULE *m);
|
|
|
|
void AQH_ModService_AddHeader(AQH_MODULE *m, const char *lang, GWEN_BUFFER *dbuf);
|
|
void AQH_ModService_AddFooter(AQH_MODULE *m, const char *lang, GWEN_BUFFER *dbuf);
|
|
|
|
AQH_MODULE *AQH_ModService_LoadSubModule(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, const char *sModuleName);
|
|
int AQH_ModService_HandleRequest(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, const char *sLastPathElem);
|
|
|
|
AQH_SESSION *AQH_ModService_ReadSession(AQH_MODULE *m, AQCGI_REQUEST *rq);
|
|
void AQH_ModService_CalcSessionModPerms(AQH_MODULE *m, const AQH_SESSION *session);
|
|
|
|
void AQH_ModService_HandleRequestWithTable(AQH_MODULE *m,
|
|
AQCGI_REQUEST *rq,
|
|
AQH_SESSION *session,
|
|
const char *page,
|
|
const AQH_MODSERVICE_HANDLER_ENTRY *e);
|
|
|
|
int AQH_ModService_RespondWithFile(AQH_MODULE *m, AQCGI_REQUEST *rq, const char *lang, const char *sFilename, GWEN_BUFFER *dbuf);
|
|
int AQH_ModService_ReadStaticFile(AQH_MODULE *m, const char *lang, const char *filename, GWEN_BUFFER *dbuf);
|
|
|
|
void AQH_ModService_AddPermDef(AQH_PERMDEF_LIST *permDefList, const char *id, uint32_t mask, const char *descr);
|
|
void AQH_ModService_AddRole(AQH_ROLE_LIST *roleList, int id, const char *name, uint32_t perms, const char *descr);
|
|
|
|
|
|
void AQH_ModService_WritePermsToForm(uint32_t perms, const AQH_PERMDEF_LIST *permDefList, const char *sPrefix, GWEN_BUFFER *dbuf);
|
|
uint32_t AQH_ModService_ReadPermsFromForm(GWEN_DB_NODE *dbPost, const AQH_PERMDEF_LIST *permDefList, const char *sPrefix);
|
|
|
|
AQH_MODULE_LIST *AQH_ModService_LoadRawModules(AQH_MODULE *m);
|
|
AQH_USER_LIST *AQH_ModService_LoadRawUsers(AQH_MODULE *m);
|
|
|
|
|
|
void AQH_ModService_SetHandleRequestFn(AQH_MODULE *m, AQH_MODSERVICE_HANDLEREQUEST_FN fn);
|
|
void AQH_ModService_SetLoadSubModuleFn(AQH_MODULE *m, AQH_MODSERVICE_LOADSUBMODULE_FN fn);
|
|
|
|
void AQH_ModService_SetAddHeaderFn(AQH_MODULE *m, AQH_MODSERVICE_ADDHEADER_FN fn);
|
|
void AQH_ModService_SetAddFooterFn(AQH_MODULE *m, AQH_MODSERVICE_ADDFOOTER_FN fn);
|
|
|
|
void AQH_ModService_EscapeToBuffer(const char *src, GWEN_BUFFER *buf);
|
|
void AQH_ModService_UnescapeToBuffer(const char *src, GWEN_BUFFER *buf);
|
|
|
|
int AQH_ModService_FileIsCurrent(const char *sPath, int seconds);
|
|
|
|
int AQH_ModService_RespondWithMimeFile(AQCGI_REQUEST *rq, const char *sFilename, const char *sMimeType, GWEN_BUFFER *dbuf);
|
|
|
|
#endif
|
|
|