CtdlLogPrintf(CTDL_DEBUG, "Closing socket %d\n", con->client_socket);
close(con->client_socket);
+ /* If using AUTHMODE_LDAP, free the DN */
+ if (con->ldap_dn) {
+ free(con->ldap_dn);
+ con->ldap_dn = NULL;
+ }
+
CtdlLogPrintf(CTDL_DEBUG, "Done with RemoveContext()\n");
}
/*
* cmd_info() - tell the client about this server
*/
-void cmd_info(void) {
+void cmd_info(char *cmdbuf) {
cprintf("%d Server info:\n", LISTING_FOLLOWS);
cprintf("%d\n", CC->cs_pid);
cprintf("%s\n", config.c_nodename);
}
}
-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;
CC->kill_me = 1;
}
else {
- cprintf("%d %s Citadel server ready.\n",
- CIT_OK, config.c_nodename);
+ cprintf("%d %s Citadel server ready.\n", CIT_OK, config.c_nodename);
+ CC->can_receive_im = 1;
}
}
+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, "XYZZY", 5)) {
- cprintf("%d Nothing happens.\n", CIT_OK);
- }
-
- 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();
- }
-
- 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();
- }
-
- else if (!strncasecmp(cmdbuf,"RDIR",4)) {
- cmd_rdir();
- }
-
- 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();
- }
-
- 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();
- }
-
- else if (!strncasecmp(cmdbuf,"SETR",4)) {
- cmd_setr(&cmdbuf[5]);
- }
-
- else if (!strncasecmp(cmdbuf,"GETA",4)) {
- cmd_geta();
- }
-
- 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$";
+}