#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 */
#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... */
/*
#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{
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;
StrBuf *ReqLine;
StrBuf *http_host; /* HTTP Host: header */
StrBuf *browser_host;
+ StrBuf *browser_language;
StrBuf *user_agent;
StrBuf *plainauth;
StrBuf *dav_ifmatch;
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 */
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 */
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 */
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 */
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,
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);
-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 *);
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);
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