X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fserv_extensions.h;h=136be62f1b85d454ec8e17cd01dedefb83b325ce;hb=4c274aa94a53d8850ed363e64c5863970fe629a4;hp=b2d556377828e0b1ea0b8631dc398e20386a6c46;hpb=a629da83391d58813cc962f6c52d991868b10e3a;p=citadel.git diff --git a/citadel/serv_extensions.h b/citadel/serv_extensions.h index b2d556377..136be62f1 100644 --- a/citadel/serv_extensions.h +++ b/citadel/serv_extensions.h @@ -15,107 +15,18 @@ /* */ - - -/* - * Structure defentitions for hook tables - */ - - -struct LogFunctionHook { - struct LogFunctionHook *next; - int loglevel; - void (*h_function_pointer) (char *); -}; -extern struct LogFunctionHook *LogHookTable; - -struct CleanupFunctionHook { - struct CleanupFunctionHook *next; - void (*h_function_pointer) (void); -}; -extern struct CleanupFunctionHook *CleanupHookTable; - -struct FixedOutputHook { - struct FixedOutputHook *next; - char content_type[64]; - void (*h_function_pointer) (char *, int); -}; -extern struct FixedOutputHook *FixedOutputTable; - +typedef void (*CtdlDbgFunction) (const int); +extern int DebugModules; +#define MDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (DebugModules != 0)) -/* - * SessionFunctionHook extensions are used for any type of hook for which - * the context in which it's being called (which is determined by the event - * type) will make it obvious for the hook function to know where to look for - * pertinent data. - */ -struct SessionFunctionHook { - struct SessionFunctionHook *next; - void (*h_function_pointer) (void); - int eventtype; -}; -extern struct SessionFunctionHook *SessionHookTable; +#define MOD_syslog(LEVEL, FORMAT, ...) \ + MDBGLOG(LEVEL) syslog(LEVEL, \ + "%s Modules: " FORMAT, IOSTR, __VA_ARGS__) - -/* - * UserFunctionHook extensions are used for any type of hook which implements - * an operation on a user or username (potentially) other than the one - * operating the current session. - */ -struct UserFunctionHook { - struct UserFunctionHook *next; - void (*h_function_pointer) (struct ctdluser *usbuf); - int eventtype; -}; -extern struct UserFunctionHook *UserHookTable; - -/* - * MessageFunctionHook extensions are used for hooks which implement handlers - * for various types of message operations (save, read, etc.) - */ -struct MessageFunctionHook { - struct MessageFunctionHook *next; - int (*h_function_pointer) (struct CtdlMessage *msg); - int eventtype; -}; -extern struct MessageFunctionHook *MessageHookTable; - - -/* - * NetprocFunctionHook extensions are used for hooks which implement handlers - * for incoming network messages. - */ -struct NetprocFunctionHook { - struct NetprocFunctionHook *next; - int (*h_function_pointer) (struct CtdlMessage *msg, char *target_room); -}; -extern struct NetprocFunctionHook *NetprocHookTable; - - -/* - * DeleteFunctionHook extensions are used for hooks which get called when a - * message is about to be deleted. - */ -struct DeleteFunctionHook { - struct DeleteFunctionHook *next; - void (*h_function_pointer) (char *target_room, long msgnum); -}; -extern struct DeleteFunctionHook *DeleteHookTable; - - -/* - * ExpressMessageFunctionHook extensions are used for hooks which implement - * the sending of an instant message through various channels. Any function - * registered should return the number of recipients to whom the message was - * successfully transmitted. - */ -struct XmsgFunctionHook { - struct XmsgFunctionHook *next; - int (*h_function_pointer) (char *, char *, char *, char *); - int order; -}; -extern struct XmsgFunctionHook *XmsgHookTable; +#define MODM_syslog(LEVEL, FORMAT) \ + MDBGLOG(LEVEL) syslog(LEVEL, \ + "%s Modules: " FORMAT, IOSTR); @@ -124,8 +35,9 @@ extern struct XmsgFunctionHook *XmsgHookTable; * ServiceFunctionHook extensions are used for hooks which implement various * protocols (either on TCP or on unix domain sockets) directly in the Citadel server. */ +typedef struct ServiceFunctionHook ServiceFunctionHook; struct ServiceFunctionHook { - struct ServiceFunctionHook *next; + ServiceFunctionHook *next; int tcp_port; char *sockpath; void (*h_greeting_function) (void) ; @@ -134,30 +46,23 @@ struct ServiceFunctionHook { int msock; const char* ServiceName; /* this is just for debugging and logging purposes. */ }; -extern struct ServiceFunctionHook *ServiceHookTable; - +extern ServiceFunctionHook *ServiceHookTable; -/* - * RoomFunctionHook extensions are used for hooks which impliment room - * processing functions when new messages are added EG. SIEVE. - */ -struct RoomFunctionHook { - struct RoomFunctionHook *next; - int (*fcn_ptr) (struct ctdlroom *); +typedef struct CleanupFunctionHook CleanupFunctionHook; +struct CleanupFunctionHook { + CleanupFunctionHook *next; + void (*h_function_pointer) (void); }; -extern struct RoomFunctionHook *RoomHookTable; - +extern CleanupFunctionHook *CleanupHookTable; -struct SearchFunctionHook { - struct SearchFunctionHook *next; - void (*fcn_ptr) (int *, long **, const char *); - char *name; -}; -extern struct SearchFunctionHook *SearchFunctionHookTable; - - - +typedef struct __LogDebugEntry { + CtdlDbgFunction F; + const char *Name; + long Len; + const int *LogP; +} LogDebugEntry; +extern HashList *LogDebugEntryTable; void initialize_server_extensions(void); int DLoader_Exec_Cmd(char *cmdbuf); char *Dynamic_Module_Init(void); @@ -165,6 +70,9 @@ char *Dynamic_Module_Init(void); void CtdlDestroySessionHooks(void); void PerformSessionHooks(int EventType); +int CheckTDAPVeto (int DBType, StrBuf *ErrMsg); +void CtdlDestroyTDAPVetoHooks(void); + void CtdlDestroyUserHooks(void); void PerformUserHooks(struct ctdluser *usbuf, int EventType); @@ -174,7 +82,7 @@ void CtdlDestroyXmsgHooks(void); void CtdlDestroyMessageHook(void); -int PerformMessageHooks(struct CtdlMessage *, int EventType); +int PerformMessageHooks(struct CtdlMessage *, recptypes *recps, int EventType); void CtdlDestroyNetprocHooks(void); @@ -199,5 +107,8 @@ void CtdlDestroySearchHooks(void); void CtdlDestroyFixedOutputHooks(void); int PerformFixedOutputHooks(char *, char *, int); +void CtdlRegisterDebugFlagHook(const char *Name, long len, CtdlDbgFunction F, const int *); +void CtdlSetDebugLogFacilities(const char **Str, long n); +void CtdlDestroyDebugTable(void); #endif /* SERV_EXTENSIONS_H */