]> code.citadel.org Git - citadel.git/blobdiff - webcit/netconf.c
* Rewrote the HTTP engine and application coupling to run in a worker thread
[citadel.git] / webcit / netconf.c
index 6fc58dbabac1f5173dd988285bd6047b190984cc..6b2d763cdfc960fdd5ba22bc10f60d1a1bbe36c9 100644 (file)
@@ -1,27 +1,47 @@
+
+
+
+#include <ctype.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <stdio.h>
+#include <fcntl.h>
 #include <signal.h>
 #include <sys/types.h>
-#include <ctype.h>
+#include <sys/wait.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <limits.h>
+#include <netinet/in.h>
+#include <netdb.h>
 #include <string.h>
+#include <pwd.h>
+#include <errno.h>
+#include <stdarg.h>
+#include <pthread.h>
+#include <signal.h>
 #include "webcit.h"
-#include "child.h"
+
+
+
+
+
 
 struct sharelist {
        struct sharelist *next;
        char shname[256];
-       };
+};
 
 
-void display_edit_node(void) {
+void display_edit_node(void)
+{
        char buf[256];
        char node[256];
        char sroom[256];
 
        strcpy(node, bstr("node"));
 
-       printf("HTTP/1.0 200 OK\n");
+       wprintf("HTTP/1.0 200 OK\n");
        output_headers(1);
        wprintf("<TABLE WIDTH=100% BORDER=0 BGCOLOR=000077><TR><TD>");
        wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"");
@@ -53,21 +73,20 @@ void display_edit_node(void) {
                        urlescputs(node);
                        wprintf("\">(UnShare)</A></TD>");
                        wprintf("</TR>\n");
-                       }
-               wprintf("</TABLE></CENTER>\n");
                }
-       
-       wprintf("<HR></BODY></HTML>\n");
-       wDumpContent();
+               wprintf("</TABLE></CENTER>\n");
        }
-       
+       wDumpContent(1);
+}
 
 
-void display_netconf(void) {
+
+void display_netconf(void)
+{
        char buf[256];
        char node[256];
 
-       printf("HTTP/1.0 200 OK\n");
+       wprintf("HTTP/1.0 200 OK\n");
        output_headers(1);
        wprintf("<TABLE WIDTH=100% BORDER=0 BGCOLOR=770000><TR><TD>");
        wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"");
@@ -99,20 +118,19 @@ void display_netconf(void) {
                        urlescputs(node);
                        wprintf("\">(Delete)</A></TD>");
                        wprintf("</TR>\n");
-                       }
-               wprintf("</TABLE></CENTER>\n");
                }
-       
-       wprintf("<HR></BODY></HTML>\n");
-       wDumpContent();
+               wprintf("</TABLE></CENTER>\n");
        }
+       wDumpContent(1);
+}
 
 
-void display_confirm_unshare(void) {
+void display_confirm_unshare(void)
+{
        char node[256];
        char sroom[256];
 
-       printf("HTTP/1.0 200 OK\n");
+       wprintf("HTTP/1.0 200 OK\n");
        output_headers(1);
        wprintf("<TABLE WIDTH=100% BORDER=0 BGCOLOR=770000><TR><TD>");
        wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"");
@@ -131,15 +149,16 @@ void display_confirm_unshare(void) {
        wprintf("\">Yes</A>&nbsp;&nbsp;&nbsp;");
        wprintf("<A HREF=\"/display_edit_node&node=");
        urlescputs(node);
-       wprintf("\">No</A><BR></BODY></HTML>\n");
-       wDumpContent();
-       }
+       wprintf("\">No</A><BR>\n");
+       wDumpContent(1);
+}
 
 
-void display_confirm_delete_node(void) {
+void display_confirm_delete_node(void)
+{
        char node[256];
 
-       printf("HTTP/1.0 200 OK\n");
+       wprintf("HTTP/1.0 200 OK\n");
        output_headers(1);
        wprintf("<TABLE WIDTH=100% BORDER=0 BGCOLOR=770000><TR><TD>");
        wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"");
@@ -154,61 +173,59 @@ void display_confirm_delete_node(void) {
        urlescputs(node);
        wprintf("\">Yes</A>&nbsp;&nbsp;&nbsp;");
        wprintf("<A HREF=\"/display_netconf\">No</A><BR>\n");
-       wprintf("</BODY></HTML>\n");
-       wDumpContent();
-       }
+       wDumpContent(1);
+}
 
 
-void delete_node(void) {
+void delete_node(void)
+{
        char node[256];
        char buf[256];
-       
+
        strcpy(node, bstr("node"));
        sprintf(buf, "NSET deletenode|%s", node);
        serv_puts(buf);
        serv_gets(buf);
-       if (buf[0]=='1') {
-               printf("HTTP/1.0 200 OK\n");
+       if (buf[0] == '1') {
+               wprintf("HTTP/1.0 200 OK\n");
                output_headers(1);
                server_to_text();
                wprintf("<A HREF=\"/display_netconf\">Back to menu</A>\n");
-               wprintf("</BODY></HTML>\n");
-               wDumpContent();
-               }
-       else {
+               wDumpContent(1);
+       } else {
                display_error(&buf[4]);
-               }
        }
+}
 
 
-void unshare(void) {
+void unshare(void)
+{
        char node[256];
        char sroom[256];
        char buf[256];
-       
+
        strcpy(node, bstr("node"));
        strcpy(sroom, bstr("sroom"));
        sprintf(buf, "NSET unshare|%s|%s", node, sroom);
        serv_puts(buf);
        serv_gets(buf);
-       if (buf[0]=='1') {
-               printf("HTTP/1.0 200 OK\n");
+       if (buf[0] == '1') {
+               wprintf("HTTP/1.0 200 OK\n");
                output_headers(1);
                server_to_text();
                wprintf("<A HREF=\"/display_netconf\">Back to menu</A>\n");
-               wprintf("</BODY></HTML>\n");
-               wDumpContent();
-               }
-       else {
+               wDumpContent(1);
+       } else {
                display_error(&buf[4]);
-               }
        }
+}
+
 
 
+void display_add_node(void)
+{
 
-void display_add_node(void) {
-       
-       printf("HTTP/1.0 200 OK\n");
+       wprintf("HTTP/1.0 200 OK\n");
        output_headers(1);
        wprintf("<TABLE WIDTH=100% BORDER=0 BGCOLOR=007700><TR><TD>");
        wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"");
@@ -224,13 +241,14 @@ void display_add_node(void) {
        wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Add\">");
        wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\">");
 
-       wprintf("</FORM></CENTER></BODY></HTML>\n");
-       wDumpContent();
-       }
+       wprintf("</FORM></CENTER>\n");
+       wDumpContent(1);
+}
 
 
 
-void add_node(void) {
+void add_node(void)
+{
        char node[256];
        char buf[256];
        char sc[256];
@@ -242,24 +260,22 @@ void add_node(void) {
                sprintf(buf, "NSET addnode|%s", node);
                serv_puts(buf);
                serv_gets(buf);
-               if (buf[0]=='1') {
-                       printf("HTTP/1.0 200 OK\n");
+               if (buf[0] == '1') {
+                       wprintf("HTTP/1.0 200 OK\n");
                        output_headers(1);
                        server_to_text();
                        wprintf("<A HREF=\"/display_netconf\">Back to menu</A>\n");
-                       wprintf("</BODY></HTML>\n");
-                       wDumpContent();
-                       }
-               else {
+                       wDumpContent(1);
+               } else {
                        display_error(&buf[4]);
-                       }
                }
-
        }
+}
 
 
 
-void display_share(void) {
+void display_share(void)
+{
        char buf[256];
        char node[256];
        char sroom[256];
@@ -269,8 +285,8 @@ void display_share(void) {
 
        strcpy(node, bstr("node"));
 
-       printf("HTTP/1.0 200 OK\n");
-       output_headers(1);      
+       wprintf("HTTP/1.0 200 OK\n");
+       output_headers(1);
        wprintf("<TABLE WIDTH=100% BORDER=0 BGCOLOR=007700><TR><TD>");
        wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"");
        wprintf("<B>Add a shared room</B>\n");
@@ -285,62 +301,61 @@ void display_share(void) {
        sprintf(buf, "NSET roomlist|%s", node);
        serv_puts(buf);
        serv_gets(buf);
-       if (buf[0]=='1') {
-               while(serv_gets(buf), strcmp(buf,"000")) {
+       if (buf[0] == '1') {
+               while (serv_gets(buf), strcmp(buf, "000")) {
                        shptr = (struct sharelist *)
-                               malloc(sizeof(struct sharelist));
-                       shptr -> next = shlist;
+                           malloc(sizeof(struct sharelist));
+                       shptr->next = shlist;
                        extract(shptr->shname, buf, 0);
                        shlist = shptr;
-                       }
                }
-
+       }
        wprintf("<SELECT NAME=\"sroom\" SIZE=5 WIDTH=30>\n");
        serv_puts("LKRA");
        serv_gets(buf);
-       if (buf[0]=='1') {
-               while(serv_gets(buf), strcmp(buf,"000")) {
+       if (buf[0] == '1') {
+               while (serv_gets(buf), strcmp(buf, "000")) {
                        extract(sroom, buf, 0);
                        already_shared = 0;
                        for (shptr = shlist; shptr != NULL; shptr = shptr->next) {
                                if (!strcasecmp(sroom, shptr->shname))
                                        already_shared = 1;
-                               }
+                       }
 
                        if (already_shared == 0) {
                                wprintf("<OPTION>");
                                escputs(sroom);
                                wprintf("\n");
-                               }
-
                        }
                }
+       }
        wprintf("</SELECT>\n");
        wprintf("<BR>\n");
 
        wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Share\">");
        wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\">");
 
-       wprintf("</FORM></CENTER></BODY></HTML>\n");
-       wDumpContent();
+       wprintf("</FORM></CENTER>\n");
+       wDumpContent(1);
 
        /* free the list */
        while (shlist != NULL) {
                shptr = shlist->next;
                free(shlist);
                shlist = shptr;
-               }
-
        }
 
+}
+
 
 
-void share(void) {
+void share(void)
+{
        char node[256];
        char buf[256];
        char sc[256];
        char sroom[256];
-       
+
        strcpy(node, bstr("node"));
        strcpy(sc, bstr("sc"));
        strcpy(sroom, bstr("sroom"));
@@ -349,18 +364,15 @@ void share(void) {
                sprintf(buf, "NSET share|%s|%s", node, sroom);
                serv_puts(buf);
                serv_gets(buf);
-               if (buf[0]=='1') {
-                       printf("HTTP/1.0 200 OK\n");
+               if (buf[0] == '1') {
+                       wprintf("HTTP/1.0 200 OK\n");
                        output_headers(1);
                        server_to_text();
                        wprintf("<A HREF=\"/display_netconf\">Back to menu</A>\n");
-                       wprintf("</BODY></HTML>\n");
-                       wDumpContent();
-                       }
-               else {
+                       wDumpContent(1);
+               } else {
                        display_error(&buf[4]);
-                       }
-
                }
-       }
 
+       }
+}