]> code.citadel.org Git - citadel.git/blobdiff - webcit/webcit.c
* static.local/ is now created
[citadel.git] / webcit / webcit.c
index 91b3096a554588fdeed6dd61a0342913f66d9530..803b877f8f2bd281dcfa8b9861fa0b798939c32a 100644 (file)
 #include "webserver.h"
 #include "mime_parser.h"
 
-/**
- * Subdirectories from which the client may request static content
- */
-char *static_content_dirs[] = {
-       "static",                     /** static templates */
-       "tiny_mce"                    /** the JS editor */
-};
-
 /**
  * String to unset the cookie.
  * Any date "in the past" will work, so I chose my birthday, right down to
@@ -110,6 +102,8 @@ void addurls(char *url)
                unescape_input(u->url_data);
                up = ptr;
                ++up;
+
+               /* lprintf(9, "%s = %s\n", u->url_key, u->url_data); */
        }
 }
 
@@ -435,6 +429,11 @@ void output_headers(       int do_httpheaders,     /**< 1 = output HTTP headers
 
        if (do_htmlhead) {
                begin_burst();
+               if (!access("static.local/webcit.css", R_OK)) {
+                       svprintf("CSSLOCAL", WCS_STRING,
+                          "<link href=\"static.local/webcit.css\" rel=\"stylesheet\" type=\"text/css\">"
+                       );
+               }
                do_template("head");
        }
 
@@ -445,8 +444,8 @@ void output_headers(        int do_httpheaders,     /**< 1 = output HTTP headers
                /** check for ImportantMessages (these display in a div overlaying the main screen) */
                if (strlen(WC->ImportantMessage) > 0) {
                        wprintf("<div id=\"important_message\">\n");
-                       wprintf("<SPAN CLASS=\"imsg\">"
-                               "%s</SPAN><br />\n", WC->ImportantMessage);
+                       wprintf("<span class=\"imsg\">"
+                               "%s</span><br />\n", WC->ImportantMessage);
                        wprintf("</div>\n");
                        wprintf("<script type=\"text/javascript\">\n"
                                "        setTimeout('hide_imsg_popup()', 3000); \n"
@@ -700,17 +699,15 @@ char *load_mimepart(long msgnum, char *partnum)
        char content_type[SIZ];
        char *content;
        
-       serv_printf("OPNA %ld|%s", msgnum, partnum);
+       serv_printf("DLAT %ld|%s", msgnum, partnum);
        serv_getln(buf, sizeof buf);
-       if (buf[0] == '2') {
+       if (buf[0] == '6') {
                bytes = extract_long(&buf[4], 0);
                extract_token(content_type, &buf[4], 3, '|', sizeof content_type);
 
                content = malloc(bytes + 2);
-               read_server_binary(content, bytes);
+               serv_read(content, bytes);
 
-               serv_puts("CLOS");
-               serv_getln(buf, sizeof buf);
                content[bytes] = 0;     /* null terminate for good measure */
                return(content);
        }
@@ -732,9 +729,9 @@ void convenience_page(char *titlebarcolor, char *titlebarmsg, char *messagetext)
        wprintf("HTTP/1.1 200 OK\n");
        output_headers(1, 1, 2, 0, 0, 0);
        wprintf("<div id=\"banner\">\n");
-       wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#%s\"><TR><TD>", titlebarcolor);
-       wprintf("<SPAN CLASS=\"titlebar\">%s</SPAN>\n", titlebarmsg);
-       wprintf("</TD></TR></TABLE>\n");
+       wprintf("<table width=100%% border=0 bgcolor=\"#%s\"><tr><td>", titlebarcolor);
+       wprintf("<span class=\"titlebar\">%s</span>\n", titlebarmsg);
+       wprintf("</td></tr></table>\n");
        wprintf("</div>\n<div id=\"content\">\n");
        escputs(messagetext);
 
@@ -767,9 +764,9 @@ void url_do_template(void) {
 void offer_start_page(void) {
        wprintf("<a href=\"change_start_page?startpage=");
        urlescputs(WC->this_page);
-       wprintf("\"><FONT SIZE=-2 COLOR=\"#AAAAAA\">");
+       wprintf("\"><font size=-2 color=\"#AAAAAA\">");
        wprintf(_("Make this my start page"));
-       wprintf("</FONT></A>");
+       wprintf("</font></a>");
 /*
        wprintf("<br/><a href=\"rss?room=");
        urlescputs(WC->wc_roomname);
@@ -1184,11 +1181,19 @@ void session_loop(struct httprequest *req)
                }
        }
 
+       /** If it's a "force 404" situation then display the error and bail. */
+       if (!strcmp(action, "404")) {
+               wprintf("HTTP/1.1 404 Not found\r\n");
+               wprintf("Content-Type: text/plain\r\n");
+               wprintf("\r\n");
+               wprintf("Not found\r\n");
+               goto SKIP_ALL_THIS_CRAP;
+       }
 
        /** Static content can be sent without connecting to Citadel. */
        is_static = 0;
-       for (a=0; a<(sizeof(static_content_dirs) / sizeof(char *)); ++a) {
-               if (!strcasecmp(action, static_content_dirs[a])) {
+       for (a=0; a<ndirs; ++a) {
+               if (!strcasecmp(action, (char*)static_content_dirs[a])) { /* map web to disk location */
                        is_static = 1;
                }
        }
@@ -1430,6 +1435,8 @@ void session_loop(struct httprequest *req)
                readloop("readfwd");
        } else if (!strcasecmp(action, "headers")) {
                readloop("headers");
+       } else if (!strcasecmp(action, "do_search")) {
+               readloop("do_search");
        } else if (!strcasecmp(action, "msg")) {
                embed_message(arg1);
        } else if (!strcasecmp(action, "printmsg")) {
@@ -1618,6 +1625,20 @@ void session_loop(struct httprequest *req)
                display_inetconf();
        } else if (!strcasecmp(action, "save_inetconf")) {
                save_inetconf();
+       } else if (!strcasecmp(action, "display_smtpqueue")) {
+               display_smtpqueue();
+       } else if (!strcasecmp(action, "display_smtpqueue_inner_div")) {
+               display_smtpqueue_inner_div();
+       } else if (!strcasecmp(action, "display_sieve")) {
+               display_sieve();
+       } else if (!strcasecmp(action, "save_sieve")) {
+               save_sieve();
+       } else if (!strcasecmp(action, "display_add_remove_scripts")) {
+               display_add_remove_scripts(NULL);
+       } else if (!strcasecmp(action, "create_script")) {
+               create_script();
+       } else if (!strcasecmp(action, "delete_script")) {
+               delete_script();
        } else if (!strcasecmp(action, "setup_wizard")) {
                do_setup_wizard();
        } else if (!strcasecmp(action, "display_preferences")) {