int nologin; /* not allowed to log in */
int is_local_socket; /* set to 1 if client is on unix domain sock */
int curr_view; /* The view type for the current user/room */
+ int is_master; /* Is this session logged in using the master user? */
char net_node[32] ;/* Is the client another Citadel server? */
time_t previous_login; /* Date/time of previous login */
#define EVT_TIMER 50 /* Timer events are called once per minute
and are not tied to any session */
-
+#define EVT_HOUSE 51 /* as needed houskeeping stuff */
/*
* UserFunctionHook extensions are used for any type of hook which implements
* an operation on a user or username (potentially) other than the one
#define EVT_SMTPSCAN 203 /* called before submitting a msg from SMTP */
-
/*
* NetprocFunctionHook extensions are used for hooks which implement handlers
* for incoming network messages.
extern struct 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 *);
+};
+extern struct RoomFunctionHook *RoomHookTable;
+
+
+struct MaintenanceThreadHook {
+ struct MaintenanceThreadHook *next;
+ char *name;
+ void *(*fcn_ptr) (void *arg);
+ pthread_t MaintenanceThread_tid;
+};
+extern struct MaintenanceThreadHook *MaintenanceThreadHookTable;
+
+
/* Defines the relationship of a user to a particular room */
struct visit {