* Move to GPL v3
[citadel.git] / webcit / webcit.h
index dc6791d4e921180ee331a11fd725fc78c925b645..d2b7e94ead2cf712cbf0c0b1d2cb690e21d319ea 100644 (file)
@@ -1,7 +1,6 @@
 /* $Id$ */
 
-/** we need _GNU_SOURCE for various functions arround the NLS-Stuff */
-#define _GNU_SOURCE
+#include "config.h"
 
 
 #include <ctype.h>
@@ -123,11 +122,11 @@ extern locale_t wc_locales[];
 #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.73"  /* who's in da house */
+#define SERVER                 "WebCit v7.11"  /* who's in da house */
 #define DEVELOPER_ID           0
 #define CLIENT_ID              4
-#define CLIENT_VERSION         673             /* This version of WebCit */
-#define MINIMUM_CIT_VERSION    673             /* min required Citadel ver. */
+#define CLIENT_VERSION         711             /* This version of WebCit */
+#define MINIMUM_CIT_VERSION    710             /* min required Citadel ver. */
 #define DEFAULT_HOST           "localhost"     /* Default Citadel server */
 #define DEFAULT_PORT           "504"
 #define LB                     (1)             /* Internal escape chars */
@@ -169,6 +168,8 @@ extern locale_t wc_locales[];
  */
 #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 */
 
 /**
  * user/room access
@@ -228,9 +229,11 @@ struct serv_info {
        int serv_rev_level;             /**< Whats the citadel server revision */
        char serv_bbs_city[64];         /**< Geographic location of the Citadel server */
        char serv_sysadm[64];           /**< Name of system administrator */
-       char serv_moreprompt[SIZ];      /**< Whats the commandline textprompt */
+       char serv_moreprompt[256];      /**< Whats the commandline textprompt */
        int serv_ok_floors;             /**< nonzero == server supports floors */
        int serv_supports_ldap;         /**< is the server linked against an ldap tree for adresses? */
+       int serv_newuser_disabled;      /**< Has the server disabled self-service new user creation? */
+       char serv_default_cal_zone[128];/**< Default timezone for unspecified calendar items */
 };
 
 
@@ -337,6 +340,7 @@ struct wcsession {
        int serv_sock;                          /**< Client socket to Citadel server */
        int chat_sock;                          /**< Client socket to Citadel server - for chat */
        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 */
@@ -393,6 +397,7 @@ struct wcsession {
        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 */
+       int nonce;                              /**< session nonce (to prevent session riding) */
 };
 
 /** values for WC->current_iconbar */
@@ -452,6 +457,10 @@ void serv_getln(char *strbuf, int bufsize);
 void serv_puts(char *string);
 void who(void);
 void who_inner_div(void);
+void wholist_section(void);
+void tasks_section(void);
+void calendar_section(void);
+void new_messages_section(void);
 void fmout(char *align);
 void pullquote_fmout(void);
 void wDumpContent(int);
@@ -615,23 +624,37 @@ void do_tasks_view(void);
 void free_calendar_buffer(void);
 void calendar_summary_view(void);
 int load_msg_ptrs(char *servcmd, int with_headers);
-void CtdlEncodeBase64(char *dest, const char *source, size_t sourcelen);
+void CtdlEncodeBase64(char *dest, const char *source, size_t sourcelen, int linebreaks);
 int CtdlDecodeBase64(char *dest, const char *source, size_t length);
 void free_attachments(struct wcsession *sess);
 void free_march_list(struct wcsession *wcf);
 void set_room_policy(void);
 void display_inetconf(void);
 void save_inetconf(void);
+void display_smtpqueue(void);
+void display_smtpqueue_inner_div(void);
+void display_sieve(void);
+void display_rules_editor_inner_div(void);
+void save_sieve(void);
+void display_add_remove_scripts(char *);
+void create_script(void);
+void delete_script(void);
 void generate_uuid(char *);
 void CtdlMakeTempFileName(char *, int);
 void display_preferences(void);
 void set_preferences(void);
 void recp_autocomplete(char *);
+void address_book_popup(void);
+void display_address_book_middle_div(void);
+void display_address_book_inner_div(void);
 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);
+void display_room_directory(void);
+void download_file(char *);
+void upload_file(void);
 
 #ifdef WEBCIT_WITH_CALENDAR_SERVICE
 void display_edit_task(void);
@@ -685,6 +708,7 @@ void begin_tab(int tabnum, int num_tabs);
 void end_tab(int tabnum, int num_tabs);
 void str_wiki_index(char *s);
 void display_wiki_page(void);
+char *bmstrcasestr(char *text, char *pattern);
 
 #ifdef HAVE_ICONV
 iconv_t ctdl_iconv_open(const char *tocode, const char *fromcode);
@@ -742,3 +766,9 @@ void http_datestring(char *buf, size_t n, time_t xtime);
 #define DEFAULT_HTTPAUTH_USER  ""
 #define DEFAULT_HTTPAUTH_PASS  ""
 
+
+/* Exit codes 101 through 109 are initialization failures so we don't want to
+ * just keep respawning indefinitely.
+ */
+#define WC_EXIT_BIND           101     /* Can't bind to the port */
+#define WC_EXIT_SSL            102     /* Can't initialize SSL */