#endif
#endif
+
+
#ifdef WEBCIT_WITH_CALENDAR_SERVICE
+/* Work around PACKAGE/VERSION defs that are (not supposed to be?) in ical.h */
+#ifdef PACKAGE
+# define CTDL_PACKAGE PACKAGE
+# undef PACKAGE
+#endif
+#ifdef VERSION
+# define CTDL_VERSION VERSION
+# undef VERSION
+#endif
#include <ical.h>
+#ifdef CTDL_PACKAGE
+# ifdef PACKAGE
+# undef PACKAGE
+# endif
+# define PACKAGE CTDL_PACKAGE
+# undef CTDL_PACKAGE
+#endif
+#ifdef CTDL_VERSION
+# ifdef VERSION
+# undef VERSION
+# endif
+# define VERSION CTDL_VERSION
+# undef CTDL_VERSION
+#endif
#endif
+
+
#ifdef HAVE_OPENSSL
/* Work around RedHat's b0rken OpenSSL includes */
#define OPENSSL_NO_KRB5
#define SLEEPING 180 /* TCP connection timeout */
#define WEBCIT_TIMEOUT 900 /* WebCit session timeout */
#define PORT_NUM 2000 /* port number to listen on */
-#define SERVER "WebCit v6.31" /* who's in da house */
+#define SERVER "WebCit v6.70" /* who's in da house */
#define DEVELOPER_ID 0
#define CLIENT_ID 4
-#define CLIENT_VERSION 631 /* This version of WebCit */
-#define MINIMUM_CIT_VERSION 661 /* min required Citadel ver. */
+#define CLIENT_VERSION 670 /* This version of WebCit */
+#define MINIMUM_CIT_VERSION 670 /* min required Citadel ver. */
#define DEFAULT_HOST "localhost" /* Default Citadel server */
#define DEFAULT_PORT "504"
#define LB (1) /* Internal escape chars */
#define QR2_SYSTEM 1 /* System room; hide by default */
#define QR2_SELFLIST 2 /* Self-service mailing list mgmt */
-
-#define UA_KNOWN 2
-#define UA_GOTOALLOWED 4
-#define UA_HASNEWMSGS 8
-#define UA_ZAPPED 16
+/*
+ * user/room access
+ */
+#define UA_KNOWN 2
+#define UA_GOTOALLOWED 4
+#define UA_HASNEWMSGS 8
+#define UA_ZAPPED 16
/*
int is_new;
};
+/* Data structure for roomlist-to-folderlist conversion */
+struct folder {
+ int floor;
+ char room[SIZ];
+ char name[SIZ];
+ int hasnewmsgs;
+ int is_mailbox;
+ int selectable;
+ int view;
+};
+
/*
* One of these is kept for each active Citadel session.
* HTTP transactions are bound to one at a time.
struct wcsession {
struct wcsession *next; /* Linked list */
int wc_session; /* WebCit session ID */
- char wc_username[SIZ];
- char wc_password[SIZ];
- char wc_roomname[SIZ];
+ char wc_username[128];
+ char wc_fullname[128];
+ char wc_password[128];
+ char wc_roomname[256];
int connected;
int logged_in;
int axlevel;
unsigned room_flags;
int wc_view;
int wc_default_view;
+ int wc_is_trash;
int wc_floor;
char ugname[128];
long uglsn;
int upload_length;
char *upload;
- char upload_filename[SIZ];
- char upload_content_type[SIZ];
+ char upload_filename[PATH_MAX];
+ char upload_content_type[256];
int new_mail;
int remember_new_mail;
int need_regi; /* This user needs to register. */
int need_vali; /* New users require validation. */
- char cs_inet_email[SIZ]; /* User's preferred Internet addr. */
+ char cs_inet_email[256]; /* User's preferred Internet addr. */
pthread_mutex_t SessionMutex; /* mutex for exclusive access */
time_t lastreq; /* Timestamp of most recent HTTP */
int killthis; /* Nonzero == purge this session */
struct march *march; /* march mode room list */
- char reply_to[SIZ]; /* reply-to address */
-
+ char reply_to[512]; /* reply-to address */
long msgarr[10000]; /* for read operations */
int num_summ;
struct message_summary *summ;
-
int is_wap; /* Client is a WAP gateway */
struct urlcontent *urlstrings;
- int HaveInstantMessages; /* Nonzero if incoming msgs exist */
struct wcsubst *vars;
- char this_page[SIZ]; /* address of current page */
- char http_host[SIZ]; /* HTTP Host: header */
+ char this_page[512]; /* address of current page */
+ char http_host[512]; /* HTTP Host: header */
char *preferences;
#ifdef WEBCIT_WITH_CALENDAR_SERVICE
struct disp_cal {
#endif
struct wc_attachment *first_attachment;
char ImportantMessage[SIZ];
- char last_chat_user[SIZ];
+ char last_chat_user[256];
int ctdl_pid; /* Session ID on the Citadel server */
- char httpauth_user[SIZ]; /* only for GroupDAV sessions */
- char httpauth_pass[SIZ]; /* only for GroupDAV sessions */
-
+ char httpauth_user[256]; /* only for GroupDAV sessions */
+ char httpauth_pass[256]; /* only for GroupDAV sessions */
size_t burst_len;
char *burst;
int gzip_ok; /* Nonzero if Accept-encoding: gzip */
int is_mailbox; /* the current room is a private mailbox */
+ struct folder *cache_fold; /* cache the iconbar room list */
+ int cache_max_folders;
+ int cache_num_floors;
+ time_t cache_timestamp;
+ int current_iconbar; /* What's currently in the iconbar? */
+ char floordiv_expanded[32]; /* which floordiv currently expanded */
+ int selected_language; /* Language selected by user */
+ time_t last_pager_check; /* last time we polled for instant msgs */
};
+/* values for WC->current_iconbar */
+enum {
+ current_iconbar_menu,
+ current_iconbar_roomlist
+};
+
+
#define num_parms(source) num_tokens(source, '|')
/* Per-session data */
void readloop(char *oper);
void embed_message(char *msgnum_as_string);
void print_message(char *msgnum_as_string);
+void display_headers(char *msgnum_as_string);
void text_to_server(char *ptr, int convert_to_html);
void display_enter(void);
void post_message(void);
void display_inetconf(void);
void save_inetconf(void);
void generate_uuid(char *);
+void CtdlMakeTempFileName(char *, int);
void display_preferences(void);
void set_preferences(void);
void recp_autocomplete(char *);
void begin_ajax_response(void);
void end_ajax_response(void);
void initialize_viewdefs(void);
+void initialize_axdefs(void);
+void list_all_rooms_by_floor(char *viewpref);
#ifdef WEBCIT_WITH_CALENDAR_SERVICE
void display_edit_task(void);
void do_freebusy(char *req);
#endif
+#ifdef ENABLE_NLS
+void initialize_locales(void);
+#endif
+
extern char *months[];
extern char *days[];
void read_server_binary(char *buffer, size_t total_len);
int is_static);
void unescape_input(char *buf);
void do_iconbar(void);
+void do_iconbar_roomlist(void);
+void do_selected_iconbar(void);
void display_customize_iconbar(void);
void commit_iconbar(void);
int CtdlDecodeQuotedPrintable(char *decoded, char *encoded, int sourcelen);
void spawn_another_worker_thread(void);
void display_rss(char *roomname, char *request_method);
+void set_floordiv_expanded(char *which_floordiv);
+void offer_languages(void);
+void set_selected_language(char *);
+void go_selected_language(void);
+void stop_selected_language(void);
+void httplang_to_locale(char *LocaleString);
+void tabbed_dialog(int num_tabs, char *tabnames[]);
+void begin_tab(int tabnum, int num_tabs);
+void end_tab(int tabnum, int num_tabs);
void embed_room_banner(char *, int);
+
/* navbar types that can be passed to embed_room_banner */
enum {
navbar_none,