]> code.citadel.org Git - citadel.git/blobdiff - webcit/webcit.h
* move serv_func.c:read_server_binary() to tcp_sockets.c: serv_read_binary()
[citadel.git] / webcit / webcit.h
index 94e6c8d363be56f4fd239a651776f5e205bbda45..a82ef024142f871323c3bf8e248fe3dfdfb4f012 100644 (file)
@@ -89,8 +89,8 @@
 #include "subst.h"
 #include "messages.h"
 #include "paramhandling.h"
-#include "preferences.h"
 #include "roomops.h"
+#include "preferences.h"
 
 #ifdef HAVE_OPENSSL
 /* Work around RedHat's b0rken OpenSSL includes */
@@ -115,8 +115,8 @@ 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         766             /* This version of WebCit */
-#define MINIMUM_CIT_VERSION    766             /* min required Citadel ver */
+#define CLIENT_VERSION         780             /* This version of WebCit */
+#define MINIMUM_CIT_VERSION    770             /* min required Citadel ver */
 #define        LIBCITADEL_MIN          766             /* min required libcitadel ver */
 #define DEFAULT_HOST           "localhost"     /* Default Citadel server */
 #define DEFAULT_PORT           "504"
@@ -178,6 +178,7 @@ extern char *ssl_cipher_list;
 #define UA_POSTALLOWED          32
 #define UA_ADMINALLOWED         64
 #define UA_DELETEALLOWED        128
+#define UA_ISTRASH              256 /* Only available in room view... */
 
 
 /*
@@ -316,7 +317,7 @@ typedef struct _addrbookent {
 #define COOKIEUNNEEDED (1<<6)
 #define ISSTATIC (1<<7)
 #define FORCE_SESSIONCLOSE (1<<8)
-#define PARSE_REST_URL (1<<0)
+#define PARSE_REST_URL (1<<9)
 
 typedef void (*WebcitHandlerFunc)(void);
 typedef struct  _WebcitHandler{
@@ -379,6 +380,7 @@ typedef struct _HdrRefs {
        int gzip_ok;                            /* Nonzero if Accept-encoding: gzip */
        int prohibit_caching;
        int dav_depth;
+       int Static;
 
        /* these are references into Hdr->HTTPHeaders, so we don't need to free them. */
        StrBuf *ContentType;
@@ -386,6 +388,7 @@ typedef struct _HdrRefs {
        StrBuf *ReqLine;
        StrBuf *http_host;                      /* HTTP Host: header */
        StrBuf *browser_host;
+       StrBuf *browser_language;
        StrBuf *user_agent;
        StrBuf *plainauth;
        StrBuf *dav_ifmatch;
@@ -451,7 +454,7 @@ struct wcsession {
        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? */
+       const Floor *CurrentFloor;              /**< when Parsing REST, which floor are we on? */
 
 /* accounting */
        StrBuf *wc_username;                    /* login name of current user */
@@ -477,15 +480,17 @@ struct wcsession {
        int time_format_cache;                  /* which timeformat does our user like? */
 
 /* current room related */
-       StrBuf *wc_roomname;                    /* Room we are currently in */
-       unsigned room_flags;                    /* flags associated with the current room */
-       unsigned room_flags2;                   /* flags associated with the current room */
-       int wc_view;                            /* view for the current room */
-       int wc_default_view;                    /* default view for the current room */
-       int wc_is_trash;                        /* nonzero == current room is a Trash folder */
-       int wc_floor;                           /* floor number of current room */
-       int is_mailbox;                         /* the current room is a private mailbox */
-
+/*     StrBuf *wc_roomname;                    / * Room we are currently in */
+/*     unsigned room_flags;                    / * flags associated with the current room */
+/*     unsigned room_flags2;                   / * flags associated with the current room */
+/*     int wc_view;                            / * view for the current room */
+/*     int wc_default_view;                    / * default view for the current room */
+/*     int wc_is_trash;                        / * nonzero == current room is a Trash folder */
+/*     int wc_floor;                           / * floor number of current room */
+/*     int is_mailbox;                         / * the current room is a private mailbox */
+
+       folder CurRoom;                         /* information about our current room */
+       const folder *ThisRoom;                 /* if REST found a room, remember it here. */
 /* next/previous room thingabob */
        struct march *march;                    /* march mode room list */
        char ugname[128];                       /* where does 'ungoto' take us */
@@ -502,7 +507,9 @@ struct wcsession {
        int remember_new_mail;                  /* last count of new mail messages */
 
 /* Roomiew control */
-       HashList *Floors;                       /* floors our citserver has... */
+       HashList *Floors;                       /* floors our citserver has hashed numeric for quicker access*/
+       HashList *FloorsByName;                 /* same but hashed by its name */
+       HashList *Rooms;                        /* our directory structure as loaded by LKRA */
        HashList *summ;                         /* list of messages for mailbox summary view */
   /** Perhaps these should be within a struct instead */
        long startmsg;                          /* message number to start at */
@@ -518,7 +525,7 @@ struct wcsession {
        int cache_max_folders;
        int cache_num_floors;
        time_t cache_timestamp;
-       HashList *IconBarSettings;              /* which icons should be shown / not shown? */
+       long *IBSettingsVec;                    /* which icons should be shown / not shown? */
        const StrBuf *floordiv_expanded;        /* which floordiv currently expanded */
 
 
@@ -581,13 +588,8 @@ void InitialiseSemaphores(void);
 void begin_critical_section(int which_one);
 void end_critical_section(int which_one);
 
-void stuff_to_cookie(char *cookie, size_t clen,
-               int session,
-               StrBuf *user,
-               StrBuf *pass,
-               StrBuf *room,
-               const char *language
-);
+void stuff_to_cookie(int unset_cookie);
+
 void cookie_to_stuff(StrBuf *cookie,
                int *session,
                StrBuf *user,
@@ -660,7 +662,7 @@ void embed_main_menu(void);
 
 void do_addrbook_view(addrbookent *addrbook, int num_ab);
 void fetch_ab_name(message_summary *Msg, char **namebuf);
-void display_vcard(StrBuf *Target, StrBuf *vcard_source, char alpha, int full, char **storename, long msgnum);
+void display_vcard(StrBuf *Target, wc_mime_attachment *Mime, char alpha, int full, char **storename, long msgnum);
 void jsonMessageList(void);
 void new_summary_view(void);
 void getseen(void);
@@ -724,7 +726,6 @@ void folders(void);
 
 
 
-void display_addressbook(long msgnum, char alpha);
 void offer_start_page(StrBuf *Target, WCTemplputParams *TP);
 void convenience_page(const char *titlebarcolor, const char *titlebarmsg, const char *messagetext);
 void output_html(const char *, int, int, StrBuf *, StrBuf *);
@@ -768,11 +769,10 @@ int ical_ctdl_is_overlap(
 
 extern char *months[];
 extern char *days[];
-int read_server_binary(StrBuf *Ret, size_t total_len, StrBuf *Buf);
+int serv_read_binary(StrBuf *Ret, size_t total_len, StrBuf *Buf);
 int StrBuf_ServGetBLOB(StrBuf *buf, long BlobSize);
 int StrBuf_ServGetBLOBBuffered(StrBuf *buf, long BlobSize);
 int read_server_text(StrBuf *Buf, long *nLines);
-int goto_config_room(StrBuf *Buf);
 long locate_user_vcard_in_this_room(message_summary **VCMsg,
                                    wc_mime_attachment **VCAtt);
 void sleeeeeeeeeep(int);
@@ -789,8 +789,8 @@ void end_tab(int tabnum, int num_tabs);
 void str_wiki_index(char *s);
 long guess_calhourformat(void);
 int get_time_format_cached (void);
-int xtoi(const char *in, size_t len);
 const char *get_selected_language(void);
+void display_wiki_pagelist(void);
 
 #define DATEFMT_FULL 0
 #define DATEFMT_BRIEF 1