X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fwebcit.h;h=cf126c41a4d21f060f66b6c75a3c96205a30d102;hb=714fc9b4492360587a49a96f78c8b7cb42a0df51;hp=254f305d4a8f3290441c83748e36bfd90ccd2b9a;hpb=3e7246ede8f1494ecacdec05cc9dc116a8e93033;p=citadel.git diff --git a/webcit/webcit.h b/webcit/webcit.h index 254f305d4..cf126c41a 100644 --- a/webcit/webcit.h +++ b/webcit/webcit.h @@ -1,5 +1,61 @@ /* $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 + +#include "gettext.h" + +#if ENABLE_NLS +#include +#define _(string) gettext(string) +#else +#define _(string) (string) +#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 +88,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 v5.28" /* who's in da house */ +#define SERVER "WebCit v6.31" /* who's in da house */ #define DEVELOPER_ID 0 #define CLIENT_ID 4 -#define CLIENT_VERSION 528 /* This version of WebCit */ -#define MINIMUM_CIT_VERSION 626 /* min required Citadel vers */ +#define CLIENT_VERSION 631 /* This version of WebCit */ +#define MINIMUM_CIT_VERSION 661 /* min required Citadel ver. */ #define DEFAULT_HOST "localhost" /* Default Citadel server */ #define DEFAULT_PORT "504" #define LB (1) /* Internal escape chars */ @@ -171,6 +227,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,10 +275,14 @@ 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 HaveExpressMessages; /* Nonzero if incoming msgs exist */ + 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 */ @@ -228,9 +298,15 @@ struct wcsession { char ImportantMessage[SIZ]; char last_chat_user[SIZ]; 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 */ + + size_t burst_len; + char *burst; + int gzip_ok; /* Nonzero if Accept-encoding: gzip */ + int is_mailbox; /* the current room is a private mailbox */ }; -#define extract(dest,source,parmnum) extract_token(dest,source,parmnum,'|') #define num_parms(source) num_tokens(source, '|') /* Per-session data */ @@ -249,12 +325,17 @@ extern char *axdefs[]; extern char *ctdlhost, *ctdlport; extern char *server_cookie; extern int is_https; - +extern int setup_wizard; +extern char wizard_filename[]; +extern time_t if_modified_since; +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); void locate_host(char *, int); void become_logged_in(char *, char *, char *); void do_login(void); @@ -262,6 +343,7 @@ void display_login(char *mesg); void do_welcome(void); void do_logout(void); void display_main_menu(void); +void display_aide_menu(void); void display_advanced_menu(void); void slrp_highest(void); void gotonext(void); @@ -269,10 +351,12 @@ 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 fmout(FILE *fp, char *align); +void who(void); +void who_inner_div(void); +void fmout(char *align); +void pullquote_fmout(void); void wDumpContent(int); void serv_printf(const char *format,...); char *bstr(char *key); @@ -284,7 +368,6 @@ void output_headers( int do_httpheaders, int do_htmlhead, int do_room_banner, int unset_cookies, - int refresh30, int suppress_check, int cache); void wprintf(const char *format,...); @@ -295,20 +378,21 @@ 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 print_message(void); void text_to_server(char *ptr, int convert_to_html); void display_enter(void); void post_message(void); void confirm_delete_msg(void); void delete_msg(void); -void do_stuff_to_one_msg(void); void confirm_move_msg(void); void move_msg(void); void userlist(void); @@ -322,17 +406,19 @@ void zapped_list(void); void display_zap(void); void zap(void); void display_success(char *); +void authorization_required(const char *message); void display_entroom(void); void entroom(void); void display_editroom(void); void netedit(void); void editroom(void); void display_whok(void); +void do_invt_kick(void); void server_to_text(void); void save_edit(char *description, char *enter_cmd, int regoto); void display_edit(char *description, char *check_cmd, char *read_cmd, char *save_cmd, int with_room_banner); -void gotoroom(char *gname); +int gotoroom(char *gname); void confirm_delete_room(void); void delete_room(void); void validate(void); @@ -364,9 +450,10 @@ 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); +time_t httpdate_to_timestamp(const char *buf); void end_webcit_session(void); void page_popup(void); void chat_recv(void); @@ -379,7 +466,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); @@ -388,6 +475,7 @@ void edit_vcard(void); void submit_vcard(void); void striplt(char *); void select_user_to_edit(char *message, char *preselect); +void delete_user(char *); void display_edituser(char *who, int is_new); void create_user(void); void edituser(void); @@ -397,15 +485,16 @@ 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); 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); @@ -413,6 +502,7 @@ void rename_floor(void); void do_listsub(void); void toggle_self_service(void); void summary(void); +void summary_inner_div(void); ssize_t write(int fd, const void *buf, size_t count); void cal_process_attachment(char *part_source, long msgnum, char *cal_partnum); void display_calendar(long msgnum); @@ -422,7 +512,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); @@ -430,7 +520,11 @@ 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); +void recp_autocomplete(char *); +void begin_ajax_response(void); +void end_ajax_response(void); #ifdef WEBCIT_WITH_CALENDAR_SERVICE void display_edit_task(void); @@ -438,7 +532,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); @@ -465,6 +560,7 @@ 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 embed_room_banner(char *, int); /* navbar types that can be passed to embed_room_banner */ @@ -484,8 +580,22 @@ int client_read_ssl(char *buf, int bytes, int timeout); void client_write_ssl(char *buf, int nbytes); #endif -extern char *ascmonths[]; +#ifdef HAVE_ZLIB +#include +int ZEXPORT compress_gzip(Bytef * dest, uLongf * destLen, + const Bytef * source, uLong sourceLen, int level); +#endif + +#ifdef HAVE_ICONV +void utf8ify_rfc822_string(char *buf); +#endif + +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) */ #define VIEW_BBS 0 /* Traditional Citadel BBS view */ @@ -494,3 +604,9 @@ extern char *ascmonths[]; #define VIEW_CALENDAR 3 /* Calendar view */ #define VIEW_TASKS 4 /* Tasks view */ #define VIEW_NOTES 5 /* Notes view */ + + +/* These should be empty, but we have them for testing */ +#define DEFAULT_HTTPAUTH_USER "" +#define DEFAULT_HTTPAUTH_PASS "" +