strcpy(display_name, "<unknown>");
if (TheMessage->cm_fields['A']) {
strcpy(buf, TheMessage->cm_fields['A']);
- PerformUserHooks(buf, (-1L), EVT_OUTPUTMSG);
if (TheMessage->cm_anon_type == MES_ANONONLY) {
strcpy(display_name, "****");
}
}
cprintf(">%s", nl);
- PerformUserHooks(luser, (-1L), EVT_OUTPUTMSG);
-
if (!is_room_aide() && (TheMessage->cm_anon_type == MES_ANONONLY)) {
cprintf("From: x@x.org (----)%s", nl);
}
msg->cm_fields['T'] = strdoop(aaa);
}
- /*
- * If no Author, set it to ME ME ME
- */
- if (msg->cm_fields['A'] == NULL) {
- msg->cm_fields['A'] = strdoop(CC->user.fullname);
- }
-
- /*
- * If no Node, set it to the local node
- */
- if (msg->cm_fields['N'] == NULL) {
- msg->cm_fields['N'] = strdoop(config.c_nodename);
- }
-
/* If this message has no path, we generate one.
*/
if (msg->cm_fields['P'] == NULL) {
struct ctdlroom qtemp;
int err;
int is_copy = 0;
+ int ra;
num = extract_long(args, 0);
extract(targ, args, 1);
}
getuser(&CC->user, CC->curr_user);
+ ra = CtdlRoomAccess(&qtemp, &CC->user);
/* Aides can move/copy */
if ((CC->user.axlevel < 6)
/* Roomaides can move/copy */
&& (CC->user.usernum != CC->room.QRroomaide)
- /* Permit move/copy to/from personal rooms */
+ /* Permit move/copy from personal rooms */
&& (!((CC->room.QRflags & QR_MAILBOX)
&& (qtemp.QRflags & QR_MAILBOX)))
/* Permit only copy from public to personal room */
- && (!(is_copy && !(CC->room.QRflags & QR_MAILBOX)
- && (qtemp.QRflags & QR_MAILBOX)))) {
+ && (!(is_copy && (CC->room.QRflags & QR_MAILBOX)
+ || (qtemp.QRflags & QR_MAILBOX)))
+ /* User must have access to target room */
+ && !((ra & UA_KNOWN))) {
cprintf("%d Higher access required.\n",
ERROR + HIGHER_ACCESS_REQUIRED);
return;