X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Frwho%2Fserv_rwho.c;h=3dca6c4365de8c0f55f98eab2ff4cea81d97b74a;hb=d22b477ff51efd7f8c74672f6c115ebd9f411c45;hp=23fec4bbf8b1a071f20d51c8152bb8332b14a53f;hpb=d04e4ad0b8ab9e5b71310030704d61b6eceb530b;p=citadel.git diff --git a/citadel/modules/rwho/serv_rwho.c b/citadel/modules/rwho/serv_rwho.c index 23fec4bbf..3dca6c436 100644 --- a/citadel/modules/rwho/serv_rwho.c +++ b/citadel/modules/rwho/serv_rwho.c @@ -2,21 +2,16 @@ * This module implements server commands related to the display and * manipulation of the "Who's online" list. * - * Copyright (c) 1987-2012 by the citadel.org team + * Copyright (c) 1987-2019 by the citadel.org team * - * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 3. - * - * + * This program is open source software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * - * - * */ #include "sysdep.h" @@ -57,6 +52,36 @@ #include "ctdl_module.h" +/* Don't show the names of private rooms unless the viewing + * user also knows the rooms. + */ +void GenerateRoomDisplay(char *real_room, + CitContext *viewed, + CitContext *viewer) { + + int ra; + + strcpy(real_room, viewed->room.QRname); + if (viewed->room.QRflags & QR_MAILBOX) { + strcpy(real_room, &real_room[11]); + } + if (viewed->room.QRflags & QR_PRIVATE) { + CtdlRoomAccess(&viewed->room, &viewer->user, &ra, NULL); + if ( (ra & UA_KNOWN) == 0) { + strcpy(real_room, " "); + } + } + + if (viewed->cs_flags & CS_CHAT) { + while (strlen(real_room) < 14) { + strcat(real_room, " "); + } + strcpy(&real_room[14], ""); + } + +} + + /* * display who's online @@ -65,19 +90,13 @@ void cmd_rwho(char *argbuf) { struct CitContext *nptr; int nContexts, i; int spoofed = 0; - int user_spoofed = 0; - int room_spoofed = 0; - int host_spoofed = 0; int aide; - char un[40]; - char real_room[ROOMNAMELEN], room[ROOMNAMELEN]; - char host[64], flags[5]; + char room[ROOMNAMELEN]; + char flags[5]; /* So that we don't keep the context list locked for a long time * we create a copy of it first */ - - nptr = CtdlGetContextArray(&nContexts) ; if (!nptr) { @@ -87,16 +106,12 @@ void cmd_rwho(char *argbuf) { return; } - aide = CC->user.axlevel >= AxAideU; + aide = ( (CC->user.axlevel >= AxAideU) || (CC->internal_pgm) ) ; cprintf("%d%c \n", LISTING_FOLLOWS, CtdlCheckExpress() ); - for (i=0; ifake_roomname, newroomname, - sizeof(CC->fake_roomname) ); - } - else { - safestrncpy(CC->fake_roomname, "", sizeof CC->fake_roomname); - } - cprintf("%d OK\n", CIT_OK); -} - -/* - * Masquerade hostname - */ -void cmd_hchg(char *argbuf) -{ - char newhostname[64]; - - extract_token(newhostname, argbuf, 0, '|', sizeof newhostname); - if (!IsEmptyStr(newhostname)) { - safestrncpy(CC->fake_hostname, newhostname, - sizeof(CC->fake_hostname) ); - } - else { - safestrncpy(CC->fake_hostname, "", sizeof CC->fake_hostname); - } - cprintf("%d OK\n", CIT_OK); -} - - -/* - * Masquerade username (aides only) - */ -void cmd_uchg(char *argbuf) -{ - - char newusername[USERNAME_SIZE]; - - extract_token(newusername, argbuf, 0, '|', sizeof newusername); - - if (CtdlAccessCheck(ac_aide)) return; - - if (!IsEmptyStr(newusername)) { - CC->cs_flags &= ~CS_STEALTH; - memset(CC->fake_username, 0, 32); - if (strncasecmp(newusername, CC->curr_user, - strlen(CC->curr_user))) - safestrncpy(CC->fake_username, newusername, - sizeof(CC->fake_username)); - } - else { - CC->fake_username[0] = '\0'; - CC->cs_flags |= CS_STEALTH; - } - cprintf("%d\n",CIT_OK); -} - - - - /* * enter or exit "stealth mode" */ @@ -290,10 +195,9 @@ CTDL_MODULE_INIT(rwho) if(!threading) { CtdlRegisterProtoHook(cmd_rwho, "RWHO", "Display who is online"); - CtdlRegisterProtoHook(cmd_hchg, "HCHG", "Masquerade hostname"); - CtdlRegisterProtoHook(cmd_rchg, "RCHG", "Masquerade roomname"); - CtdlRegisterProtoHook(cmd_uchg, "UCHG", "Masquerade username"); CtdlRegisterProtoHook(cmd_stel, "STEL", "Enter/exit stealth mode"); + //CtdlRegisterSessionHook(dead_io_check, EVT_TIMER, PRIO_QUEUE + 50); + } /* return our module name for the log */