* create function to parse the output of goto into our folder structure
[citadel.git] / webcit / webcit.h
index 4142cf15fa8fb876752ffb781deb4a0dcdbc13e5..b38a9c97501b7c071d4886d196afce606d36f4fc 100644 (file)
@@ -89,6 +89,7 @@
 #include "subst.h"
 #include "messages.h"
 #include "paramhandling.h"
+#include "roomops.h"
 #include "preferences.h"
 
 #ifdef HAVE_OPENSSL
 #include <openssl/ssl.h>
 #include <openssl/err.h>
 #include <openssl/rand.h>
+extern char *ssl_cipher_list;
+#define        DEFAULT_SSL_CIPHER_LIST "DEFAULT"       /* See http://openssl.org/docs/apps/ciphers.html */
 #endif
 
+
 #define CALENDAR_ROOM_NAME     "Calendar"
 #define PRODID "-//Citadel//NONSGML Citadel Calendar//EN"
 
 #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"
 #define UA_POSTALLOWED          32
 #define UA_ADMINALLOWED         64
 #define UA_DELETEALLOWED        128
+#define UA_ISTRASH              256 /* Only available in room view... */
 
 
 /*
@@ -319,8 +324,11 @@ typedef struct  _WebcitHandler{
        WebcitHandlerFunc F;
        long Flags;
        StrBuf *Name;
+       StrBuf *DisplayName;
 } WebcitHandler;
-void WebcitAddUrlHandler(const char * UrlString, long UrlSLen, WebcitHandlerFunc F, long Flags);
+
+
+void WebcitAddUrlHandler(const char * UrlString, long UrlSLen, const char *DisplayName, long dslen, WebcitHandlerFunc F, long Flags);
 
 typedef struct _headereval {
        ExamineMsgHeaderFunc evaluator;
@@ -372,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;
@@ -379,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;
@@ -444,6 +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? */
 
 /* accounting */
        StrBuf *wc_username;                    /* login name of current user */
@@ -469,14 +480,16 @@ 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 */
 
 /* next/previous room thingabob */
        struct march *march;                    /* march mode room list */
@@ -510,7 +523,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 */
 
 
@@ -573,13 +586,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,
@@ -599,6 +607,8 @@ void display_aide_menu(void);
 void display_advanced_menu(void);
 void slrp_highest(void);
 ServInfo *get_serv_info(StrBuf *, StrBuf *);
+void RegisterEmbeddableMimeType(const char *MimeType, long MTLen, int Priority);
+void CreateMimeStr(void);
 int GetConnected(void);
 void DeleteServInfo(ServInfo **FreeMe);
 int uds_connectsock(char *);
@@ -633,7 +643,7 @@ void output_headers(    int do_httpheaders,
                        int suppress_check,
                        int cache);
 void output_custom_content_header(const char *ctype);
-void wprintf(const char *format,...)__attribute__((__format__(__printf__,1,2)));
+void wc_printf(const char *format,...)__attribute__((__format__(__printf__,1,2)));
 void hprintf(const char *format,...)__attribute__((__format__(__printf__,1,2)));
 void output_static(const char* What);
 
@@ -762,7 +772,6 @@ int read_server_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);
@@ -779,8 +788,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