Revert "Remove ENABLE_NLS definition. Either we HAVE_USELOCALE or we don't translate...
[citadel.git] / webcit / webcit.h
index cb2e19b83e49688e317a123801a77912f4777e48..e713e75bbfb4b0bc62db459339fd082678bdac01 100644 (file)
@@ -1,19 +1,13 @@
 /*
- * Copyright (c) 1987-2011 by the citadel.org team
+ * Copyright (c) 1987-2012 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 as published
- * by the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * modify it under the terms of the GNU General Public License version 3.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
 #include "sysdep.h"
@@ -52,6 +46,7 @@
 #include <signal.h>
 #include <syslog.h>
 #include <sys/utsname.h>
+#include <expat.h>
 #include <libcitadel.h>
 
 #ifdef HAVE_ICONV
 #endif
 
 #define IsEmptyStr(a) ((a)[0] == '\0')
-/*
- * Uncomment to dump an HTTP trace to stderr
-#define HTTP_TRACING 1
- */
 
 #define DO_DBG_QR 0
 #define DBG_QR(x) if(DO_DBG_QR) _DBG_QR(x)
 #define DBG_QR2(x) if(DO_DBG_QR) _DBG_QR2(x)
 
-#ifdef HTTP_TRACING
-#undef HAVE_ZLIB_H
-#undef HAVE_ZLIB
-#endif
-
-#ifdef HAVE_ZLIB_H
 #include <zlib.h>
-#endif
 
 #include <libical/ical.h>
 
@@ -144,12 +128,12 @@ extern char *ssl_cipher_list;
 #define PORT_NUM               2000            /* port number to listen on */
 #define DEVELOPER_ID           0
 #define CLIENT_ID              4
-#define CLIENT_VERSION         800             /* This version of WebCit */
-#define MINIMUM_CIT_VERSION    800             /* min required Citadel ver */
-#define        LIBCITADEL_MIN          800             /* min required libcitadel ver */
+#define CLIENT_VERSION         810             /* This version of WebCit */
+#define MINIMUM_CIT_VERSION    810             /* Minimum required version of Citadel server */
+#define        LIBCITADEL_MIN          810             /* Minimum required version of libcitadel */
 #define DEFAULT_HOST           "localhost"     /* Default Citadel server */
 #define DEFAULT_PORT           "504"
-#define TARGET                 "webcit01"      /* Target for inline URL's */
+#define TARGET                 "webcit01"      /* Window target for inline URL's */
 #define HOUSEKEEPING           15              /* Housekeeping frequency */
 #define MAX_WORKER_THREADS     250
 #define LISTEN_QUEUE_LENGTH    100             /* listen() backlog queue */
@@ -170,43 +154,43 @@ extern char *ssl_cipher_list;
  *
  * bucket one...
  */
-#define QR_PERMANENT   1               /* Room does not purge          */
+#define QR_PERMANENT   1               /* Room does not purge                  */
 #define QR_INUSE       2               /* Set if in use, clear if avail        */
 #define QR_PRIVATE     4               /* Set for any type of private room     */
 #define QR_PASSWORDED  8               /* Set if there's a password too        */
-#define QR_GUESSNAME   16              /* Set if it's a guessname room */
+#define QR_GUESSNAME   16              /* Set if it's a guessname room         */
 #define QR_DIRECTORY   32              /* Directory room                       */
 #define QR_UPLOAD      64              /* Allowed to upload                    */
-#define QR_DOWNLOAD    128             /* Allowed to download          */
+#define QR_DOWNLOAD    128             /* Allowed to download                  */
 #define QR_VISDIR      256             /* Visible directory                    */
-#define QR_ANONONLY    512             /* Anonymous-Only room          */
+#define QR_ANONONLY    512             /* Anonymous-Only room                  */
 #define QR_ANONOPT     1024            /* Anonymous-Option room                */
-#define QR_NETWORK     2048            /* Shared network 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            /* Aide status required to post         */
 #define QR_MAILBOX     16384           /* Set if this is a private mailbox     */
 
 /*
  * bucket two...
  */
-#define QR2_SYSTEM     1               /* System room; hide by default */
+#define QR2_SYSTEM     1               /* System room; hide by default         */
 #define QR2_SELFLIST   2               /* Self-service mailing list mgmt       */
-#define QR2_COLLABDEL  4               /* Anyone who can post can also delete*/
-#define QR2_SUBJECTREQ  8               /* Subject strongly recommended */
-#define QR2_SMTP_PUBLIC 16              /* smtp public postable room */
-#define QR2_MODERATED  32              /* Listservice aide has to permit posts  */
+#define QR2_COLLABDEL  4               /* Anyone who can post can also delete  */
+#define QR2_SUBJECTREQ  8               /* Subject strongly recommended                */
+#define QR2_SMTP_PUBLIC 16              /* smtp public postable room           */
+#define QR2_MODERATED  32              /* Listservice aide has to permit posts */
 
 /*
  * user/room access
  */
-#define UA_KNOWN       2
-#define UA_GOTOALLOWED 4
-#define UA_HASNEWMSGS  8
-#define UA_ZAPPED      16
+#define UA_KNOWN               2
+#define UA_GOTOALLOWED         4
+#define UA_HASNEWMSGS          8
+#define UA_ZAPPED              16
 #define UA_POSTALLOWED          32
 #define UA_ADMINALLOWED         64
 #define UA_DELETEALLOWED        128
-#define UA_ISTRASH              256 /* Only available in room view... */
+#define UA_ISTRASH              256    /* Only available in room view... */
 
 
 /*
@@ -281,11 +265,12 @@ extern char *ssl_cipher_list;
 #define EXPIRE_MANUAL           1       /* Don't expire messages at all */
 #define EXPIRE_NUMMSGS          2       /* Keep only latest n messages  */
 #define EXPIRE_AGE              3       /* Expire messages after n days */
+
 typedef struct __ExpirePolicy {
        int loaded; /* has this been loaded from the server? */
         int expire_mode;
         int expire_value;
-}ExpirePolicy;
+} ExpirePolicy;
 void LoadExpirePolicy(GPEXWhichPolicy which);
 void SaveExpirePolicyFromHTTP(GPEXWhichPolicy which);
 
@@ -420,6 +405,7 @@ enum {
        eHEAD,
        eMOVE,
        eCOPY,
+       eREPORT,
        eNONE
 };
 extern const char *ReqStrs[eNONE];
@@ -490,7 +476,6 @@ struct wcsession {
        int killthis;                           /* Nonzero == purge this session */
        int ctdl_pid;                           /* Session ID on the Citadel server */
        int nonce;                              /* session nonce (to prevent session riding) */
-       int SessionKey;
        int inuse;                              /* set to nonzero if bound to a running thread */
 
 /* Session local Members */
@@ -502,7 +487,6 @@ struct wcsession {
        time_t lastreq;                         /* Timestamp of most recent HTTP */
        time_t last_pager_check;                /* last time we polled for instant msgs */
        ServInfo *serv_info;                    /* Information about the citserver we're connected to */
-       int is_ajax;                            /* are we doing an ajax request? */
        StrBuf *PushedDestination;              /* Where to go after login, registration, etc. */
 
 /* Request local Members */
@@ -511,9 +495,7 @@ struct wcsession {
        StrBuf *WBuf;                           /* Our output buffer */
        StrBuf *HBuf;                           /* Our HeaderBuffer */
        StrBuf *WFBuf;                          /* Wildfire error logging buffer */
-
        StrBuf *trailing_javascript;            /* extra javascript to be appended to page */
-/*     char ImportantMessage[SIZ];*/
        StrBuf *ImportantMsg;
        HashList *Directory;                    /* Parts of the directory URL in snippets */
        const Floor *CurrentFloor;              /* when Parsing REST, which floor are we on? */
@@ -584,7 +566,7 @@ struct wcsession {
        StrBuf *ConvertBuf1;
        StrBuf *ConvertBuf2;
 
-/* cache stuff for templates. TODO: find a smartrer way */
+/* cache stuff for templates. TODO: find a smarter way */
        HashList *ServCfg;                      /* cache our server config for editing */
        HashList *InetCfg;                      /* Our inet server config for editing */
        ExpirePolicy Policy[maxpolicy];
@@ -756,13 +738,10 @@ void output_html(const char *, int, int, StrBuf *, StrBuf *);
 ssize_t write(int fd, const void *buf, size_t count);
 void cal_process_attachment(wc_mime_attachment *Mime);
 
-void generate_uuid(char *);
-
 void address_book_popup(void);
 void begin_ajax_response(void);
 void end_ajax_response(void);
 
-
 extern char *months[];
 extern char *days[];
 long locate_user_vcard_in_this_room(message_summary **VCMsg,
@@ -777,7 +756,6 @@ void tabbed_dialog(int num_tabs, char *tabnames[]);
 void begin_tab(int tabnum, int num_tabs);
 void end_tab(int tabnum, int num_tabs);
 
-
 int get_time_format_cached (void);
 void display_wiki_pagelist(void);
 HashList *GetRoomListHashLKRA(StrBuf *Target, WCTemplputParams *TP);
@@ -817,9 +795,7 @@ void http_datestring(char *buf, size_t n, time_t xtime);
 #define WC_TIMEFORMAT_24 2
 
 extern int time_to_die;                        /* Nonzero if server is shutting down */
-
-/* a nice consistent place to define how we turn a message id into a thread id hash */
-#define ThreadIdHash(Buf) abs(HashLittle(ChrPtr(Buf), StrLength(Buf)))
+extern int DisableGzip;
 
 /* 
  * Array type for a blog post.  The first message is the post; the rest are comments