]> code.citadel.org Git - citadel.git/blobdiff - webcit/webcit.c
* List subscription (not finished)
[citadel.git] / webcit / webcit.c
index 71df42ecae109c486b7043049b0e165ba3926e4b..2700a6565a41a4859ff0fb35d422e695a55d0fcd 100644 (file)
@@ -824,10 +824,13 @@ void session_loop(struct httprequest *req)
                        ContentLength = atoi(&buf[16]);
                }
                else if (!strncasecmp(buf, "Content-type: ", 14)) {
-                       strcpy(ContentType, &buf[14]);
+                       safestrncpy(ContentType, &buf[14], sizeof ContentType);
                }
                else if (!strncasecmp(buf, "User-agent: ", 12)) {
-                       strcpy(user_agent, &buf[12]);
+                       safestrncpy(user_agent, &buf[12], sizeof user_agent);
+               }
+               else if (!strncasecmp(buf, "Host: ", 6)) {
+                       safestrncpy(WC->http_host, &buf[6], sizeof WC->http_host);
                }
                /* Only WAP gateways explicitly name this content-type */
                else if (strstr(buf, "text/vnd.wap.wml")) {
@@ -909,6 +912,14 @@ void session_loop(struct httprequest *req)
                }
        }
 
+       /*
+        * Functions which can be performed without logging in
+        */
+       if (!strcasecmp(action, "listsub")) {
+               do_listsub();
+               goto SKIP_ALL_THIS_CRAP;
+       }
+
        check_for_express_messages();
 
        /*
@@ -945,12 +956,20 @@ void session_loop(struct httprequest *req)
                output_static(buf);
        } else if (!strcasecmp(action, "image")) {
                output_image();
+
+       /*
+        * All functions handled below this point ... make sure we log in
+        * before doing anything else!
+        */
        } else if ((!WC->logged_in) && (!strcasecmp(action, "login"))) {
                do_login();
        } else if (!WC->logged_in) {
                display_login(NULL);
        }
-       /* Various commands... */
+
+       /*
+        * Various commands...
+        */
 
        else if (!strcasecmp(action, "do_welcome")) {
                do_welcome();
@@ -1053,8 +1072,12 @@ void session_loop(struct httprequest *req)
                                        "/editroompic");
        } else if (!strcasecmp(action, "editroompic")) {
                do_graphics_upload("UIMG 1|_roompic_");
-       } else if (!strcasecmp(action, "select_floor_to_edit_pic")) {
-               select_floor_to_edit_pic();
+       } else if (!strcasecmp(action, "delete_floor")) {
+               delete_floor();
+       } else if (!strcasecmp(action, "rename_floor")) {
+               rename_floor();
+       } else if (!strcasecmp(action, "create_floor")) {
+               create_floor();
        } else if (!strcasecmp(action, "display_editfloorpic")) {
                sprintf(buf, "UIMG 0|_floorpic_|%s",
                        bstr("which_floor"));
@@ -1126,6 +1149,8 @@ void session_loop(struct httprequest *req)
                do_stuff_to_msgs();
        } else if (!strcasecmp(action, "change_start_page")) {
                change_start_page();
+       } else if (!strcasecmp(action, "display_floorconfig")) {
+               display_floorconfig(NULL);
        } else if (!strcasecmp(action, "diagnostics")) {
                output_headers(1);