/*
* Header file for libcitadel
*
- * Copyright (c) 1987-2012 by the citadel.org team
+ * Copyright (c) 1987-2013 by the citadel.org team
*
* This program is open source software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3.
#include <sys/types.h>
#include <netinet/in.h>
-#define LIBCITADEL_VERSION_NUMBER 813
+#define LIBCITADEL_VERSION_NUMBER 821
/*
* Here's a bunch of stupid magic to make the MIME parser portable.
AxAideU = 6
}eUsrAxlvl;
-enum RoomNetCfg {
+typedef enum __RoomNetCfg {
subpending,
unsubpending,
lastsent, /* Server internal use only */
pop3client,
rssclient,
participate,
+ roommailalias,
maxRoomNetCfg
-};
+} RoomNetCfg;
enum GNET_POP3_PARTS { /* pop3client splits into these columns: */
GNET_POP3_HOST = 1,
const char *ChrPtr(const StrBuf *Str);
int StrLength(const StrBuf *Str);
#define SKEY(a) ChrPtr(a), StrLength(a)
+void StrBufAsciify(StrBuf *Buf, const char repl);
long StrBufPeek(StrBuf *Buf, const char* ptr, long nThChar, char PeekValue);
long StrBufPook(StrBuf *Buf, const char* ptr, long nThChar, long nChars, char PookValue);
int SplicePipe[2];
int PipeSize;
long TotalSendSize;
- long TotalSentAlready;
- long TotalReadAlready;
+ loff_t TotalSentAlready;
+ loff_t TotalReadAlready;
long ChunkSize;
long ChunkSendRemain;
StrBuf *ChunkBuffer; /* just used if we don't have sendfile */
int StrBufDecodeBase64(StrBuf *Buf);
int StrBufDecodeHex(StrBuf *Buf);
+StrBuf *StrBufRFC2047encodeMessage(const StrBuf *EncodeMe);
int StrBufRFC2047encode(StrBuf **target, const StrBuf *source);
StrBuf *StrBufSanitizeEmailRecipientVector(const StrBuf *Recp,
StrBuf *UserName,
#define QU (3)
void StrBufUrlescAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn);
void StrBufUrlescUPAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn);
+void StrBufXMLEscAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn, long PlainInLen, int OverrideLowChars);
void StrBufHexescAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn);
void StrBufHexEscAppend(StrBuf *OutBuf, const StrBuf *In, const unsigned char *PlainIn, long PlainInLen);
+void StrBufBase64Append(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn, long PlainInLen, int linebreaks);
long StrEscAppend(StrBuf *Target, const StrBuf *Source, const char *PlainIn, int nbsp, int nolinebreaks);
long StrECMAEscAppend(StrBuf *Target, const StrBuf *Source, const char *PlainIn);
long StrHtmlEcmaEscAppend(StrBuf *Target, const StrBuf *Source, const char *PlainIn, int nbsp, int nolinebreaks);
const char *cbmstrcasestr(const char *text, const char *pattern);
const char *cbmstrcasestr_len(const char *text, size_t textlen, const char *pattern, size_t patlen);
void CtdlMakeTempFileName(char *name, int len);
-char *rfc2047encode(char *line, long length);
+char *rfc2047encode(const char *line, long length);
int is_msg_in_mset(const char *mset, long msgnum);
int pattern2(char *search, char *patn);
void stripltlen(char *, int *);
int GetHashKeys(HashList *Hash, char ***List);
int dbg_PrintHash(HashList *Hash, PrintHashContent first, PrintHashContent Second);
int PrintHash(HashList *Hash, TransitionFunc Trans, PrintHashDataFunc PrintEntry);
-HashPos *GetNewHashPos(HashList *Hash, int StepWidth);
+HashPos *GetNewHashPos(const HashList *Hash, int StepWidth);
+void RewindHashPos(const HashList *Hash, HashPos *it, int StepWidth);
int GetHashPosFromKey(HashList *Hash, const char *HKey, long HKLen, HashPos *At);
int DeleteEntryFromHash(HashList *Hash, HashPos *At);
int GetHashPosCounter(HashList *Hash, HashPos *At);
void DeleteHashPos(HashPos **DelMe);
int NextHashPos(HashList *Hash, HashPos *At);
int GetHashPos(HashList *Hash, HashPos *At, long *HKLen, const char **HashKey, void **Data);
-int GetNextHashPos(HashList *Hash, HashPos *At, long *HKLen, const char **HashKey, void **Data);
+int GetNextHashPos(const HashList *Hash, HashPos *At, long *HKLen, const char **HashKey, void **Data);
int GetHashAt(HashList *Hash,long At, long *HKLen, const char **HashKey, void **Data);
void SortByHashKey(HashList *Hash, int Order);
void SortByHashKeyStr(HashList *Hash);
extern "C" {
#endif
+#define CFG_SMTP_FROM_FILTERALL 0
+#define CFG_SMTP_FROM_NOFILTER 1
+#define CFG_SMTP_FROM_CORRECT 2
+#define CFG_SMTP_FROM_REJECT 3
/*
* MIME types used in Citadel for configuration stuff
*/
#define XMPPMORTUARY "application/x-citadel-xmpp-mortuary"
#define INTERNETCFG "application/x-citadel-internet-config"
+#define FILE_MAILALIAS "__MAIL_ALIAS__"
+
#define LISTING_FOLLOWS 100
#define CIT_OK 200
#define MORE_DATA 300
#define QR_ANONOPT 1024 /* Anonymous-Option room */
#define QR_NETWORK 2048 /* Shared network room */
#define QR_PREFONLY 4096 /* Preferred status needed to enter */
-#define QR_READONLY 8192 /* Aide status required to post */
+#define QR_READONLY 8192 /* Admin status required to post */
#define QR_MAILBOX 16384 /* Set if this is a private mailbox */
#define QR2_SYSTEM 1 /* System room; hide by default */
#define UA_HASNEWMSGS 8 /* Unread messages exist in this room */
#define UA_ZAPPED 16 /* User has forgotten (zapped) this room */
#define UA_POSTALLOWED 32 /* User may post top-level messages here */
-#define UA_ADMINALLOWED 64 /* Aide or Room Aide rights exist here */
+#define UA_ADMINALLOWED 64 /* Admin or Room Admin rights exist here */
#define UA_DELETEALLOWED 128 /* User is allowed to delete messages from this room */
#define UA_REPLYALLOWED 256 /* User is allowed to reply to existing messages here */
+/* runtime flag extracted from goto reply; not db persistant, should be moved if new flags added */
+#define UA_ISTRASH 512 /* Only available in room view... */
#ifdef __cplusplus
}