-
-
+/*
+ * netconf.c
+ *
+ * Functions which handle network and sharing configuration.
+ *
+ * $Id$
+ */
#include <ctype.h>
#include <stdlib.h>
+void edit_node(void) {
+ char buf[SIZ];
+ char node[SIZ];
+ char cnode[SIZ];
+ FILE *fp;
+
+ if (!strcmp(bstr("sc"), "OK")) {
+ strcpy(node, bstr("node") );
+ fp = tmpfile();
+ if (fp != NULL) {
+ serv_puts("CONF getsys|application/x-citadel-ignet-config");
+ serv_gets(buf);
+ if (buf[0] == '1') {
+ while (serv_gets(buf), strcmp(buf, "000")) {
+ extract(cnode, buf, 0);
+ if (strcasecmp(node, cnode)) {
+ fprintf(fp, "%s\n", buf);
+ }
+ }
+ fprintf(fp, "%s|%s|%s|%s\n",
+ bstr("node"),
+ bstr("secret"),
+ bstr("host"),
+ bstr("port") );
+ }
+ rewind(fp);
+
+ serv_puts("CONF putsys|application/x-citadel-ignet-config");
+ serv_gets(buf);
+ if (buf[0] == '4') {
+ while (fgets(buf, sizeof buf, fp) != NULL) {
+ buf[strlen(buf)-1] = 0;
+ serv_puts(buf);
+ }
+ serv_puts("000");
+ }
+ fclose(fp);
+ }
+ }
+ display_netconf();
+}
-struct sharelist {
- struct sharelist *next;
- char shname[256];
-};
+void display_add_node(void)
+{
+ output_headers(1, 1, 2, 0, 0, 0, 0);
+ wprintf("<div id=\"banner\">\n");
+ wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>");
+ wprintf("<SPAN CLASS=\"titlebar\">Add new node</SPAN>");
+ wprintf("</TD></TR></TABLE>\n");
+ wprintf("</div>\n<div id=\"text\">\n");
+
+ wprintf("<FORM METHOD=\"POST\" ACTION=\"/edit_node\">\n");
+ wprintf("<CENTER><TABLE border=0>\n");
+ wprintf("<TR><TD>Node name</TD>");
+ wprintf("<TD><INPUT TYPE=\"text\" NAME=\"node\" MAXLENGTH=\"16\"></TD></TR>\n");
+ wprintf("<TR><TD>Shared secret</TD>");
+ wprintf("<TD><INPUT TYPE=\"password\" NAME=\"secret\" MAXLENGTH=\"16\"></TD></TR>\n");
+ wprintf("<TR><TD>Host or IP</TD>");
+ wprintf("<TD><INPUT TYPE=\"text\" NAME=\"host\" MAXLENGTH=\"64\"></TD></TR>\n");
+ wprintf("<TR><TD>Port</TD>");
+ wprintf("<TD><INPUT TYPE=\"text\" NAME=\"port\" MAXLENGTH=\"8\"></TD></TR>\n");
+ wprintf("</TABLE><br />");
+ wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"OK\">");
+ wprintf(" ");
+ wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\">");
+ wprintf("</CENTER></FORM>\n");
+
+ wDumpContent(1);
+}
void display_edit_node(void)
{
- char buf[256];
- char node[256];
- char sroom[256];
+ char buf[SIZ];
+ char node[SIZ];
+ char cnode[SIZ];
+ char csecret[SIZ];
+ char chost[SIZ];
+ char cport[SIZ];
strcpy(node, bstr("node"));
- 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\"");
- wprintf("<B>Edit share list for ");
+ output_headers(1, 1, 2, 0, 0, 0, 0);
+ wprintf("<div id=\"banner\">\n");
+ wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>");
+ wprintf("<SPAN CLASS=\"titlebar\">Edit node configuration for ");
escputs(node);
- wprintf("</B>\n");
- wprintf("</FONT></TD></TR></TABLE>\n");
-
- wprintf("<CENTER>\n");
- wprintf("<A HREF=\"/display_share&node=");
- urlescputs(node);
- wprintf("\">Add a shared room</A><BR>\n");
-
- wprintf("<A HREF=\"/display_netconf");
- wprintf("\">Return to network configuration screen</A><BR>\n");
+ wprintf("</SPAN>\n");
+ wprintf("</TD></TR></TABLE>\n");
+ wprintf("</div>\n<div id=\"text\">\n");
- serv_printf("NSET roomlist|%s", node);
+ serv_puts("CONF getsys|application/x-citadel-ignet-config");
serv_gets(buf);
if (buf[0] == '1') {
- wprintf("<TABLE border=0>\n");
while (serv_gets(buf), strcmp(buf, "000")) {
- extract(sroom, buf, 0);
- wprintf("<TR><TD><FONT SIZE=+1>");
- escputs(sroom);
- wprintf("</FONT></TD>");
- wprintf("<TD><A HREF=\"/display_confirm_unshare&sroom=");
- urlescputs(sroom);
- wprintf("&node=");
- urlescputs(node);
- wprintf("\">(UnShare)</A></TD>");
- wprintf("</TR>\n");
+ extract(cnode, buf, 0);
+ extract(csecret, buf, 1);
+ extract(chost, buf, 2);
+ extract(cport, buf, 3);
+
+ if (!strcasecmp(node, cnode)) {
+ wprintf("<FORM METHOD=\"POST\" ACTION=\"/edit_node\">\n");
+ wprintf("<CENTER><TABLE border=0>\n");
+ wprintf("<TR><TD>Node name</TD>");
+ wprintf("<TD><INPUT TYPE=\"text\" NAME=\"node\" MAXLENGTH=\"16\" VALUE=\"%s\"></TD></TR>\n", cnode);
+ wprintf("<TR><TD>Shared secret</TD>");
+ wprintf("<TD><INPUT TYPE=\"password\" NAME=\"secret\" MAXLENGTH=\"16\" VALUE=\"%s\"></TD></TR>\n", csecret);
+ wprintf("<TR><TD>Host or IP</TD>");
+ wprintf("<TD><INPUT TYPE=\"text\" NAME=\"host\" MAXLENGTH=\"64\" VALUE=\"%s\"></TD></TR>\n", chost);
+ wprintf("<TR><TD>Port</TD>");
+ wprintf("<TD><INPUT TYPE=\"text\" NAME=\"port\" MAXLENGTH=\"8\" VALUE=\"%s\"></TD></TR>\n", cport);
+ wprintf("</TABLE><br />");
+ wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"OK\">");
+ wprintf(" ");
+ wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\">");
+ wprintf("</CENTER></FORM>\n");
+ }
+
}
- wprintf("</TABLE></CENTER>\n");
}
+
+ else { /* command error getting configuration */
+ wprintf("%s<br />\n", &buf[4]);
+ }
+
wDumpContent(1);
}
void display_netconf(void)
{
- char buf[256];
- char node[256];
+ char buf[SIZ];
+ char node[SIZ];
- 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\"");
- wprintf("<B>Network configuration</B>\n");
- wprintf("</FONT></TD></TR></TABLE>\n");
+ output_headers(1, 1, 2, 0, 0, 0, 0);
+ wprintf("<div id=\"banner\">\n");
+ wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>");
+ wprintf("<SPAN CLASS=\"titlebar\">Network configuration</SPAN>\n");
+ wprintf("</TD></TR></TABLE>\n");
+ wprintf("</div>\n<div id=\"text\">\n");
wprintf("<CENTER>");
wprintf("<A HREF=\"/display_add_node\">");
- wprintf("Add a new node</A><BR>\n");
+ wprintf("Add a new node</A><br />\n");
wprintf("</CENTER>");
- wprintf("<TABLE WIDTH=100% BORDER=0 BGCOLOR=000077><TR><TD>");
- wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"");
- wprintf("<B>Currently configured nodes</B>\n");
- wprintf("</FONT></TD></TR></TABLE>\n");
- serv_puts("NSET nodelist");
+ wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>");
+ wprintf("<SPAN CLASS=\"titlebar\">Currently configured nodes</SPAN>\n");
+ wprintf("</TD></TR></TABLE>\n");
+ serv_puts("CONF getsys|application/x-citadel-ignet-config");
serv_gets(buf);
if (buf[0] == '1') {
wprintf("<CENTER><TABLE border=0>\n");
}
-void display_confirm_unshare(void)
-{
- char node[256];
- char sroom[256];
-
- 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\"");
- wprintf("<B>Confirm unshare</B>\n");
- wprintf("</FONT></TD></TR></TABLE>\n");
-
- strcpy(node, bstr("node"));
- strcpy(sroom, bstr("sroom"));
- wprintf("<CENTER>Are you sure you want to unshare <FONT SIZE=+1>");
- escputs(sroom);
- wprintf("</FONT>?<BR>\n");
- wprintf("<A HREF=\"/unshare&node=");
- urlescputs(node);
- wprintf("&sroom=");
- urlescputs(sroom);
- wprintf("\">Yes</A> ");
- wprintf("<A HREF=\"/display_edit_node&node=");
- urlescputs(node);
- wprintf("\">No</A><BR>\n");
- wDumpContent(1);
-}
-
-
void display_confirm_delete_node(void)
{
- char node[256];
+ char node[SIZ];
- 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\"");
- wprintf("<B>Confirm delete</B>\n");
- wprintf("</FONT></TD></TR></TABLE>\n");
+ output_headers(1, 1, 2, 0, 0, 0, 0);
+ wprintf("<div id=\"banner\">\n");
+ wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>");
+ wprintf("<SPAN CLASS=\"titlebar\">Confirm delete</SPAN>\n");
+ wprintf("</TD></TR></TABLE>\n");
+ wprintf("</div>\n<div id=\"text\">\n");
strcpy(node, bstr("node"));
wprintf("<CENTER>Are you sure you want to delete <FONT SIZE=+1>");
escputs(node);
- wprintf("</FONT>?<BR>\n");
+ wprintf("</FONT>?<br />\n");
wprintf("<A HREF=\"/delete_node&node=");
urlescputs(node);
wprintf("\">Yes</A> ");
- wprintf("<A HREF=\"/display_netconf\">No</A><BR>\n");
+ wprintf("<A HREF=\"/display_netconf\">No</A><br />\n");
wDumpContent(1);
}
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') {
- wprintf("HTTP/1.0 200 OK\n");
- output_headers(1);
- server_to_text();
- wprintf("<A HREF=\"/display_netconf\">Back to menu</A>\n");
- wDumpContent(1);
- } else {
- display_error(&buf[4]);
- }
-}
-
-
-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') {
- wprintf("HTTP/1.0 200 OK\n");
- output_headers(1);
- server_to_text();
- wprintf("<A HREF=\"/display_netconf\">Back to menu</A>\n");
- wDumpContent(1);
- } else {
- display_error(&buf[4]);
- }
-}
-
-
-
-void display_add_node(void)
-{
-
- 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 new node</B>\n");
- wprintf("</FONT></TD></TR></TABLE>\n");
-
- wprintf("<CENTER>");
- wprintf("<FORM METHOD=\"POST\" ACTION=\"/add_node\">\n");
-
- wprintf("Enter name of new node: ");
- wprintf("<INPUT TYPE=\"text\" NAME=\"node\" MAXLENGTH=\"64\"><BR>\n");
-
- wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Add\">");
- wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\">");
-
- wprintf("</FORM></CENTER>\n");
- wDumpContent(1);
-}
-
-
-
-void add_node(void)
-{
- char node[256];
- char buf[256];
- char sc[256];
-
- strcpy(node, bstr("node"));
- strcpy(sc, bstr("sc"));
-
- if (!strcmp(sc, "Add")) {
- sprintf(buf, "NSET addnode|%s", node);
- serv_puts(buf);
+ char buf[SIZ];
+ char node[SIZ];
+ char cnode[SIZ];
+ FILE *fp;
+
+ strcpy(node, bstr("node") );
+ fp = tmpfile();
+ if (fp != NULL) {
+ serv_puts("CONF getsys|application/x-citadel-ignet-config");
serv_gets(buf);
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");
- wDumpContent(1);
- } else {
- display_error(&buf[4]);
- }
- }
-}
-
-
-
-void display_share(void)
-{
- char buf[256];
- char node[256];
- char sroom[256];
- struct sharelist *shlist = NULL;
- struct sharelist *shptr;
- int already_shared;
-
- strcpy(node, bstr("node"));
-
- 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");
- wprintf("</FONT></TD></TR></TABLE>\n");
-
- wprintf("<CENTER>");
- wprintf("<FORM METHOD=\"POST\" ACTION=\"/share\">\n");
- wprintf("<INPUT TYPE=\"hidden\" NAME=\"node\" VALUE=\"");
- urlescputs(node);
- wprintf("\">\n");
-
- sprintf(buf, "NSET roomlist|%s", node);
- serv_puts(buf);
- serv_gets(buf);
- if (buf[0] == '1') {
- while (serv_gets(buf), strcmp(buf, "000")) {
- shptr = (struct sharelist *)
- 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")) {
- extract(sroom, buf, 0);
- already_shared = 0;
- for (shptr = shlist; shptr != NULL; shptr = shptr->next) {
- if (!strcasecmp(sroom, shptr->shname))
- already_shared = 1;
+ while (serv_gets(buf), strcmp(buf, "000")) {
+ extract(cnode, buf, 0);
+ if (strcasecmp(node, cnode)) {
+ fprintf(fp, "%s\n", buf);
+ }
}
+ }
+ rewind(fp);
- if (already_shared == 0) {
- wprintf("<OPTION>");
- escputs(sroom);
- wprintf("\n");
+ serv_puts("CONF putsys|application/x-citadel-ignet-config");
+ serv_gets(buf);
+ if (buf[0] == '4') {
+ while (fgets(buf, sizeof buf, fp) != NULL) {
+ buf[strlen(buf)-1] = 0;
+ serv_puts(buf);
}
+ serv_puts("000");
}
- }
- 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>\n");
- wDumpContent(1);
-
- /* free the list */
- while (shlist != NULL) {
- shptr = shlist->next;
- free(shlist);
- shlist = shptr;
+ fclose(fp);
}
+ display_netconf();
}
-
-void share(void)
+void add_node(void)
{
- char node[256];
- char buf[256];
- char sc[256];
- char sroom[256];
+ char node[SIZ];
+ char buf[SIZ];
+ char sc[SIZ];
strcpy(node, bstr("node"));
strcpy(sc, bstr("sc"));
- strcpy(sroom, bstr("sroom"));
- if (!strcmp(sc, "Share")) {
- sprintf(buf, "NSET share|%s|%s", node, sroom);
+ if (!strcmp(sc, "Add")) {
+ sprintf(buf, "NSET addnode|%s", node);
serv_puts(buf);
serv_gets(buf);
if (buf[0] == '1') {
- wprintf("HTTP/1.0 200 OK\n");
- output_headers(1);
+ output_headers(1, 1, 0, 0, 0, 0, 0);
server_to_text();
wprintf("<A HREF=\"/display_netconf\">Back to menu</A>\n");
wDumpContent(1);
} else {
- display_error(&buf[4]);
+ strcpy(WC->ImportantMessage, &buf[4]);
+ display_netconf();
}
-
}
}
+
+