From 13ce2a47219a0d2a57eb303ae9fc451fa7938798 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Wed, 20 Oct 1999 03:42:31 +0000 Subject: [PATCH] * In the wholist, only show if the user viewing the list doesn't know that room. Otherwise show the name. --- citadel/ChangeLog | 5 ++- citadel/citserver.c | 82 +++++++++++++++++++++------------------------ citadel/citserver.h | 3 ++ citadel/room_ops.c | 1 - citadel/room_ops.h | 1 + citadel/serv_chat.c | 16 ++++----- citadel/serv_test.c | 3 +- citadel/server.h | 1 - 8 files changed, 55 insertions(+), 57 deletions(-) diff --git a/citadel/ChangeLog b/citadel/ChangeLog index 767e323d7..0c88877f6 100644 --- a/citadel/ChangeLog +++ b/citadel/ChangeLog @@ -1,4 +1,8 @@ $Log$ +Revision 1.388 1999/10/20 03:42:29 ajc +* In the wholist, only show if the user viewing the list + doesn't know that room. Otherwise show the name. + Revision 1.387 1999/10/20 02:59:22 ajc * Code reorganization. Making it easier to move/copy messages without duplicating existing code. @@ -1324,4 +1328,3 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant Fri Jul 10 1998 Art Cancro * Initial CVS import - diff --git a/citadel/citserver.c b/citadel/citserver.c index 195b42637..307c7276c 100644 --- a/citadel/citserver.c +++ b/citadel/citserver.c @@ -217,36 +217,6 @@ void CtdlAllocUserData(unsigned long requested_sym, size_t num_bytes) -/* - * set_wtmpsupp() - alter the session listing - */ -void set_wtmpsupp(char *newtext) -{ - strncpy(CC->cs_room,newtext,sizeof CC->cs_room); - CC->cs_room[sizeof CC->cs_room - 1] = 0; - time(&CC->cs_lastupdt); - - /* Run any routines registered by loadable modules */ - PerformSessionHooks(EVT_NEWROOM); - } - - -/* - * call set_wtmpsupp() with the name of the current room, modified a bit... - */ -void set_wtmpsupp_to_current_room() { - if (CC->quickroom.QRflags & QR_PRIVATE) { - set_wtmpsupp(""); - } - else if (CC->quickroom.QRflags & QR_MAILBOX) { - set_wtmpsupp(&CC->quickroom.QRname[11]); - } - else { - set_wtmpsupp(CC->quickroom.QRname); - } - } - - /* * cmd_info() - tell the client about this server @@ -441,9 +411,6 @@ void cmd_iden(char *argbuf) } } - lprintf(9, "Setting wtmpsupp\n"); - set_wtmpsupp_to_current_room(); - syslog(LOG_NOTICE,"client %d/%d/%01d.%02d (%s)\n", dev_code, cli_code, @@ -484,7 +451,6 @@ void cmd_stel(char *cmdbuf) CC->cs_flags = CC->cs_flags|CS_STEALTH; } - set_wtmpsupp_to_current_room(); cprintf("%d Ok\n",OK); } @@ -587,6 +553,31 @@ void cmd_emsg(char *mname) } +/* Don't show the names of private rooms unless the viewing + * user also knows the rooms. + */ +void GenerateRoomDisplay(char *real_room, + struct CitContext *viewed, + struct CitContext *viewer) { + + strcpy(real_room, viewed->quickroom.QRname); + if (viewed->quickroom.QRflags & QR_PRIVATE) { + if ( (CtdlRoomAccess(&viewed->quickroom, &viewer->usersupp) + & UA_KNOWN) == 0) { + strcpy(real_room, ""); + } + } + + if (viewed->cs_flags & CS_CHAT) { + while (strlen(real_room) < 14) + strcat(real_room, " "); + + strcpy(&real_room[15], ""); + } + +} + + /* * who's online */ @@ -594,7 +585,9 @@ void cmd_rwho(void) { struct CitContext *cptr; int spoofed = 0; int aide; - char un[40], room[40], host[40], flags[5]; + char un[40]; + char real_room[ROOMNAMELEN], room[ROOMNAMELEN]; + char host[40], flags[5]; aide = CC->usersupp.axlevel >= 6; cprintf("%d%c \n", LISTING_FOLLOWS, check_express() ); @@ -625,14 +618,15 @@ void cmd_rwho(void) { else strcpy(host, cptr->cs_host); - if (cptr->fake_roomname[0]) - { - strcpy(room, cptr->fake_roomname); - spoofed = 1; + GenerateRoomDisplay(real_room, cptr, CC); + + if (cptr->fake_roomname[0]) { + strcpy(room, cptr->fake_roomname); + spoofed = 1; + } + else { + strcpy(room, real_room); } - else - strcpy(room, cptr->cs_room); - if ((aide) && (spoofed)) strcat(flags, "+"); @@ -651,7 +645,8 @@ void cmd_rwho(void) { if ((spoofed) && (aide)) { cprintf("%d|%s|%s|%s|%s|%ld|%s|%s\n", - cptr->cs_pid, cptr->curr_user, cptr->cs_room, + cptr->cs_pid, cptr->curr_user, + real_room, cptr->cs_host, cptr->cs_clientname, (long)(cptr->lastidle), cptr->lastcmdname, flags); @@ -831,7 +826,6 @@ void *context_loop(struct CitContext *con) strcpy(CC->curr_user,"(not logged in)"); strcpy(CC->net_node,""); snprintf(CC->temp, sizeof CC->temp, tmpnam(NULL)); - strcpy(CC->cs_room, "(no room)"); strncpy(CC->cs_host, config.c_fqdn, sizeof CC->cs_host); CC->cs_host[sizeof CC->cs_host - 1] = 0; len = sizeof sin; diff --git a/citadel/citserver.h b/citadel/citserver.h index 61b832647..53a7801f2 100644 --- a/citadel/citserver.h +++ b/citadel/citserver.h @@ -28,6 +28,9 @@ void *CtdlGetUserData(unsigned long requested_sym); void CtdlAllocUserData(unsigned long requested_sym, size_t num_bytes); int CtdlGetDynamicSymbol(void); void enter_housekeeping_cmd(char *); +void GenerateRoomDisplay(char *real_room, + struct CitContext *viewed, + struct CitContext *viewer); extern int do_defrag; diff --git a/citadel/room_ops.c b/citadel/room_ops.c index ebf81401e..753e863cd 100644 --- a/citadel/room_ops.c +++ b/citadel/room_ops.c @@ -679,7 +679,6 @@ void usergoto(char *where, int display_result) rmailflag, raideflag, newmailcount, CC->quickroom.QRfloor); - set_wtmpsupp_to_current_room(); } diff --git a/citadel/room_ops.h b/citadel/room_ops.h index 537bea4a1..3325dda87 100644 --- a/citadel/room_ops.h +++ b/citadel/room_ops.h @@ -46,3 +46,4 @@ void assoc_file_name(char *buf, struct quickroom *qrbuf, char *prefix); void delete_room(struct quickroom *qrbuf); void list_roomname(struct quickroom *qrbuf); int is_noneditable(struct quickroom *qrbuf); +int CtdlRoomAccess(struct quickroom *roombuf, struct usersupp *userbuf); diff --git a/citadel/serv_chat.c b/citadel/serv_chat.c index 9a3813f7d..8328259a3 100644 --- a/citadel/serv_chat.c +++ b/citadel/serv_chat.c @@ -159,13 +159,14 @@ void do_chat_listing(int allflag) { struct CitContext *ccptr; int count = 0; + char roomname[ROOMNAMELEN]; if ((allflag == 0) || (allflag == 1)) cprintf(":|\n:| Users currently in chat:\n"); begin_critical_section(S_SESSION_TABLE); for (ccptr = ContextList; ccptr != NULL; ccptr = ccptr->next) { - if (!strcasecmp(ccptr->cs_room, "")) ++count; - if ((!strcasecmp(ccptr->cs_room, "")) + if (ccptr->cs_flags & CS_CHAT) ++count; + if ((ccptr->cs_flags & CS_CHAT) && ((ccptr->cs_flags & CS_STEALTH) == 0)) { if ((allflag == 0) || (allflag == 1)) cprintf(":| %-25s <%s>\n", (ccptr->fake_username[0]) ? ccptr->fake_username : ccptr->curr_user, ccptr->chat_room); @@ -175,9 +176,12 @@ void do_chat_listing(int allflag) if (allflag == 1) { cprintf(":|\n:| Users not in chat:\n"); for (ccptr = ContextList; ccptr != NULL; ccptr = ccptr->next) { - if ((strcasecmp(ccptr->cs_room, "")) + GenerateRoomDisplay(roomname, ccptr, CC); + if (((ccptr->cs_flags & CS_CHAT) == 0) && ((ccptr->cs_flags & CS_STEALTH) == 0)) { - cprintf(":| %-25s <%s>:\n", (ccptr->fake_username[0]) ? ccptr->fake_username : ccptr->curr_user, (ccptr->fake_roomname[0]) ? ccptr->fake_roomname : ccptr->cs_room); + cprintf(":| %-25s <%s>:\n", + (ccptr->fake_username[0]) ? ccptr->fake_username : ccptr->curr_user, + roomname); } } } @@ -199,7 +203,6 @@ void cmd_chat(char *argbuf) char cmdbuf[256]; char *un; char *strptr1; - char hold_cs_room[ROOMNAMELEN]; int MyLastMsg, ThisLastMsg; struct ChatLine *clptr; struct CitContext *t_context; @@ -211,9 +214,7 @@ void cmd_chat(char *argbuf) } strcpy(CC->chat_room, "Main room"); - safestrncpy(hold_cs_room, CC->cs_room, sizeof hold_cs_room); CC->cs_flags = CC->cs_flags | CS_CHAT; - set_wtmpsupp(""); cprintf("%d Entering chat mode (type '/help' for available commands)\n", START_CHAT_MODE); @@ -258,7 +259,6 @@ void cmd_chat(char *argbuf) sleep(1); cprintf("000\n"); CC->cs_flags = CC->cs_flags - CS_CHAT; - set_wtmpsupp(hold_cs_room); return; } if ((!strcasecmp(cmdbuf, "/help")) diff --git a/citadel/serv_test.c b/citadel/serv_test.c index 8da2e2e47..7601cf215 100644 --- a/citadel/serv_test.c +++ b/citadel/serv_test.c @@ -36,8 +36,7 @@ void CleanupTest(void) { } void NewRoomTest(void) { - lprintf(9, "--- test module was told we're now in %s ---\n", - CC->cs_room); + lprintf(9, "--- test module was told we're now in a new room ---\n"); } void SessionStartTest(void) { diff --git a/citadel/server.h b/citadel/server.h index 82113952d..2f977a9d9 100644 --- a/citadel/server.h +++ b/citadel/server.h @@ -67,7 +67,6 @@ struct CitContext { int n_crit; /* number of critical sections open */ int client_socket; int cs_pid; /* session ID */ - char cs_room[ROOMNAMELEN]; /* current room */ time_t cs_lastupdt; /* time of last update */ time_t lastcmd; /* time of last command executed */ time_t lastidle; /* For computing idle time */ -- 2.30.2