00001
00002
00003
00010 #include "webcit.h"
00011
00015 void edit_node(void) {
00016 char buf[SIZ];
00017 char node[SIZ];
00018 char cnode[SIZ];
00019 FILE *fp;
00020
00021 if (strlen(bstr("ok_button")) > 0) {
00022 strcpy(node, bstr("node") );
00023 fp = tmpfile();
00024 if (fp != NULL) {
00025 serv_puts("CONF getsys|application/x-citadel-ignet-config");
00026 serv_getln(buf, sizeof buf);
00027 if (buf[0] == '1') {
00028 while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
00029 extract_token(cnode, buf, 0, '|', sizeof cnode);
00030 if (strcasecmp(node, cnode)) {
00031 fprintf(fp, "%s\n", buf);
00032 }
00033 }
00034 fprintf(fp, "%s|%s|%s|%s\n",
00035 bstr("node"),
00036 bstr("secret"),
00037 bstr("host"),
00038 bstr("port") );
00039 }
00040 rewind(fp);
00041
00042 serv_puts("CONF putsys|application/x-citadel-ignet-config");
00043 serv_getln(buf, sizeof buf);
00044 if (buf[0] == '4') {
00045 while (fgets(buf, sizeof buf, fp) != NULL) {
00046 buf[strlen(buf)-1] = 0;
00047 serv_puts(buf);
00048 }
00049 serv_puts("000");
00050 }
00051 fclose(fp);
00052 }
00053 }
00054
00055 display_netconf();
00056 }
00057
00058
00062 void display_add_node(void)
00063 {
00064 output_headers(1, 1, 2, 0, 0, 0);
00065 wprintf("<div id=\"banner\">\n");
00066 wprintf("<TABLE class=\"netconf_banner\"><TR><TD>");
00067 wprintf("<SPAN CLASS=\"titlebar\">");
00068 wprintf(_("Add a new node"));
00069 wprintf("</SPAN>");
00070 wprintf("</TD></TR></TABLE>\n");
00071 wprintf("</div>\n<div id=\"content\">\n");
00072
00073 wprintf("<FORM METHOD=\"POST\" action=\"edit_node\">\n");
00074 wprintf("<CENTER><TABLE border=0>\n");
00075 wprintf("<TR><TD>%s</TD>", _("Node name"));
00076 wprintf("<TD><INPUT TYPE=\"text\" NAME=\"node\" MAXLENGTH=\"16\"></TD></TR>\n");
00077 wprintf("<TR><TD>%s</TD>", _("Shared secret"));
00078 wprintf("<TD><INPUT TYPE=\"password\" NAME=\"secret\" MAXLENGTH=\"16\"></TD></TR>\n");
00079 wprintf("<TR><TD>%s</TD>", _("Host or IP address"));
00080 wprintf("<TD><INPUT TYPE=\"text\" NAME=\"host\" MAXLENGTH=\"64\"></TD></TR>\n");
00081 wprintf("<TR><TD>%s</TD>", _("Port number"));
00082 wprintf("<TD><INPUT TYPE=\"text\" NAME=\"port\" MAXLENGTH=\"8\"></TD></TR>\n");
00083 wprintf("</TABLE><br />");
00084 wprintf("<INPUT TYPE=\"submit\" NAME=\"ok_button\" VALUE=\"%s\">", _("Add node"));
00085 wprintf(" ");
00086 wprintf("<INPUT TYPE=\"submit\" NAME=\"cancel_button\" VALUE=\"%s\">", _("Cancel"));
00087 wprintf("</CENTER></FORM>\n");
00088
00089 wDumpContent(1);
00090 }
00091
00095 void display_edit_node(void)
00096 {
00097 char buf[512];
00098 char node[256];
00099 char cnode[256];
00100 char csecret[256];
00101 char chost[256];
00102 char cport[256];
00103
00104 strcpy(node, bstr("node"));
00105
00106 output_headers(1, 1, 2, 0, 0, 0);
00107 wprintf("<div id=\"banner\">\n");
00108 wprintf("<TABLE class=\"netconf_banner\"><TR><TD>");
00109 wprintf("<SPAN CLASS=\"titlebar\">");
00110 wprintf(_("Edit node configuration for "));
00111 escputs(node);
00112 wprintf("</SPAN>\n");
00113 wprintf("</TD></TR></TABLE>\n");
00114 wprintf("</div>\n<div id=\"content\">\n");
00115
00116 serv_puts("CONF getsys|application/x-citadel-ignet-config");
00117 serv_getln(buf, sizeof buf);
00118 if (buf[0] == '1') {
00119 while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
00120 extract_token(cnode, buf, 0, '|', sizeof cnode);
00121 extract_token(csecret, buf, 1, '|', sizeof csecret);
00122 extract_token(chost, buf, 2, '|', sizeof chost);
00123 extract_token(cport, buf, 3, '|', sizeof cport);
00124
00125 if (!strcasecmp(node, cnode)) {
00126 wprintf("<FORM METHOD=\"POST\" action=\"edit_node\">\n");
00127 wprintf("<CENTER><TABLE border=0>\n");
00128 wprintf("<TR><TD>");
00129 wprintf(_("Node name"));
00130 wprintf("</TD>");
00131 wprintf("<TD><INPUT TYPE=\"text\" NAME=\"node\" MAXLENGTH=\"16\" VALUE=\"%s\"></TD></TR>\n", cnode);
00132 wprintf("<TR><TD>");
00133 wprintf(_("Shared secret"));
00134 wprintf("</TD>");
00135 wprintf("<TD><INPUT TYPE=\"password\" NAME=\"secret\" MAXLENGTH=\"16\" VALUE=\"%s\"></TD></TR>\n", csecret);
00136 wprintf("<TR><TD>");
00137 wprintf(_("Host or IP address"));
00138 wprintf("</TD>");
00139 wprintf("<TD><INPUT TYPE=\"text\" NAME=\"host\" MAXLENGTH=\"64\" VALUE=\"%s\"></TD></TR>\n", chost);
00140 wprintf("<TR><TD>");
00141 wprintf(_("Port number"));
00142 wprintf("</TD>");
00143 wprintf("<TD><INPUT TYPE=\"text\" NAME=\"port\" MAXLENGTH=\"8\" VALUE=\"%s\"></TD></TR>\n", cport);
00144 wprintf("</TABLE><br />");
00145 wprintf("<INPUT TYPE=\"submit\" NAME=\"ok_button\" VALUE=\"%s\">",
00146 _("Save changes"));
00147 wprintf(" ");
00148 wprintf("<INPUT TYPE=\"submit\" NAME=\"cancel_button\" VALUE=\"%s\">",
00149 _("Cancel"));
00150 wprintf("</CENTER></FORM>\n");
00151 }
00152
00153 }
00154 }
00155
00156 else {
00157 wprintf("%s<br />\n", &buf[4]);
00158 }
00159
00160 wDumpContent(1);
00161 }
00162
00163
00167 void display_netconf(void)
00168 {
00169 char buf[SIZ];
00170 char node[SIZ];
00171
00172 output_headers(1, 1, 2, 0, 0, 0);
00173 wprintf("<div id=\"banner\">\n");
00174 wprintf("<TABLE class=\"netconf_banner\"><TR><TD>");
00175 wprintf("<SPAN CLASS=\"titlebar\">");
00176 wprintf(_("Network configuration"));
00177 wprintf("</SPAN>\n");
00178 wprintf("</TD></TR></TABLE>\n");
00179 wprintf("</div>\n<div id=\"content\">\n");
00180
00181 wprintf("<CENTER>");
00182 wprintf("<a href=\"display_add_node\">");
00183 wprintf(_("Add a new node"));
00184 wprintf("</A><br />\n");
00185 wprintf("</CENTER>");
00186
00187 wprintf("<TABLE class=\"netconf_banner\"><TR><TD>");
00188 wprintf("<SPAN CLASS=\"titlebar\">");
00189 wprintf(_("Currently configured nodes"));
00190 wprintf("</SPAN>\n");
00191 wprintf("</TD></TR></TABLE>\n");
00192 serv_puts("CONF getsys|application/x-citadel-ignet-config");
00193 serv_getln(buf, sizeof buf);
00194 if (buf[0] == '1') {
00195 wprintf("<CENTER><TABLE border=0>\n");
00196 while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
00197 extract_token(node, buf, 0, '|', sizeof node);
00198 wprintf("<TR><TD><FONT SIZE=+1>");
00199 escputs(node);
00200 wprintf("</FONT></TD>");
00201 wprintf("<TD><a href=\"display_edit_node&node=");
00202 urlescputs(node);
00203 wprintf("\">");
00204 wprintf(_("(Edit)"));
00205 wprintf("</A></TD>");
00206 wprintf("<TD><a href=\"display_confirm_delete_node&node=");
00207 urlescputs(node);
00208 wprintf("\">");
00209 wprintf(_("(Delete)"));
00210 wprintf("</A></TD>");
00211 wprintf("</TR>\n");
00212 }
00213 wprintf("</TABLE></CENTER>\n");
00214 }
00215 wDumpContent(1);
00216 }
00217
00221 void display_confirm_delete_node(void)
00222 {
00223 char node[SIZ];
00224
00225 output_headers(1, 1, 2, 0, 0, 0);
00226 wprintf("<div id=\"banner\">\n");
00227 wprintf("<TABLE class=\"netconf_banner\"><TR><TD>");
00228 wprintf("<SPAN CLASS=\"titlebar\">");
00229 wprintf(_("Confirm delete"));
00230 wprintf("</SPAN>\n");
00231 wprintf("</TD></TR></TABLE>\n");
00232 wprintf("</div>\n<div id=\"content\">\n");
00233
00234 strcpy(node, bstr("node"));
00235 wprintf("<CENTER>");
00236 wprintf(_("Are you sure you want to delete "));
00237 wprintf("<FONT SIZE=+1>");
00238 escputs(node);
00239 wprintf("</FONT>?<br />\n");
00240 wprintf("<a href=\"delete_node&node=");
00241 urlescputs(node);
00242 wprintf("\">");
00243 wprintf(_("Yes"));
00244 wprintf("</A> ");
00245 wprintf("<a href=\"display_netconf\">");
00246 wprintf(_("No"));
00247 wprintf("</A><br />\n");
00248 wDumpContent(1);
00249 }
00250
00254 void delete_node(void)
00255 {
00256 char buf[SIZ];
00257 char node[SIZ];
00258 char cnode[SIZ];
00259 FILE *fp;
00260
00261 strcpy(node, bstr("node") );
00262 fp = tmpfile();
00263 if (fp != NULL) {
00264 serv_puts("CONF getsys|application/x-citadel-ignet-config");
00265 serv_getln(buf, sizeof buf);
00266 if (buf[0] == '1') {
00267 while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
00268 extract_token(cnode, buf, 0, '|', sizeof cnode);
00269 if (strcasecmp(node, cnode)) {
00270 fprintf(fp, "%s\n", buf);
00271 }
00272 }
00273 }
00274 rewind(fp);
00275
00276 serv_puts("CONF putsys|application/x-citadel-ignet-config");
00277 serv_getln(buf, sizeof buf);
00278 if (buf[0] == '4') {
00279 while (fgets(buf, sizeof buf, fp) != NULL) {
00280 buf[strlen(buf)-1] = 0;
00281 serv_puts(buf);
00282 }
00283 serv_puts("000");
00284 }
00285 fclose(fp);
00286 }
00287
00288 display_netconf();
00289 }
00290
00294 void add_node(void)
00295 {
00296 char node[SIZ];
00297 char buf[SIZ];
00298
00299 strcpy(node, bstr("node"));
00300
00301 if (strlen(bstr("add_button")) > 0) {
00302 sprintf(buf, "NSET addnode|%s", node);
00303 serv_puts(buf);
00304 serv_getln(buf, sizeof buf);
00305 if (buf[0] == '1') {
00306 output_headers(1, 1, 0, 0, 0, 0);
00307 server_to_text();
00308 wprintf("<a href=\"display_netconf\">");
00309 wprintf(_("Back to menu"));
00310 wprintf("</A>\n");
00311 wDumpContent(1);
00312 } else {
00313 strcpy(WC->ImportantMessage, &buf[4]);
00314 display_netconf();
00315 }
00316 }
00317 }
00318
00319