X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fwebcit.h;h=7274f78940e7b2bc24ffa8135bbd8af7193eb029;hb=aa8ca3b0af3efdabd8559b886efb3164319bdce1;hp=103908e135d29e0b0aaab7c0e3eb552d14b81b9c;hpb=3bcc1a3ecb93de64fb5b4f127c40950fc8a5240b;p=citadel.git diff --git a/webcit/webcit.h b/webcit/webcit.h index 103908e13..7274f7894 100644 --- a/webcit/webcit.h +++ b/webcit/webcit.h @@ -1,5 +1,53 @@ /* $Id$ */ +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#ifdef HAVE_FCNTL_H +#include +#endif +#include +#include +#include +#include +#ifdef HAVE_SYS_TIME_H +#include +#endif +#include +#ifdef HAVE_LIMITS_H +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_ICONV +#include +#endif + + +/* + * Uncomment to dump an HTTP trace to stderr +#define HTTP_TRACING 1 + */ + +#ifdef HTTP_TRACING +#undef HAVE_ZLIB_H +#undef HAVE_ZLIB +#endif + #ifdef HAVE_ZLIB_H #include #endif @@ -32,11 +80,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.03" /* who's in da house */ +#define SERVER "WebCit v6.21" /* who's in da house */ #define DEVELOPER_ID 0 #define CLIENT_ID 4 -#define CLIENT_VERSION 603 /* This version of WebCit */ -#define MINIMUM_CIT_VERSION 640 /* min required Citadel vers */ +#define CLIENT_VERSION 621 /* This version of WebCit */ +#define MINIMUM_CIT_VERSION 655 /* min required Citadel vers */ #define DEFAULT_HOST "localhost" /* Default Citadel server */ #define DEFAULT_PORT "504" #define LB (1) /* Internal escape chars */ @@ -171,6 +219,16 @@ struct wc_attachment { char *data; }; +struct message_summary { + time_t date; + long msgnum; + char from[128]; + char to[128]; + char subj[128]; + int hasattachments; + int is_new; +}; + /* * One of these is kept for each active Citadel session. * HTTP transactions are bound to one at a time. @@ -209,7 +267,11 @@ struct wcsession { int killthis; /* Nonzero == purge this session */ struct march *march; /* march mode room list */ char reply_to[SIZ]; /* reply-to address */ - long msgarr[4096]; /* for read operations */ + + 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 */ @@ -236,7 +298,6 @@ struct wcsession { int gzip_ok; /* Nonzero if Accept-encoding: gzip */ }; -#define extract(dest,source,parmnum) extract_token(dest,source,parmnum,'|') #define num_parms(source) num_tokens(source, '|') /* Per-session data */ @@ -262,7 +323,11 @@ void do_setup_wizard(void); void stuff_to_cookie(char *cookie, int session, char *user, char *pass, char *room); void cookie_to_stuff(char *cookie, int *session, - char *user, char *pass, char *room); + char *user, size_t user_len, + char *pass, size_t pass_len, + char *room, size_t room_len); +char *bmstrstr(char *text, char *pattern, + int (*cmpfunc)(const char *, const char *, size_t) ); void locate_host(char *, int); void become_logged_in(char *, char *, char *); void do_login(void); @@ -278,9 +343,10 @@ void ungoto(void); void get_serv_info(char *, char *); int uds_connectsock(char *); int tcp_connectsock(char *, char *); -void serv_gets(char *strbuf); +void serv_getln(char *strbuf, int bufsize); void serv_puts(char *string); -void whobbs(void); +void who(void); +void who_inner_html(void); void fmout(FILE *fp, char *align); void wDumpContent(int); void serv_printf(const char *format,...); @@ -304,14 +370,15 @@ void url(char *buf); void escputs1(char *strbuf, int nbsp, int nolinebreaks); void msgesc(char *target, char *strbuf); void msgescputs(char *strbuf); -long extract_long(char *source, long int parmnum); -int extract_int(char *source, int parmnum); +int extract_int(const char *source, int parmnum); +long extract_long(const char *source, int parmnum); void stripout(char *str, char leftboundary, char rightboundary); void dump_vars(void); 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 text_to_server(char *ptr, int convert_to_html); void display_enter(void); void post_message(void); @@ -373,7 +440,7 @@ void display_menubar(int); void smart_goto(char *); void worker_entry(void); void session_loop(struct httprequest *); -void fmt_date(char *buf, time_t thetime); +void fmt_date(char *buf, time_t thetime, int brief); void fmt_time(char *buf, time_t thetime); void httpdate(char *buf, time_t thetime); void end_webcit_session(void); @@ -388,7 +455,7 @@ void do_template(void *templatename); int lingering_close(int fd); char *memreadline(char *start, char *buf, int maxlen); int num_tokens (char *source, char tok); -void extract_token(char *dest, char *source, int parmnum, char separator); +void extract_token(char *dest, const char *source, int parmnum, char separator, int maxlen); void remove_token(char *source, int parmnum, char separator); char *load_mimepart(long msgnum, char *partnum); int pattern2(char *search, char *patn); @@ -407,8 +474,8 @@ void folders(void); void do_stuff_to_msgs(void); void load_preferences(void); void save_preferences(void); -void get_preference(char *key, char *value); -void set_preference(char *key, char *value); +void get_preference(char *key, char *value, size_t value_len); +void set_preference(char *key, char *value, int save_to_server); void knrooms(void); int is_msg_in_mset(char *mset, long msgnum); char *safestrncpy(char *dest, const char *src, size_t n); @@ -416,7 +483,7 @@ void display_addressbook(long msgnum, char alpha); void offer_start_page(void); void convenience_page(char *titlebarcolor, char *titlebarmsg, char *messagetext); void change_start_page(void); -void output_html(void); +void output_html(char *); void display_floorconfig(char *); void delete_floor(void); void create_floor(void); @@ -433,7 +500,7 @@ void do_calendar_view(void); void do_tasks_view(void); void free_calendar_buffer(void); void calendar_summary_view(void); -int load_msg_ptrs(char *servcmd); +int load_msg_ptrs(char *servcmd, int with_headers); void CtdlEncodeBase64(char *dest, const char *source, size_t sourcelen); int CtdlDecodeBase64(char *dest, const char *source, size_t length); void free_attachments(struct wcsession *sess); @@ -441,7 +508,8 @@ void set_room_policy(void); void display_inetconf(void); void save_inetconf(void); void generate_uuid(char *); - +void display_preferences(void); +void set_preferences(void); #ifdef WEBCIT_WITH_CALENDAR_SERVICE void display_edit_task(void); @@ -449,7 +517,8 @@ void save_task(void); void display_edit_event(void); void save_event(void); void display_icaltimetype_as_webform(struct icaltimetype *, char *); -struct icaltimetype icaltime_from_webform(char *prefix); +void icaltime_from_webform(struct icaltimetype *result, char *prefix); +void icaltime_from_webform_dateonly(struct icaltimetype *result, char *prefix); void display_edit_individual_event(icalcomponent *supplied_vtodo, long msgnum); void save_individual_event(icalcomponent *supplied_vtodo, long msgnum); void respond_to_request(void); @@ -508,7 +577,6 @@ void end_burst(void); extern char *ascmonths[]; void http_datestring(char *buf, size_t n, time_t xtime); - /* Views (from citadel.h) */ #define VIEW_BBS 0 /* Traditional Citadel BBS view */ #define VIEW_MAILBOX 1 /* Mailbox summary */