}
}
-void cmd_time(void)
+void cmd_time(char *argbuf)
{
time_t tv;
struct tm tmp;
/*
* get the paginator prompt
*/
-void cmd_more(void) {
+void cmd_more(char *argbuf) {
cprintf("%d %s\n", CIT_OK, config.c_moreprompt);
}
/*
* Halt the server without exiting the server process.
*/
-void cmd_halt(void) {
+void cmd_halt(char *argbuf) {
if (CtdlAccessCheck(ac_aide)) return;
+void cmd_noop(char *argbuf)
+{
+ cprintf("%d%cok\n", CIT_OK, CtdlCheckExpress() );
+}
+
+void cmd_qnop(char *argbuf)
+{
+ /* do nothing, this command returns no response */
+}
+
+void cmd_quit(char *argbuf)
+{
+ cprintf("%d Goodbye.\n", CIT_OK);
+ CC->kill_me = 1;
+}
+
+void cmd_lout(char *argbuf)
+{
+ if (CC->logged_in)
+ logout();
+ cprintf("%d logged out.\n", CIT_OK);
+}
/*
* This loop recognizes all server commands.
CC->cs_flags &= ~CS_POSTING;
}
- if (!strncasecmp(cmdbuf, "NOOP", 4)) {
- cprintf("%d%cok\n", CIT_OK, CtdlCheckExpress() );
- }
-
- else if (!strncasecmp(cmdbuf, "QNOP", 4)) {
- /* do nothing, this command returns no response */
- }
-
- else if (!strncasecmp(cmdbuf,"QUIT",4)) {
- cprintf("%d Goodbye.\n", CIT_OK);
- CC->kill_me = 1;
- }
-
- else if (!strncasecmp(cmdbuf,"ASYN",4)) {
- cmd_asyn(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"LOUT",4)) {
- if (CC->logged_in) logout();
- cprintf("%d logged out.\n", CIT_OK);
- }
-
- else if (!strncasecmp(cmdbuf,"USER",4)) {
- cmd_user(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"PASS",4)) {
- cmd_pass(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"NEWU",4)) {
- cmd_newu(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"CREU",4)) {
- cmd_creu(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"SETP",4)) {
- cmd_setp(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"LRMS",4)) {
- cmd_lrms(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"LKRA",4)) {
- cmd_lkra(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"LKRN",4)) {
- cmd_lkrn(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"LKRO",4)) {
- cmd_lkro(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"LZRM",4)) {
- cmd_lzrm(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"LPRM",4)) {
- cmd_lprm(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"GETU",4)) {
- cmd_getu(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"SETU",4)) {
- cmd_setu(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"GOTO",4)) {
- cmd_goto(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"MSGS",4)) {
- cmd_msgs(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"WHOK",4)) {
- cmd_whok(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"RDIR",4)) {
- cmd_rdir(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"EUID",4)) {
- cmd_euid(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"MSG0",4)) {
- cmd_msg0(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"MSG2",4)) {
- cmd_msg2(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"MSG3",4)) {
- cmd_msg3(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"MSG4",4)) {
- cmd_msg4(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"MSGP",4)) {
- cmd_msgp(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"OPNA",4)) {
- cmd_opna(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"DLAT",4)) {
- cmd_dlat(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"INFO",4)) {
- cmd_info(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"SLRP",4)) {
- cmd_slrp(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"INVT",4)) {
- cmd_invt_kick(&cmdbuf[5], 1);
- }
-
- else if (!strncasecmp(cmdbuf,"KICK",4)) {
- cmd_invt_kick(&cmdbuf[5], 0);
- }
-
- else if (!strncasecmp(cmdbuf,"GETR",4)) {
- cmd_getr(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"SETR",4)) {
- cmd_setr(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"GETA",4)) {
- cmd_geta(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"SETA",4)) {
- cmd_seta(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"ENT0",4)) {
- cmd_ent0(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"RINF",4)) {
- cmd_rinf();
- }
-
- else if (!strncasecmp(cmdbuf,"DELE",4)) {
- cmd_dele(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"KILL",4)) {
- cmd_kill(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"CRE8",4)) {
- cmd_cre8(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"MOVE",4)) {
- cmd_move(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"FORG",4)) {
- cmd_forg();
- }
-
- else if (!strncasecmp(cmdbuf,"MESG",4)) {
- cmd_mesg(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"EMSG",4)) {
- cmd_emsg(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"GNUR",4)) {
- cmd_gnur();
- }
-
- else if (!strncasecmp(cmdbuf,"VALI",4)) {
- cmd_vali(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"EINF",4)) {
- cmd_einf(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"LIST",4)) {
- cmd_list(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"CHEK",4)) {
- cmd_chek();
- }
-
- else if (!strncasecmp(cmdbuf,"DELF",4)) {
- cmd_delf(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"MOVF",4)) {
- cmd_movf(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"OPEN",4)) {
- cmd_open(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"CLOS",4)) {
- cmd_clos();
- }
-
- else if (!strncasecmp(cmdbuf,"UOPN",4)) {
- cmd_uopn(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"UCLS",4)) {
- cmd_ucls(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"READ",4)) {
- cmd_read(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"WRIT",4)) {
- cmd_writ(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"QUSR",4)) {
- cmd_qusr(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"ECHO",4)) {
- cmd_echo(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"OIMG",4)) {
- cmd_oimg(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"MORE",4)) {
- cmd_more();
- }
-
- else if (!strncasecmp(cmdbuf,"NDOP",4)) {
- cmd_ndop(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"NUOP",4)) {
- cmd_nuop(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"LFLR",4)) {
- cmd_lflr();
- }
-
- else if (!strncasecmp(cmdbuf,"CFLR",4)) {
- cmd_cflr(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"KFLR",4)) {
- cmd_kflr(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"EFLR",4)) {
- cmd_eflr(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"IDEN",4)) {
- cmd_iden(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"IPGM",4)) {
- cmd_ipgm(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"TERM",4)) {
- cmd_term(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"DOWN",4)) {
- cmd_down(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"HALT",4)) {
- cmd_halt();
- }
-
- else if (!strncasecmp(cmdbuf,"SCDN",4)) {
- cmd_scdn(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf, "UIMG", 4)) {
- cmd_uimg(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf, "TIME", 4)) {
- cmd_time();
- }
-
- else if (!strncasecmp(cmdbuf, "AGUP", 4)) {
- cmd_agup(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf, "ASUP", 4)) {
- cmd_asup(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf, "GPEX", 4)) {
- cmd_gpex(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf, "SPEX", 4)) {
- cmd_spex(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf, "CONF", 4)) {
- cmd_conf(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf, "SEEN", 4)) {
- cmd_seen(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf, "GTSN", 4)) {
- cmd_gtsn(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf, "VIEW", 4)) {
- cmd_view(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf, "ISME", 4)) {
- cmd_isme(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf, "RENU", 4)) {
- cmd_renu(&cmdbuf[5]);
- }
-
- else if (!DLoader_Exec_Cmd(cmdbuf)) {
+ if (!DLoader_Exec_Cmd(cmdbuf)) {
cprintf("%d Unrecognized or unsupported command.\n", ERROR + CMD_NOT_SUPPORTED);
- }
+ }
unbuffer_output();
void do_async_loop(void) {
PerformSessionHooks(EVT_ASYNC);
}
+
+
+
+
+
+
+
+/*****************************************************************************/
+/* MODULE INITIALIZATION STUFF */
+/*****************************************************************************/
+
+CTDL_MODULE_INIT(citserver)
+{
+ CtdlRegisterProtoHook(cmd_noop, "NOOP", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_qnop, "QNOP", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_quit, "QUIT", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_lout, "LOUT", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_asyn, "ASYN", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_info, "INFO", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_mesg, "MESG", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_emsg, "EMSG", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_echo, "ECHO", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_more, "MORE", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_iden, "IDEN", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_ipgm, "IPGM", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_term, "TERM", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_down, "DOWN", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_halt, "HALT", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_scdn, "SCDN", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_time, "TIME", "Autoconverted. TODO: document me.");
+ /* return our Subversion id for the Log */
+ return "$Id$";
+}
void RemoveContext (struct CitContext *);
void set_wtmpsupp (char *newtext);
void set_wtmpsupp_to_current_room(void);
-void cmd_info (char *cmdbuf);
-void cmd_time (void);
-void cmd_iden (char *argbuf);
-void cmd_mesg (char *mname);
-void cmd_emsg (char *mname);
-void cmd_term (char *cmdbuf);
-void cmd_more (void);
-void cmd_echo (char *etext);
-void cmd_ipgm (char *argbuf);
-void cmd_down (char *argbuf);
-void cmd_halt (void);
-void cmd_scdn (char *argbuf);
-void cmd_extn (char *argbuf);
void do_command_loop(void);
void do_async_loop(void);
void begin_session(struct CitContext *con);
extern time_t server_startup_time;
+
#include "snprintf.h"
#endif
+#include "ctdl_module.h"
+
struct CitControl CitControl;
extern struct config config;
FILE *control_fp = NULL;
ERROR + ILLEGAL_VALUE);
}
}
+
+
+/*****************************************************************************/
+/* MODULE INITIALIZATION STUFF */
+/*****************************************************************************/
+
+
+CTDL_MODULE_INIT(control)
+{
+ CtdlRegisterProtoHook(cmd_conf, "CONF", "Autoconverted. TODO: document me.");
+ /* return our Subversion id for the Log */
+ return "$Id$";
+}
#include "control.h"
#include "euidindex.h"
+#include "ctdl_module.h"
+
/*
* The structure of an euidindex record *key* is:
*
cprintf("%d not found\n", ERROR + MESSAGE_NOT_FOUND);
}
-
+CTDL_MODULE_INIT(euidindex)
+{
+ CtdlRegisterProtoHook(cmd_euid, "EUID", "Autoconverted. TODO: document me.");
+ /* return our Subversion id for the Log */
+ return "$Id$";
+}
#include "snprintf.h"
#endif
+#include "ctdl_module.h"
+
/*
* network_talking_to() -- concurrency checker
*/
/*
* close the download file
*/
-void cmd_clos(void)
+void cmd_clos(char *cmdbuf)
{
char buf[256];
CC->upload_type = UPL_NET;
cprintf("%d Ok\n", CIT_OK);
}
+
+
+/*****************************************************************************/
+/* MODULE INITIALIZATION STUFF */
+/*****************************************************************************/
+
+CTDL_MODULE_INIT(file_ops)
+{
+ CtdlRegisterProtoHook(cmd_delf, "DELF", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_movf, "MOVF", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_open, "OPEN", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_clos, "CLOS", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_uopn, "UOPN", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_ucls, "UCLS", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_read, "READ", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_writ, "WRIT", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_oimg, "OIMG", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_ndop, "NDOP", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_nuop, "NUOP", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_uimg, "UIMG", "Autoconverted. TODO: document me.");
+ /* return our Subversion id for the Log */
+ return "$Id$";
+}
/* $Id$ */
-void cmd_delf (char *filename);
-void cmd_movf (char *cmdbuf);
-void cmd_netf (char *cmdbuf);
void OpenCmdResult (char *, const char *);
-void cmd_open (char *cmdbuf);
-void cmd_oimg (char *cmdbuf);
-void cmd_uopn (char *cmdbuf);
-void cmd_uimg (char *cmdbuf);
-void cmd_clos (void);
void abort_upl (struct CitContext *who);
-void cmd_ucls (char *cmd);
-void cmd_read (char *cmdbuf);
-void cmd_writ (char *cmdbuf);
-void cmd_ndop (char *cmdbuf);
-void cmd_nuop (char *cmdbuf);
+
int network_talking_to(char *nodename, int operation);
/*
void CtdlUnregisterCleanupHook(void (*fcn_ptr)(void));
void CtdlRegisterProtoHook(void (*handler)(char *), char *cmd, char *desc);
-void CtdlUnregisterProtoHook(void (*handler)(char *), char *cmd);
void CtdlRegisterServiceHook(int tcp_port,
char *sockpath,
CtdlLogPrintf (CTDL_INFO, "Initialise modules, CtdlThreads enabled.\n");
else
CtdlLogPrintf (CTDL_INFO, "Initialise modules, CtdlThreads not yet enabled.\n");
+/* static server initialization: */
+ CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(citserver));
+ CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(control));
+ CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(euidindex));
+ CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(file_ops));
+ CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(msgbase));
+ CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(policy));
+ CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(room_ops));
+ CtdlLogPrintf (CTDL_INFO, "%s\n", CTDL_INIT_CALL(user_ops));
+/* dynamic modules: */
+
EOF
extern size_t nSizErrmsg;
void initialise_modules (int threading);
void upgrade_modules(void);
+
+ CTDL_MODULE_INIT(citserver);
+ CTDL_MODULE_INIT(control);
+ CTDL_MODULE_INIT(euidindex);
+ CTDL_MODULE_INIT(file_ops);
+ CTDL_MODULE_INIT(msgbase);
+ CTDL_MODULE_INIT(policy);
+ CTDL_MODULE_INIT(room_ops);
+ CTDL_MODULE_INIT(user_ops);
EOF
for i in serv_*.c
size_t reqsize;
icalproperty *p;
struct icaltimetype t;
- icaltimezone *attached_zones[5] = { NULL, NULL, NULL, NULL, NULL };
+ const icaltimezone *attached_zones[5] = { NULL, NULL, NULL, NULL, NULL };
int i;
- icaltimezone *z;
+ const icaltimezone *z;
int num_zones_attached = 0;
int zone_already_attached;
void destruct_ssl(void)
{
int a;
- CtdlUnregisterProtoHook(cmd_stls, "STLS");
- CtdlUnregisterProtoHook(cmd_gtls, "GTLS");
for (a = 0; a < CRYPTO_num_locks(); a++)
free(SSLCritters[a]);
free (SSLCritters);
#include "serv_network.h"
#include "threads.h"
+#include "ctdl_module.h"
+
long config_msgnum;
struct addresses_to_be_filed *atbf = NULL;
}
}
+
+
+/*****************************************************************************/
+/* MODULE INITIALIZATION STUFF */
+/*****************************************************************************/
+
+CTDL_MODULE_INIT(msgbase)
+{
+ CtdlRegisterProtoHook(cmd_msgs, "MSGS", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_msg0, "MSG0", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_msg2, "MSG2", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_msg3, "MSG3", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_msg4, "MSG4", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_msgp, "MSGP", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_opna, "OPNA", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_dlat, "DLAT", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_ent0, "ENT0", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_dele, "DELE", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_move, "MOVE", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_isme, "ISME", "Autoconverted. TODO: document me.");
+ /* return our Subversion id for the Log */
+ return "$Id$";
+}
#ifndef MSGBASE_H
#define MSGBASE_H
-#define aide_message(text, subject) quickie_message("Citadel",NULL,NULL,AIDEROOM,text,0,subject)
+#define aide_message(text, subject) quickie_message("Citadel",NULL,NULL,AIDEROOM,text,FMT_CITADEL,subject)
enum {
MSGS_ALL,
#include "msgbase.h"
#include "citserver.h"
+#include "ctdl_module.h"
/*
* Retrieve the applicable expire policy for a specific room
}
+/*****************************************************************************/
+/* MODULE INITIALIZATION STUFF */
+/*****************************************************************************/
+CTDL_MODULE_INIT(policy)
+{
+ CtdlRegisterProtoHook(cmd_gpex, "GPEX", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_spex, "SPEX", "Autoconverted. TODO: document me.");
+ /* return our Subversion id for the Log */
+ return "$Id$";
+}
#include "citadel_dirs.h"
#include "threads.h"
+#include "ctdl_module.h"
+
struct floor *floorcache[MAXFLOORS];
/*
/*
* retrieve info file for this room
*/
-void cmd_rinf(void)
+void cmd_rinf(char *gargs)
{
char filename[128];
char buf[SIZ];
/*
* cmd_lflr() - List all known floors
*/
-void cmd_lflr(void)
+void cmd_lflr(char *gargs)
{
int a;
struct floor flbuf;
cprintf("%d Ok\n", CIT_OK);
}
+
+
+/*****************************************************************************/
+/* MODULE INITIALIZATION STUFF */
+/*****************************************************************************/
+
+CTDL_MODULE_INIT(room_ops)
+{
+ CtdlRegisterProtoHook(cmd_lrms, "LRMS", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_lkra, "LKRA", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_lkrn, "LKRN", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_lkro, "LKRO", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_lzrm, "LZRM", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_lprm, "LPRM", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_goto, "GOTO", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_whok, "WHOK", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_rdir, "RDIR", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_getr, "GETR", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_setr, "SETR", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_geta, "GETA", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_seta, "SETA", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_rinf, "RINF", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_kill, "KILL", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_cre8, "CRE8", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_einf, "EINF", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_lflr, "LFLR", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_cflr, "CFLR", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_kflr, "KFLR", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_eflr, "EFLR", "Autoconverted. TODO: document me.");
+ /* return our Subversion id for the Log */
+ return "$Id$";
+}
void putfloor (struct floor *flbuf, int floor_num);
void lputfloor (struct floor *flbuf, int floor_num);
int sort_msglist (long int *listptrs, int oldcount);
-void cmd_lrms (char *argbuf);
-void cmd_lkra (char *argbuf);
-void cmd_lkrn (char *argbuf);
-void cmd_lkro (char *argbuf);
-void cmd_lzrm (char *argbuf);
-void cmd_lprm (char *argbuf);
void usergoto (char *where, int display_result, int transiently,
int *msgs, int *new);
-void cmd_goto (char *gargs);
-void cmd_whok (char *cmdbuf);
-void cmd_rdir (char *cmdbuf);
-void cmd_getr (char *cmdbuf);
-void cmd_setr (char *args);
-void cmd_geta (char *cmdbuf);
-void cmd_seta (char *new_ra);
-void cmd_rinf (void);
-void cmd_kill (char *argbuf);
unsigned create_room(char *new_room_name,
int new_room_type,
char *new_room_pass,
int really_create,
int avoid_access,
int new_room_view);
-void cmd_cre8 (char *args);
-void cmd_einf (char *ok);
-void cmd_lflr (void);
-void cmd_cflr (char *argbuf);
-void cmd_kflr (char *argbuf);
-void cmd_eflr (char *argbuf);
void ForEachRoom(void (*CallBack)(struct ctdlroom *EachRoom, void *out_data),
void *in_data);
void schedule_room_for_deletion(struct ctdlroom *qrbuf);
crr_invalid_floor, /* target floor does not exist */
crr_access_denied /* not allowed to edit this room */
};
+
+
struct ProtoFunctionHook {
void (*handler) (char *cmdbuf);
- char *cmd;
- char *desc;
- struct ProtoFunctionHook *next;
-} *ProtoHookList = NULL;
+ const char *cmd;
+ const char *desc;
+};
+
+HashList *ProtoHookList = NULL;
struct DirectoryServiceHook {
int DLoader_Exec_Cmd(char *cmdbuf)
{
+ void *vP;
struct ProtoFunctionHook *p;
- for (p = ProtoHookList; p; p = p->next) {
- if (!strncasecmp(cmdbuf, p->cmd, 4)) {
- p->handler(&cmdbuf[5]);
- return 1;
- }
+ if (GetHash(ProtoHookList, cmdbuf, 4, &vP) && (vP != NULL)) {
+ p = (struct ProtoFunctionHook*) vP;
+ p->handler(&cmdbuf[5]);
+ return 1;
}
return 0;
}
+int FourHash(const char *key, long length)
+{
+ int i;
+ int ret = 0;
+ const unsigned char *ptr = (const unsigned char*)key;
+
+ for (i = 0; i < 4; i++, ptr ++)
+ ret = (ret << 8) | *ptr;
+
+ return ret;
+}
void CtdlRegisterProtoHook(void (*handler) (char *), char *cmd, char *desc)
{
struct ProtoFunctionHook *p;
+ if (ProtoHookList == NULL)
+ ProtoHookList = NewHash (1, FourHash);
+
+
p = (struct ProtoFunctionHook *)
malloc(sizeof(struct ProtoFunctionHook));
p->handler = handler;
p->cmd = cmd;
p->desc = desc;
- p->next = ProtoHookList;
- ProtoHookList = p;
- CtdlLogPrintf(CTDL_INFO, "Registered server command %s (%s)\n", cmd, desc);
-}
-
-void CtdlUnregisterProtoHook(void (*handler) (char *), char *cmd)
-{
- struct ProtoFunctionHook *cur = NULL;
- struct ProtoFunctionHook *p = NULL;
- struct ProtoFunctionHook *lastcur = NULL;
-
- for (cur = ProtoHookList;
- cur != NULL;
- cur = (cur != NULL)? cur->next: NULL) {
- /* This will also remove duplicates if any */
- while (cur != NULL &&
- handler == cur->handler &&
- !strcmp(cmd, cur->cmd)) {
- CtdlLogPrintf(CTDL_INFO, "Unregistered server command %s (%s)\n",
- cmd, cur->desc);
- p = cur->next;
- if (cur == ProtoHookList) {
- ProtoHookList = p;
- }
- else if (lastcur != NULL)
- {
- lastcur->next = p;
- }
- free(cur);
- cur = p;
- }
- lastcur = cur;
- }
+ Put(ProtoHookList, cmd, 4, p, NULL);
+ CtdlLogPrintf(CTDL_INFO, "Registered server command %s (%s)\n", cmd, desc);
}
void CtdlDestroyProtoHooks(void)
{
- struct ProtoFunctionHook *cur, *p;
- cur = ProtoHookList;
- while (cur != NULL)
- {
- CtdlLogPrintf(CTDL_INFO, "Destroyed server command %s (%s)\n",
- cur->cmd, cur->desc);
- p = cur->next;
- free(cur);
- cur = p;
- }
- ProtoHookList = NULL;
+ DeleteHash(&ProtoHookList);
}
#include "threads.h"
#include "citadel_ldap.h"
+#include "ctdl_module.h"
+
/* These pipes are used to talk to the chkpwd daemon, which is forked during startup */
int chkpwd_write_pipe[2];
int chkpwd_read_pipe[2];
return;
}
+void cmd_invt(char *iuser) {cmd_invt_kick(iuser, 1);}
+void cmd_kick(char *iuser) {cmd_invt_kick(iuser, 0);}
/*
* Forget (Zap) the current room (API call)
/*
* forget (Zap) the current room
*/
-void cmd_forg(void)
+void cmd_forg(char *argbuf)
{
if (CtdlAccessCheck(ac_logged_in)) {
/*
* Get Next Unregistered User
*/
-void cmd_gnur(void)
+void cmd_gnur(char *argbuf)
{
struct cdbdata *cdbus;
struct ctdluser usbuf;
/*
* assorted info we need to check at login
*/
-void cmd_chek(void)
+void cmd_chek(char *argbuf)
{
int mail = 0;
int regis = 0;
cprintf("%d An unknown error occurred.\n", ERROR);
}
+
+
+
+/*****************************************************************************/
+/* MODULE INITIALIZATION STUFF */
+/*****************************************************************************/
+
+
+CTDL_MODULE_INIT(user_ops)
+{
+ CtdlRegisterProtoHook(cmd_user, "USER", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_pass, "PASS", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_creu, "CREU", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_setp, "SETP", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_getu, "GETU", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_setu, "SETU", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_slrp, "SLRP", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_invt, "INVT", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_kick, "KICK", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_forg, "FORG", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_gnur, "GNUR", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_vali, "VALI", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_list, "LIST", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_chek, "CHEK", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_qusr, "QUSR", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_agup, "AGUP", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_asup, "ASUP", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_seen, "SEEN", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_gtsn, "GTSN", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_view, "VIEW", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_renu, "RENU", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_newu, "NEWU", "Autoconverted. TODO: document me.");
+ /* return our Subversion id for the Log */
+ return "$Id$";
+}
void session_startup (void);
void logged_in_response(void);
void logout (void);
-void cmd_pass (char *buf);
int purge_user (char *pname);
int create_user (char *newusername, int become_user);
void do_login(void);
-void cmd_newu (char *cmdbuf);
-void cmd_creu (char *cmdbuf);
-void cmd_setp (char *new_pw);
-void cmd_getu (char *cmdbuf);
-void cmd_setu (char *new_parms);
-void cmd_slrp (char *new_ptr);
int CtdlInvtKick(char *iuser, int op);
-void cmd_invt_kick (char *iuser, int op);
-void cmd_forg (void);
-void cmd_gnur (void);
-void cmd_vali (char *v_args);
void ForEachUser(void (*CallBack)(struct ctdluser *EachUser, void *out_data),
void *in_data);
void ListThisUser(struct ctdluser *usbuf, void *data);
-void cmd_list (char *);
-void cmd_chek (void);
-void cmd_qusr (char *who);
-void cmd_agup (char *cmdbuf);
-void cmd_asup (char *cmdbuf);
-void cmd_view (char *cmdbuf);
-void cmd_renu (char *cmdbuf);
int NewMailCount(void);
int InitialMailCheck(void);
void put_visit(struct visit *newvisit);
int CtdlForgetThisRoom(void);
-void cmd_seen(char *argbuf);
-void cmd_gtsn(char *argbuf);
+
+void cmd_newu (char *cmdbuf);
void BumpNewMailCounter(long);
void start_chkpwd_daemon(void);