X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fwebcit.h;h=78cfa7f4afbfadc7b760a272e6d4c95a13788982;hb=d120028b4c45f3c26d05186c8ba488fd2feef13f;hp=3f2668aa6cafdc5e533b0d195026ea2896c92061;hpb=e5fe1ed611336c69625bb74385ce3f16a3d3e3a9;p=citadel.git diff --git a/webcit/webcit.h b/webcit/webcit.h index 3f2668aa6..78cfa7f4a 100644 --- a/webcit/webcit.h +++ b/webcit/webcit.h @@ -33,6 +33,10 @@ #include #include +#ifndef INADDR_NONE +#define INADDR_NONE 0xffffffff +#endif + #ifdef HAVE_ICONV #include #endif @@ -66,9 +70,36 @@ #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 +#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 */ @@ -88,11 +119,11 @@ #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.26" /* 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 626 /* This version of WebCit */ -#define MINIMUM_CIT_VERSION 656 /* min required Citadel vers */ +#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 */ @@ -135,13 +166,34 @@ #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 +/* + * User flags (from Citadel) + */ +#define US_NEEDVALID 1 /* User needs to be validated */ +#define US_PERM 4 /* Permanent user */ +#define US_LASTOLD 16 /* Print last old message with new */ +#define US_EXPERT 32 /* Experienced user */ +#define US_UNLISTED 64 /* Unlisted userlog entry */ +#define US_NOPROMPT 128 /* Don't prompt after each message */ +#define US_PROMPTCTL 256 /* ext & top work at prompt */ +#define US_DISAPPEAR 512 /* Use "disappearing msg prompts" */ +#define US_REGIS 1024 /* Registered user */ +#define US_PAGINATOR 2048 /* Pause after each screen of text */ +#define US_INTERNET 4096 /* Internet mail privileges */ +#define US_FLOORS 8192 /* User wants to see floors */ +#define US_COLOR 16384 /* User wants ANSI color support */ +#define US_USER_SET (US_LASTOLD | US_EXPERT | US_UNLISTED | \ + US_NOPROMPT | US_DISAPPEAR | US_PAGINATOR | \ + US_FLOORS | US_COLOR | US_PROMPTCTL ) @@ -237,6 +289,17 @@ struct message_summary { 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. @@ -244,9 +307,10 @@ struct message_summary { 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; @@ -258,34 +322,32 @@ struct wcsession { 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 { @@ -296,16 +358,31 @@ struct wcsession { #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 */ @@ -327,6 +404,7 @@ extern int is_https; extern int setup_wizard; extern char wizard_filename[]; extern time_t if_modified_since; +extern int follow_xff; void do_setup_wizard(void); void stuff_to_cookie(char *cookie, int session, @@ -385,8 +463,9 @@ void embed_main_menu(void); void serv_read(char *buf, int bytes); int haschar(char *, char); void readloop(char *oper); -void embed_message(void); -void print_message(void); +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); @@ -445,6 +524,7 @@ void display_siteconfig(void); void siteconfig(void); void display_generic(void); void do_generic(void); +void ajax_servcmd(void); void display_menubar(int); void smart_goto(char *); void worker_entry(void); @@ -481,7 +561,6 @@ void edituser(void); void do_change_view(int); void change_view(void); void folders(void); -void do_stuff_to_msgs(void); void load_preferences(void); void save_preferences(void); void get_preference(char *key, char *value, size_t value_len); @@ -519,11 +598,15 @@ void set_room_policy(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); @@ -544,6 +627,10 @@ void check_attendee_availability(icalcomponent *supplied_vevent); 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); @@ -555,13 +642,25 @@ void http_transmit_thing(char *thing, size_t length, char *content_type, 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, @@ -593,6 +692,7 @@ void begin_burst(void); void end_burst(void); extern char *ascmonths[]; +extern char *hourname[]; void http_datestring(char *buf, size_t n, time_t xtime); /* Views (from citadel.h) */