* Revoke access to room when /kicked
authorArt Cancro <ajc@citadel.org>
Mon, 1 Mar 2004 04:08:34 +0000 (04:08 +0000)
committerArt Cancro <ajc@citadel.org>
Mon, 1 Mar 2004 04:08:34 +0000 (04:08 +0000)
citadel/ChangeLog
citadel/serv_chat.c
citadel/user_ops.c
citadel/user_ops.h

index db6a7da4c23b00b16f6036e0b873410e8c6b489d..71fc242cf431ac825a041588008dbd11978c6259 100644 (file)
@@ -1,4 +1,7 @@
  $Log$
+ Revision 614.58  2004/03/01 04:08:34  ajc
+ * Revoke access to room when /kicked
+
  Revision 614.57  2004/02/29 23:26:48  ajc
  * Added /kick command to chat.  /ban coming soon.
 
@@ -5431,3 +5434,4 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
 
 Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
        * Initial CVS import
+
index c4bb1f4249f392ff69e94efa21def556ea726fb3..308b323cd9178f72d137e022598c251d69aaed6d 100644 (file)
@@ -354,9 +354,8 @@ void cmd_chat(char *argbuf)
                                        strptr1 = &cmdbuf[6];
                                        strcat(strptr1, " ");
                                        if ((t_context = find_context(&strptr1))) {
-                                               allwrite(strptr1, 3, CC->curr_user);
                                                if (strcasecmp(CC->curr_user, t_context->curr_user))
-                                                       allwrite(strptr1, 2, t_context->curr_user);
+                                                       allwrite(strptr1, 3, t_context->curr_user);
                                        } else
                                                cprintf(":|User not found.\n");
                                        cprintf("\n");
@@ -389,6 +388,12 @@ void cmd_chat(char *argbuf)
                                                if (!strcmp(&clptr->chat_text[2], KICKEDMSG)) {
                                                        cprintf("000\n");
                                                        CC->cs_flags = CC->cs_flags - CS_CHAT;
+
+                                                       /* Kick user out of room */
+                                                       CtdlInvtKick(CC->user.fullname, 0);
+
+                                                       /* And return to the Lobby */
+                                                       usergoto(config.c_baseroom, 0, 0, NULL, NULL);
                                                        return;
                                                }
                                        }
index a85a553ad8197b60cb3b639df692ac2b5817dd81..2d343ae3caff32ce59a32f56ef97fbd4c63a2f2f 100644 (file)
@@ -1093,16 +1093,48 @@ void cmd_gtsn(char *argbuf) {
 }
 
 
-
 /*
- * INVT and KICK commands
+ * API function for cmd_invt_kick() and anything else that needs to
+ * invite or kick out a user to/from a room.
+ * 
+ * Set iuser to the name of the user, and op to 1=invite or 0=kick
  */
-void cmd_invt_kick(char *iuser, int op)
-                       /* user name */
-{                              /* 1 = invite, 0 = kick out */
+int CtdlInvtKick(char *iuser, int op) {
        struct ctdluser USscratch;
-       char bbb[SIZ];
        struct visit vbuf;
+       char bbb[SIZ];
+
+       if (getuser(&USscratch, iuser) != 0) {
+               return(1);
+       }
+
+       CtdlGetRelationship(&vbuf, &USscratch, &CC->room);
+       if (op == 1) {
+               vbuf.v_flags = vbuf.v_flags & ~V_FORGET & ~V_LOCKOUT;
+               vbuf.v_flags = vbuf.v_flags | V_ACCESS;
+       }
+       if (op == 0) {
+               vbuf.v_flags = vbuf.v_flags & ~V_ACCESS;
+               vbuf.v_flags = vbuf.v_flags | V_FORGET | V_LOCKOUT;
+       }
+       CtdlSetRelationship(&vbuf, &USscratch, &CC->room);
+
+       /* post a message in Aide> saying what we just did */
+       snprintf(bbb, sizeof bbb, "%s %s %s> by %s\n",
+               iuser,
+               ((op == 1) ? "invited to" : "kicked out of"),
+               CC->room.QRname,
+               CC->user.fullname);
+       aide_message(bbb);
+
+       return(0);
+}
+
+
+/*
+ * INVT and KICK commands
+ */
+void cmd_invt_kick(char *iuser, int op) {
 
        /*
         * These commands are only allowed by aides, room aides,
@@ -1125,32 +1157,11 @@ void cmd_invt_kick(char *iuser, int op)
                return;
        }
 
-       if (lgetuser(&USscratch, iuser) != 0) {
+       if (CtdlInvtKick(iuser, op) != 0) {
                cprintf("%d No such user.\n", ERROR + NO_SUCH_USER);
                return;
        }
 
-       CtdlGetRelationship(&vbuf, &USscratch, &CC->room);
-       if (op == 1) {
-               vbuf.v_flags = vbuf.v_flags & ~V_FORGET & ~V_LOCKOUT;
-               vbuf.v_flags = vbuf.v_flags | V_ACCESS;
-       }
-       if (op == 0) {
-               vbuf.v_flags = vbuf.v_flags & ~V_ACCESS;
-               vbuf.v_flags = vbuf.v_flags | V_FORGET | V_LOCKOUT;
-       }
-       CtdlSetRelationship(&vbuf, &USscratch, &CC->room);
-
-       lputuser(&USscratch);
-
-       /* post a message in Aide> saying what we just did */
-       snprintf(bbb, sizeof bbb, "%s %s %s> by %s\n",
-               iuser,
-               ((op == 1) ? "invited to" : "kicked out of"),
-               CC->room.QRname,
-               CC->user.fullname);
-       aide_message(bbb);
-
        cprintf("%d %s %s %s.\n",
                CIT_OK, iuser,
                ((op == 1) ? "invited to" : "kicked out of"),
index de83dc3c453701aa48669440cbbbe3a1df4c7a6f..9d4e8aa015fdbe86f0a3f7817902ab045c6d16f8 100644 (file)
@@ -20,6 +20,7 @@ void cmd_setp (char *new_pw);
 void cmd_getu (void);
 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);