X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmsgbase.h;h=e9f8a3f84313682041e2a6696038c5834bf15742;hb=66f09fdd7c3f58e13ed01431dd5148302327ca6e;hp=20c6ee76eacf4f4ad0cfd5428eec00b42340f05f;hpb=682137147d66ec1ea06b9099c55e597c23b0e31f;p=citadel.git diff --git a/citadel/msgbase.h b/citadel/msgbase.h index 20c6ee76e..e9f8a3f84 100644 --- a/citadel/msgbase.h +++ b/citadel/msgbase.h @@ -28,7 +28,8 @@ enum { om_ok, om_not_logged_in, om_no_such_msg, - om_mime_error + om_mime_error, + om_access_denied }; /* @@ -71,9 +72,11 @@ struct recptypes { char *recp_internet; char *recp_ignet; char *recp_room; + char *recp_orgroom; char *display_recp; char *bounce_to; char *envelope_from; + char *sending_room; }; #define RECPTYPES_MAGIC 0xfeeb @@ -108,7 +111,29 @@ void cmd_dlat (char *cmdbuf); long send_message (struct CtdlMessage *); void loadtroom (void); long CtdlSubmitMsg(struct CtdlMessage *, struct recptypes *, const char *, int); -void quickie_message (const char *, const char *, char *, char *, const char *, int, const char *); + +void quickie_message(const char *from, + const char *fromaddr, + const char *to, + char *room, + const char *text, + int format_type, + const char *subject); + +void flood_protect_quickie_message(const char *from, + const char *fromaddr, + const char *to, + char *room, + const char *text, + int format_type, + const char *subject, + int nCriterions, + const char **CritStr, + long *CritStrLen, + long ccid, + long ioid, + time_t NOW); + void cmd_ent0 (char *entargs); void cmd_dele (char *delstr); void cmd_move (char *args); @@ -138,19 +163,21 @@ void CtdlWriteObject(char *req_room, /* Room to stuff it in */ unsigned int flags /* Internal save flags */ ); struct CtdlMessage *CtdlFetchMessage(long msgnum, int with_body); +struct CtdlMessage * CtdlDuplicateMessage(struct CtdlMessage *OrgMsg); +void CtdlMsgSetCM_Fields(struct CtdlMessage *Msg, const char which, const char *buf, long length); void CtdlFreeMessage(struct CtdlMessage *msg); +void CtdlFreeMessageContents(struct CtdlMessage *msg); void serialize_message(struct ser_ret *, struct CtdlMessage *); -void dump_message(struct CtdlMessage *msg, long Siz); int is_valid_message(struct CtdlMessage *); void ReplicationChecks(struct CtdlMessage *); int CtdlSaveMsgPointersInRoom(char *roomname, long newmsgidlist[], int num_newmsgs, int do_repl_check, struct CtdlMessage *supplied_msg, int suppress_refcount_adj); int CtdlSaveMsgPointerInRoom(char *roomname, long msgid, int do_repl_check, struct CtdlMessage *msg); -char *CtdlReadMessageBody(char *terminator, long tlen, size_t maxlen, char *exist, int crlf, int *sock); +char *CtdlReadMessageBody(char *terminator, long tlen, size_t maxlen, StrBuf *exist, int crlf, int *sock); StrBuf *CtdlReadMessageBodyBuf(char *terminator, /* token signalling EOT */ long tlen, size_t maxlen, /* maximum message length */ - char *exist, /* if non-null, append to it; + StrBuf *exist, /* if non-null, append to it; exist is ALWAYS freed */ int crlf, /* CRLF newlines instead of LF */ int *sock /* socket handle or 0 for this session's client socket */ @@ -162,7 +189,9 @@ int CtdlOutputMsg(long msg_num, /* message number (local) to fetch */ int do_proto, /* do Citadel protocol responses? */ int crlf, /* 0=LF, 1=CRLF */ char *section, /* output a message/rfc822 section */ - int flags /* should the bessage be exported clean? */ + int flags, /* should the bessage be exported clean? */ + char **Author, /* if you want to know the author of the message... */ + char **Address /* if you want to know the sender address of the message... */ ); /* Flags which may be passed to CtdlOutputMsg() and CtdlOutputPreLoadedMsg() */ @@ -229,14 +258,6 @@ struct CtdlMessage *CtdlMakeMessage( int CtdlCheckInternetMailPermission(struct ctdluser *who); int CtdlIsMe(char *addr, int addr_buf_len); -/* - * Use of aide_message is deprecated. - * It has been replaced with CtdlAideMessage. - * All parameters remain the same. -*/ -void aide_message(char *text, char *subject) __attribute__ ((deprecated)); - - /* * loading messages async via an FD: * add IO->ReadMsg = NewAsyncMsg(...) @@ -247,7 +268,7 @@ ReadAsyncMsg *NewAsyncMsg(const char *terminator, /* token signalling EOT */ long tlen, size_t expectlen, /* if we expect a message, how long should it be? */ size_t maxlen, /* maximum message length */ - char *exist, /* if non-null, append to it; + StrBuf *exist, /* if non-null, append to it; exist is ALWAYS freed */ long eLen, /* length of exist */ int crlf /* CRLF newlines instead of LF */ @@ -256,6 +277,20 @@ ReadAsyncMsg *NewAsyncMsg(const char *terminator, /* token signalling EOT */ eReadState CtdlReadMessageBodyAsync(AsyncIO *IO); void DeleteAsyncMsg(ReadAsyncMsg **Msg); +extern int MessageDebugEnabled; + +#define MSGDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (MessageDebugEnabled != 0)) +#define CCCID CCC->cs_pid +#define MSG_syslog(LEVEL, FORMAT, ...) \ + MSGDBGLOG(LEVEL) syslog(LEVEL, \ + "CC[%d]MSG" FORMAT, \ + CCCID, __VA_ARGS__) + +#define MSGM_syslog(LEVEL, FORMAT) \ + MSGDBGLOG(LEVEL) syslog(LEVEL, \ + "CC[%d]MSG" FORMAT, \ + CCCID) + #endif /* MSGBASE_H */