removed a bunch of blank comment lines
[citadel.git] / webcit / mainmenu.c
1 #include "webcit.h"
2
3 /*
4  * The Main Menu
5  */
6 void display_main_menu(void)
7 {
8         begin_burst();
9         output_headers(1, 0, 0, 0, 1, 0);
10         DoTemplate(HKEY("display_main_menu"), NULL, &NoCtx);
11         end_burst();
12 }
13
14
15 /*
16  * System administration menu
17  */
18 void display_aide_menu(void)
19 {
20         begin_burst();
21         output_headers(1, 0, 0, 0, 1, 0);
22         DoTemplate(HKEY("aide_display_menu"), NULL, &NoCtx);
23         end_burst();
24 }
25
26
27 /*
28  * Interactive window to perform generic Citadel server commands.
29  */
30 void do_generic(void)
31 {
32         WCTemplputParams SubTP;
33         int Done = 0;
34         StrBuf *Buf;
35         StrBuf *LineBuf;
36         char *junk;
37         size_t len;
38
39         if (!havebstr("sc_button")) {
40                 display_main_menu();
41                 return;
42         }
43
44         memset(&SubTP, 0, sizeof(WCTemplputParams));
45         Buf = NewStrBuf();
46         serv_puts(bstr("g_cmd"));
47         StrBuf_ServGetln(Buf);
48         
49         switch (GetServerStatus(Buf, NULL)) {
50         case 8:
51                 serv_puts("\n\n000");
52                 if ( (StrLength(Buf)==3) && 
53                      !strcmp(ChrPtr(Buf), "000")) {
54                         StrBufAppendBufPlain(Buf, HKEY("\000"), 0);
55                         break;
56                 }
57         case 1:
58                 LineBuf = NewStrBuf();
59                 StrBufAppendBufPlain(Buf, HKEY("\n"), 0);
60                 while (!Done) {
61                         if (StrBuf_ServGetln(LineBuf) < 0)
62                                 break;
63                         if ( (StrLength(LineBuf)==3) && 
64                              !strcmp(ChrPtr(LineBuf), "000")) {
65                                 Done = 1;
66                         }
67                         StrBufAppendBuf(Buf, LineBuf, 0);
68                         StrBufAppendBufPlain(Buf, HKEY("\n"), 0);
69                 }
70                 FreeStrBuf(&LineBuf);
71                 break;
72         case 2:
73                 break;
74         case 4:
75                 text_to_server(bstr("g_input"));
76                 serv_puts("000");
77                 break;
78         case 6:
79                 len = atol(&ChrPtr(Buf)[4]);
80                 StrBuf_ServGetBLOBBuffered(Buf, len);
81                 break;
82         case 7:
83                 len = atol(&ChrPtr(Buf)[4]);
84                 junk = malloc(len);
85                 memset(junk, 0, len);
86                 serv_write(junk, len);
87                 free(junk);
88                 break;
89         }
90         
91         begin_burst();
92         output_headers(1, 0, 0, 0, 1, 0);
93
94         SubTP.Filter.ContextType = CTX_STRBUF;
95         SubTP.Context = Buf;
96
97         DoTemplate(HKEY("aide_display_generic_result"), NULL, &SubTP);
98
99         wDumpContent(1);
100
101         FreeStrBuf(&Buf);
102 }
103
104 /*
105  * Display the wait / input dialog while restarting the server.
106  */
107 void display_shutdown(void)
108 {
109         StrBuf *Line;
110         char *when;
111         
112         Line = NewStrBuf();
113         when=bstr("when");
114         if (strcmp(when, "now") == 0){
115                 serv_printf("DOWN 1");
116                 StrBuf_ServGetln(Line);
117                 GetServerStatusMsg(Line, NULL, 1, 5);
118
119                 begin_burst();
120                 output_headers(1, 0, 0, 0, 1, 0);
121                 DoTemplate(HKEY("aide_display_serverrestart"), NULL, &NoCtx);
122                 end_burst();
123                 lingering_close(WC->Hdr->http_sock);
124                 sleeeeeeeeeep(10);
125                 serv_printf("NOOP");
126                 serv_printf("NOOP");
127         }
128         else if (strcmp(when, "page") == 0) {
129                 char *message;
130                
131                 message = bstr("message");
132                 if ((message == NULL) || (IsEmptyStr(message)))
133                 {
134                         begin_burst();
135                         output_headers(1, 0, 0, 0, 1, 0);
136                         DoTemplate(HKEY("aide_display_serverrestart_page"), NULL, &NoCtx);
137                         end_burst();
138                 }
139                 else
140                 {
141                         serv_printf("SEXP broadcast|%s", message);
142                         StrBuf_ServGetln(Line);
143                         GetServerStatusMsg(Line, NULL, 1, 0);
144
145                         begin_burst();
146                         output_headers(1, 0, 0, 0, 1, 0);
147                         DoTemplate(HKEY("aide_display_serverrestart_page"), NULL, &NoCtx);
148                         end_burst();                    
149                 }
150         }
151         else if (!strcmp(when, "idle")) {
152                 serv_printf("SCDN 3");
153                 StrBuf_ServGetln(Line);
154                 GetServerStatusMsg(Line, NULL, 1, 2);
155
156                 begin_burst();
157                 output_headers(1, 0, 0, 0, 1, 0);
158                 DoTemplate(HKEY("aide_display_menu"), NULL, &NoCtx);
159                 end_burst();                    
160         }
161         FreeStrBuf(&Line);
162 }
163
164 void 
165 InitModule_MAINMENU
166 (void)
167 {
168         WebcitAddUrlHandler(HKEY("display_aide_menu"), "", 0, display_aide_menu, 0);
169         WebcitAddUrlHandler(HKEY("server_shutdown"), "", 0, display_shutdown, 0);
170         WebcitAddUrlHandler(HKEY("display_main_menu"), "", 0, display_main_menu, 0);
171         WebcitAddUrlHandler(HKEY("do_generic"), "", 0, do_generic, 0);
172 }