#include <signal.h>
#include <pwd.h>
#include <errno.h>
+#include <syslog.h>
#include <sys/types.h>
#if TIME_WITH_SYS_TIME
#define CTDL_UPGRADE_CALL(module_name) ctdl_module_##module_name##_upgrade ()
-
-/*
- * Prototype for making log entries in Citadel.
- */
-
-void CtdlLogPrintf(enum LogLevel loglevel, const char *format, ...);
-
#define CtdlAideMessage(TEXT, SUBJECT) quickie_message("Citadel",NULL,NULL,AIDEROOM,TEXT,FMT_CITADEL,SUBJECT)
-
/*
* Hook functions available to modules.
*/
void CtdlRegisterCleanupHook(void (*fcn_ptr)(void));
void CtdlUnregisterCleanupHook(void (*fcn_ptr)(void));
+void CtdlRegisterEVCleanupHook(void (*fcn_ptr)(void));
+void CtdlUnregisterEVCleanupHook(void (*fcn_ptr)(void));
+
void CtdlRegisterProtoHook(void (*handler)(char *), char *cmd, char *desc);
void CtdlRegisterServiceHook(int tcp_port,
*/
void CtdlModuleStartCryptoMsgs(char *ok_response, char *nosup_response, char *error_response);
-
-/*
- * Citadel Threads API
- */
-struct CtdlThreadNode *CtdlThreadCreate(char *name, long flags, void *(*thread_func) (void *arg), void *args);
-void CtdlThreadSleep(int secs);
-void CtdlThreadStop(struct CtdlThreadNode *thread);
-int CtdlThreadCheckStop(void);
-/* void CtdlThreadCancel2(struct CtdlThreadNode *thread); Leave this out, it should never be needed */
-const char *CtdlThreadName(const char *name);
-struct CtdlThreadNode *CtdlThreadSelf(void);
-int CtdlThreadGetCount(void);
-int CtdlThreadGetWorkers(void);
-double CtdlThreadGetWorkerAvg(void);
-double CtdlThreadGetLoadAvg(void);
-void CtdlThreadGC(void);
-void CtdlThreadStopAll(void);
-int CtdlThreadSelect(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
-void CtdlThreadAllocTSD(void);
-
-#define CTDLTHREAD_BIGSTACK 0x0001
-#define CTDLTHREAD_WORKER 0x0002
-
-/* Macros to speed up getting outr thread */
-
-#define MYCURSORS (((ThreadTSD*)pthread_getspecific(ThreadKey))->cursors)
-#define MYTID (((ThreadTSD*)pthread_getspecific(ThreadKey))->tid)
-#define CT (((ThreadTSD*)pthread_getspecific(ThreadKey))->self)
-#define CTP ((ThreadTSD*)pthread_getspecific(ThreadKey))
-
-/** return the current context list as an array and do it in a safe manner
+/* return the current context list as an array and do it in a safe manner
* The returned data is a copy so only reading is useful
* The number of contexts is returned in count.
* Beware, this does not copy any of the data pointed to by the context.
*/
struct CitContext *CtdlGetContextArray (int *count);
void CtdlFillSystemContext(struct CitContext *context, char *name);
-void CtdlClearSystemContext(void);
int CtdlTrySingleUser(void);
void CtdlEndSingleUser(void);
int CtdlWantSingleUser(void);
* API declarations from serv_extensions.h
*/
void CtdlModuleDoSearch(int *num_msgs, long **search_msgs, const char *search_string, const char *func_name);
+
/*
- * Global system configuration. Don't change anything here. It's all in dtds/config-defs.h now.
+ * Global system configuration
*/
struct config {
-#include "datadefinitions.h"
-#include "dtds/config-defs.h"
-#include "undef_data.h"
+ char c_nodename[16]; /* short name of this node on a Citadel network */
+ char c_fqdn[64]; /* this site's fully qualified domain name */
+ char c_humannode[21]; /* human-readable site name */
+ char c_phonenum[16]; /* telephone number */
+ uid_t c_ctdluid; /* uid of posix account under which Citadel will run */
+ char c_creataide; /* 1 = creating a room auto-grants room aide privileges */
+ int c_sleeping; /* watchdog timer (seconds) */
+ char c_initax; /* initial access level for new users */
+ char c_regiscall; /* after c_regiscall logins user will be asked to register */
+ char c_twitdetect; /* automatically move messages from problem users to trashcan */
+ char c_twitroom[ROOMNAMELEN]; /* name of trashcan */
+ char c_moreprompt[80]; /* paginator prompt */
+ char c_restrict; /* require per-user permission to send Internet mail */
+ long c_niu_1;
+ char c_site_location[32]; /* geographic location of this Citadel site */
+ char c_sysadm[26]; /* name of system administrator */
+ char c_niu_2[15];
+ int c_niu_3;
+ int c_maxsessions; /* maximum number of concurrent sessions allowed */
+ char c_ip_addr[20]; /* bind address for listening sockets */
+ int c_port_number; /* port number for Citadel protocol (usually 504) */
+ int c_niu_4;
+ struct ExpirePolicy c_ep; /* default expire policy for the entire site */
+ int c_userpurge; /* user purge time (in days) */
+ int c_roompurge; /* room purge time (in days) */
+ char c_logpages[ROOMNAMELEN];
+ char c_createax;
+ long c_maxmsglen;
+ int c_min_workers;
+ int c_max_workers;
+ int c_pop3_port;
+ int c_smtp_port;
+ int c_rfc822_strict_from;
+ int c_aide_zap;
+ int c_imap_port;
+ time_t c_net_freq;
+ char c_disable_newu;
+ char c_enable_fulltext;
+ char c_baseroom[ROOMNAMELEN];
+ char c_aideroom[ROOMNAMELEN];
+ int c_purge_hour;
+ struct ExpirePolicy c_mbxep;
+ char c_ldap_host[128];
+ int c_ldap_port;
+ char c_ldap_base_dn[256];
+ char c_ldap_bind_dn[256];
+ char c_ldap_bind_pw[256];
+ int c_msa_port;
+ int c_imaps_port;
+ int c_pop3s_port;
+ int c_smtps_port;
+ char c_auto_cull;
+ char c_instant_expunge;
+ char c_allow_spoofing;
+ char c_journal_email;
+ char c_journal_pubmsgs;
+ char c_journal_dest[128];
+ char c_default_cal_zone[128];
+ int c_pftcpdict_port;
+ int c_managesieve_port;
+ int c_auth_mode;
+ char c_funambol_host[256];
+ int c_funambol_port;
+ char c_funambol_source[256];
+ char c_funambol_auth[256];
+ char c_rbl_at_greeting;
+ char c_master_user[32];
+ char c_master_pass[32];
+ char c_pager_program[256];
+ char c_imap_keep_from;
+ int c_xmpp_c2s_port;
+ int c_xmpp_s2s_port;
+ time_t c_pop3_fetch;
+ time_t c_pop3_fastest;
+ int c_spam_flag_only;
+ int c_guest_logins;
};
extern struct config config;