/* for internal programs, always do everything */
if (((CC->internal_pgm)) && (roombuf->QRflags & QR_INUSE)) {
- retval = (UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_DELETEALLOWED);
+ retval = (UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_DELETEALLOWED | UA_REPLYALLOWED);
vbuf.v_view = 0;
goto SKIP_EVERYTHING;
}
/* Force the properties of the Aide room */
if (!strcasecmp(roombuf->QRname, config.c_aideroom)) {
if (userbuf->axlevel >= AxAideU) {
- retval = UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_DELETEALLOWED;
+ retval = UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_DELETEALLOWED | UA_REPLYALLOWED;
} else {
retval = 0;
}
/* Also, mailbox owners can delete their messages */
if (roombuf->QRflags & QR_MAILBOX) {
if (userbuf->usernum == atol(roombuf->QRname)) {
- retval = retval | UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_DELETEALLOWED;
+ retval = retval | UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_DELETEALLOWED | UA_REPLYALLOWED;
}
/* An explicit match means the user belongs in this room */
if (vbuf.v_flags & V_ACCESS) {
- retval = retval | UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_DELETEALLOWED;
+ retval = retval | UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_DELETEALLOWED | UA_REPLYALLOWED;
}
}
* - It is a read-only room
*/
int post_allowed = 1;
- if (userbuf->axlevel < AxProbU) post_allowed = 0;
- if ((userbuf->axlevel < AxNetU) && (roombuf->QRflags & QR_NETWORK)) post_allowed = 0;
- if (roombuf->QRflags & QR_READONLY) post_allowed = 0;
+ int reply_allowed = 1;
+ if (userbuf->axlevel < AxProbU) {
+ post_allowed = 0;
+ reply_allowed = 0;
+ }
+ if ((userbuf->axlevel < AxNetU) && (roombuf->QRflags & QR_NETWORK)) {
+ post_allowed = 0;
+ reply_allowed = 0;
+ }
+ if (roombuf->QRflags & QR_READONLY) {
+ post_allowed = 0;
+ reply_allowed = 0;
+ }
if (post_allowed) {
- retval = retval | UA_POSTALLOWED;
+ retval = retval | UA_POSTALLOWED | UA_REPLYALLOWED;
+ }
+ if (reply_allowed) {
+ retval = retval | UA_REPLYALLOWED;
}
/* If "collaborative deletion" is active for this room, any user who can post
}
/* If user is explicitly locked out of this room, deny everything */
if (vbuf.v_flags & V_LOCKOUT) {
- retval = retval & ~UA_KNOWN & ~UA_GOTOALLOWED & ~UA_POSTALLOWED;
+ retval = retval & ~UA_KNOWN & ~UA_GOTOALLOWED & ~UA_POSTALLOWED & ~UA_REPLYALLOWED;
}
/* Aides get access to all private rooms */
if ( (userbuf->axlevel >= AxAideU)
&& ((roombuf->QRflags & QR_MAILBOX) == 0) ) {
if (vbuf.v_flags & V_FORGET) {
- retval = retval | UA_GOTOALLOWED | UA_POSTALLOWED;
+ retval = retval | UA_GOTOALLOWED | UA_POSTALLOWED | UA_REPLYALLOWED;
}
else {
- retval = retval | UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED;
+ retval = retval | UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_REPLYALLOWED;
}
}
*/
if ( (userbuf->axlevel >= AxAideU)
&& (roombuf->QRflags & QR_MAILBOX) ) {
- retval = retval | UA_GOTOALLOWED | UA_POSTALLOWED;
+ retval = retval | UA_GOTOALLOWED | UA_POSTALLOWED | UA_REPLYALLOWED;
}
/* Aides and Room Aides have admin privileges */
if ( (userbuf->axlevel >= AxAideU)
|| (userbuf->usernum == roombuf->QRroomaide)
) {
- retval = retval | UA_ADMINALLOWED | UA_DELETEALLOWED | UA_POSTALLOWED;
+ retval = retval | UA_ADMINALLOWED | UA_DELETEALLOWED | UA_POSTALLOWED | UA_REPLYALLOWED;
}
NEWMSG: /* By the way, we also check for the presence of new messages */
cdb_free(cdbus);
CtdlRoomAccess(&CC->room, &temp, &ra, NULL);
- if ((CC->room.QRflags & QR_INUSE)
- && (ra & UA_KNOWN)
- )
+ if ((!IsEmptyStr(temp.fullname)) &&
+ (CC->room.QRflags & QR_INUSE) &&
+ (ra & UA_KNOWN)
+ )
cprintf("%s\n", temp.fullname);
}
cprintf("000\n");
CTDL_MODULE_INIT(room_ops)
{
if (!threading) {
- CtdlRegisterProtoHook(cmd_lrms, "LRMS", "Autoconverted. TODO: document me.");
- CtdlRegisterProtoHook(cmd_lkra, "LKRA", "Autoconverted. TODO: document me.");
- CtdlRegisterProtoHook(cmd_lkrn, "LKRN", "Autoconverted. TODO: document me.");
- CtdlRegisterProtoHook(cmd_lkro, "LKRO", "Autoconverted. TODO: document me.");
- CtdlRegisterProtoHook(cmd_lzrm, "LZRM", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_lrms, "LRMS", "List rooms");
+ CtdlRegisterProtoHook(cmd_lkra, "LKRA", "List all known rooms");
+ CtdlRegisterProtoHook(cmd_lkrn, "LKRN", "List known rooms with new messages");
+ CtdlRegisterProtoHook(cmd_lkro, "LKRO", "List known rooms without new messages");
+ CtdlRegisterProtoHook(cmd_lzrm, "LZRM", "List zapped rooms");
CtdlRegisterProtoHook(cmd_lprm, "LPRM", "Autoconverted. TODO: document me.");
- CtdlRegisterProtoHook(cmd_goto, "GOTO", "Autoconverted. TODO: document me.");
- CtdlRegisterProtoHook(cmd_whok, "WHOK", "Autoconverted. TODO: document me.");
- CtdlRegisterProtoHook(cmd_rdir, "RDIR", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_goto, "GOTO", "Goto a named room");
+ CtdlRegisterProtoHook(cmd_whok, "WHOK", "List users who know this room");
+ CtdlRegisterProtoHook(cmd_rdir, "RDIR", "List files in room directory");
CtdlRegisterProtoHook(cmd_getr, "GETR", "Autoconverted. TODO: document me.");
CtdlRegisterProtoHook(cmd_setr, "SETR", "Autoconverted. TODO: document me.");
CtdlRegisterProtoHook(cmd_geta, "GETA", "Autoconverted. TODO: document me.");
CtdlRegisterProtoHook(cmd_seta, "SETA", "Autoconverted. TODO: document me.");
CtdlRegisterProtoHook(cmd_rinf, "RINF", "Autoconverted. TODO: document me.");
CtdlRegisterProtoHook(cmd_kill, "KILL", "Autoconverted. TODO: document me.");
- CtdlRegisterProtoHook(cmd_cre8, "CRE8", "Autoconverted. TODO: document me.");
+ CtdlRegisterProtoHook(cmd_cre8, "CRE8", "Create a new room");
CtdlRegisterProtoHook(cmd_einf, "EINF", "Autoconverted. TODO: document me.");
CtdlRegisterProtoHook(cmd_lflr, "LFLR", "Autoconverted. TODO: document me.");
CtdlRegisterProtoHook(cmd_cflr, "CFLR", "Autoconverted. TODO: document me.");