]> code.citadel.org Git - citadel.git/blobdiff - citadel/serv_extensions.c
Instant messages now carry the email address or JID of the
[citadel.git] / citadel / serv_extensions.c
index 9cc062c6c3dcfc1e1d54e8ae8a437cc51ed2f6c8..be0e74815858dd98404d2a9aa479bf98c57b91db 100644 (file)
 #include <string.h>
 #include <limits.h>
 #include <ctype.h>
+#include <libcitadel.h>
 #include "citadel.h"
 #include "server.h"
 #include "serv_extensions.h"
 #include "sysdep_decls.h"
 #include "msgbase.h"
-#include "tools.h"
 #include "config.h"
 
 #include "modules/crypto/serv_crypto.h"        /* Needed until a universal crypto startup hook is implimented for CtdlStartTLS */
@@ -42,7 +42,6 @@ struct DeleteFunctionHook *DeleteHookTable = NULL;
 struct ServiceFunctionHook *ServiceHookTable = NULL;
 struct FixedOutputHook *FixedOutputTable = NULL;
 struct RoomFunctionHook *RoomHookTable = NULL;
-struct MaintenanceThreadHook *MaintenanceThreadHookTable = NULL;
 struct SearchFunctionHook *SearchFunctionHookTable = NULL;
 
 struct ProtoFunctionHook {
@@ -92,7 +91,8 @@ char *ErrPortWhere = "Admin->System Preferences->Network.\n\nThe failed ports an
 char *ErrPortHint = "If you want citadel to provide you with that functionality, "
 "check the output of \"netstat -lnp\" on linux Servers or \"netstat -na\" on *BSD"
 " and stop the programm, that binds these ports. You should eventually remove "
-" their initscripts in /etc/init.d so that you won't get this trouble once more.\n";
+" their initscripts in /etc/init.d so that you won't get this trouble once more.\n"
+" After that goto Administration -> Shutdown Citadel to make Citadel retry to bind this port.\n";
 
 
 void LogPrintMessages(long err)
@@ -189,6 +189,20 @@ void AddPortError(char *Port, char *ErrorMessage)
 }
 
 
+int DLoader_Exec_Cmd(char *cmdbuf)
+{
+       struct ProtoFunctionHook *p;
+
+       for (p = ProtoHookList; p; p = p->next) {
+               if (!strncasecmp(cmdbuf, p->cmd, 4)) {
+                       p->handler(&cmdbuf[5]);
+                       return 1;
+               }
+       }
+       return 0;
+}
+
+
 void CtdlRegisterProtoHook(void (*handler) (char *), char *cmd, char *desc)
 {
        struct ProtoFunctionHook *p;
@@ -256,20 +270,6 @@ void CtdlDestroyProtoHooks(void)
 }
 
 
-int DLoader_Exec_Cmd(char *cmdbuf)
-{
-       struct ProtoFunctionHook *p;
-
-       for (p = ProtoHookList; p; p = p->next) {
-               if (!strncasecmp(cmdbuf, p->cmd, 4)) {
-                       p->handler(&cmdbuf[5]);
-                       return 1;
-               }
-       }
-       return 0;
-}
-
-
 void CtdlRegisterCleanupHook(void (*fcn_ptr) (void))
 {
 
@@ -697,13 +697,12 @@ int PerformFixedOutputHooks(char *content_type, char *content, int content_lengt
 
 
 
-void CtdlRegisterXmsgHook(int (*fcn_ptr) (char *, char *, char *), int order)
+void CtdlRegisterXmsgHook(int (*fcn_ptr) (char *, char *, char *, char *), int order)
 {
 
        struct XmsgFunctionHook *newfcn;
 
-       newfcn = (struct XmsgFunctionHook *)
-           malloc(sizeof(struct XmsgFunctionHook));
+       newfcn = (struct XmsgFunctionHook *) malloc(sizeof(struct XmsgFunctionHook));
        newfcn->next = XmsgHookTable;
        newfcn->order = order;
        newfcn->h_function_pointer = fcn_ptr;
@@ -712,7 +711,7 @@ void CtdlRegisterXmsgHook(int (*fcn_ptr) (char *, char *, char *), int order)
 }
 
 
-void CtdlUnregisterXmsgHook(int (*fcn_ptr) (char *, char *, char *), int order)
+void CtdlUnregisterXmsgHook(int (*fcn_ptr) (char *, char *, char *, char *), int order)
 {
        struct XmsgFunctionHook *cur, *p;
 
@@ -1019,7 +1018,7 @@ void PerformDeleteHooks(char *room, long msgnum)
 
 
 
-int PerformXmsgHooks(char *sender, char *recp, char *msg)
+int PerformXmsgHooks(char *sender, char *sender_email, char *recp, char *msg)
 {
        struct XmsgFunctionHook *fcn;
        int total_sent = 0;
@@ -1030,7 +1029,7 @@ int PerformXmsgHooks(char *sender, char *recp, char *msg)
                        if (fcn->order == p) {
                                total_sent +=
                                        (*fcn->h_function_pointer)
-                                               (sender, recp, msg);
+                                               (sender, sender_email, recp, msg);
                        }
                }
                /* Break out of the loop if a higher-priority function
@@ -1043,19 +1042,6 @@ int PerformXmsgHooks(char *sender, char *recp, char *msg)
        return total_sent;
 }
 
-void CtdlRegisterMaintenanceThread(char *name, void *(*thread_proc)(void *arg))
-{
-       struct MaintenanceThreadHook *newfcn;
-
-       newfcn = (struct MaintenanceThreadHook *)
-           malloc(sizeof(struct MaintenanceThreadHook));
-       newfcn->name = name;
-       newfcn->next = MaintenanceThreadHookTable;
-       newfcn->fcn_ptr = thread_proc;
-       MaintenanceThreadHookTable = newfcn;
-
-       lprintf(CTDL_INFO, "Registered a new maintenance thread function\n");
-}