4 * Functions which handle Internet domain configuration etc.
15 #include <sys/types.h>
17 #include <sys/socket.h>
20 #include <netinet/in.h>
32 void display_inetconf(void)
49 char *ic_spec[ic_max];
52 char *ic_keyword[] = {
61 char *ic_boxtitle[] = {
71 "(domains for which this host receives mail)",
72 "(domains whose subdomains match Citadel hosts)",
73 "(domains mapped with the Global Address Book)",
74 "(hosts running the SpamAssassin service)",
75 "(hosts running a Realtime Blackhole List)",
76 "(if present, forward all outbound mail to one of these hosts)"
79 for (i=0; i<ic_max; ++i) {
80 ic_spec[i] = strdup("");
85 wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=\"#444455\"><TR><TD>");
86 wprintf("<SPAN CLASS=\"titlebar\">Internet configuration</SPAN>\n");
87 wprintf("</TD></TR></TABLE>\n");
89 serv_printf("CONF GETSYS|application/x-citadel-internet-config");
91 if (buf[0] == '1') while (serv_gets(buf), strcmp(buf, "000")) {
93 extract(ename, buf, 0);
94 extract(etype, buf, 1);
96 for (i=0; i<ic_max; ++i) {
97 if (!strcasecmp(etype, ic_keyword[i])) {
103 ic_spec[which] = realloc(ic_spec[which], strlen(ic_spec[which]) + strlen(ename) + 2);
104 if (strlen(ic_spec[which]) > 0) strcat(ic_spec[which], "\n");
105 strcat(ic_spec[which], ename);
108 ic_misc = realloc(ic_misc, strlen(ic_misc) + strlen(buf) + 2);
109 if (strlen(ic_misc) > 0) strcat(ic_misc, "\n");
110 strcat(ic_misc, buf);
115 wprintf("<TABLE border=0 width=100%%>\n");
116 for (which=0; which<ic_max; ++which) {
117 if (which % 2 == 0) {
121 svprintf("BOXTITLE", WCS_STRING, ic_boxtitle[which]);
122 do_template("beginbox");
123 wprintf("<span class=\"menudesc\">");
124 escputs(ic_desc[which]);
125 wprintf("</span><br>");
126 wprintf("<TABLE border=0 cellspacing=0 cellpadding=0 width=100%%>\n");
127 if (strlen(ic_spec[which]) > 0) {
128 for (i=0; i<num_tokens(ic_spec[which], '\n'); ++i) {
129 wprintf("<TR><TD ALIGN=LEFT>");
130 extract_token(buf, ic_spec[which], i, '\n');
132 wprintf("</TD><TD ALIGN=RIGHT>"
133 "<A HREF=\"/save_inetconf?oper=delete&ename=");
135 wprintf("&etype=%s\" ", ic_keyword[which]);
136 wprintf("onClick=\"return confirm('Delete ");
139 wprintf("<font size=-1>(Delete)</font></a></TD></TR>\n");
142 wprintf("<TR><TD> </TD><TD ALIGN=RIGHT>(add)</TD></TR></TABLE>\n");
143 do_template("endbox");
145 if (which % 2 != 0) {
149 wprintf("</TABLE>\n");
153 for (i=0; i<ic_max; ++i) {
160 void save_inetconf(void) {
162 strcpy(WC->ImportantMessage, "FIXME did we do anything?");