#include <pwd.h>
#include <errno.h>
#include <sys/types.h>
-#include <sys/time.h>
+
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+#endif
+
#include <sys/wait.h>
#include <string.h>
#include <limits.h>
#include "citadel.h"
#include "server.h"
-#include <time.h>
#include "sysdep_decls.h"
#include "citserver.h"
#include "support.h"
#include "config.h"
#include "control.h"
-#include "dynloader.h"
+#include "serv_extensions.h"
#include "room_ops.h"
#include "user_ops.h"
#include "policy.h"
int aide;
char un[40];
char real_room[ROOMNAMELEN], room[ROOMNAMELEN];
- char host[40], flags[5];
+ char host[64], flags[5];
- aide = CC->usersupp.axlevel >= 6;
+ aide = CC->user.axlevel >= 6;
cprintf("%d%c \n", LISTING_FOLLOWS, CtdlCheckExpress() );
for (cptr = ContextList; cptr != NULL; cptr = cptr->next)
cptr->cs_pid, un, room,
host, cptr->cs_clientname,
(long)(cptr->lastidle),
- cptr->lastcmdname, flags);
+ cptr->lastcmdname, flags
+ );
if ((user_spoofed) && (aide)) {
cprintf("%s|", cptr->curr_user);
cprintf("|");
}
- cprintf("\n");
+ cprintf("%d\n", cptr->logged_in);
}
}
*/
void cmd_rchg(char *argbuf)
{
- char newroomname[SIZ];
+ char newroomname[ROOMNAMELEN];
- extract(newroomname, argbuf, 0);
+ extract_token(newroomname, argbuf, 0, '|', sizeof newroomname);
newroomname[ROOMNAMELEN-1] = 0;
if (strlen(newroomname) > 0) {
safestrncpy(CC->fake_roomname, newroomname,
sizeof(CC->fake_roomname) );
- }
+ }
else {
- strcpy(CC->fake_roomname, "");
- }
- cprintf("%d OK\n", OK);
+ safestrncpy(CC->fake_roomname, "", sizeof CC->fake_roomname);
+ }
+ cprintf("%d OK\n", CIT_OK);
}
/*
*/
void cmd_hchg(char *argbuf)
{
- char newhostname[SIZ];
+ char newhostname[64];
- extract(newhostname, argbuf, 0);
+ extract_token(newhostname, argbuf, 0, '|', sizeof newhostname);
if (strlen(newhostname) > 0) {
safestrncpy(CC->fake_hostname, newhostname,
sizeof(CC->fake_hostname) );
- }
+ }
else {
- strcpy(CC->fake_hostname, "");
- }
- cprintf("%d OK\n", OK);
+ safestrncpy(CC->fake_hostname, "", sizeof CC->fake_hostname);
+ }
+ cprintf("%d OK\n", CIT_OK);
}
void cmd_uchg(char *argbuf)
{
- char newusername[SIZ];
+ char newusername[USERNAME_SIZE];
- extract(newusername, argbuf, 0);
+ extract_token(newusername, argbuf, 0, '|', sizeof newusername);
if (CtdlAccessCheck(ac_aide)) return;
CC->fake_username[0] = '\0';
CC->cs_flags |= CS_STEALTH;
}
- cprintf("%d\n",OK);
+ cprintf("%d\n",CIT_OK);
}
int requested_mode;
requested_mode = extract_int(cmdbuf,0);
- if (requested_mode !=0) requested_mode = 1;
- if (CtdlAccessCheck(ac_aide)) return;
+ if (CtdlAccessCheck(ac_logged_in)) return;
- if (CC->cs_flags & CS_STEALTH) {
- if (requested_mode == 0)
- CC->cs_flags = CC->cs_flags-CS_STEALTH;
- }
- else {
- if (requested_mode == 1)
- CC->cs_flags = CC->cs_flags|CS_STEALTH;
- }
-
- cprintf("%d Ok\n",OK);
+ if (requested_mode == 1) {
+ CC->cs_flags = CC->cs_flags | CS_STEALTH;
+ }
+ if (requested_mode == 0) {
+ CC->cs_flags = CC->cs_flags & ~CS_STEALTH;
}
+ cprintf("%d %d\n", CIT_OK,
+ ((CC->cs_flags & CS_STEALTH) ? 1 : 0) );
+}
+
-char *Dynamic_Module_Init(void)
+char *serv_rwho_init(void)
{
CtdlRegisterProtoHook(cmd_rwho, "RWHO", "Display who is online");
CtdlRegisterProtoHook(cmd_hchg, "HCHG", "Masquerade hostname");