]>
git.ipfire.org Git - ipfire-2.x.git/blob - src/setup/misc.c
0710c5b955a6488c62ea4c5ff71793a19bd78a7b
1 /* SmoothWall setup program.
3 * This program is distributed under the terms of the GNU General Public
4 * Licence. See the file COPYING for details.
6 * (c) Lawrence Manning, 2001
7 * Misc. stuff for the lib.
13 #define _(x) dgettext("setup", x)
22 /* This will rewrite /etc/hosts, /etc/hosts.*, and the apache ServerName file. */
23 int writehostsfiles(void)
25 char address
[STRING_SIZE
] = "";
26 char netaddress
[STRING_SIZE
] = "";
27 char netmask
[STRING_SIZE
] = "";
31 char hostname
[STRING_SIZE
];
32 char domainname
[STRING_SIZE
] = "localdomain";
33 char commandstring
[STRING_SIZE
];
34 char buffer
[STRING_SIZE
];
37 if (!(readkeyvalues(kv
, CONFIG_ROOT
"/ethernet/settings")))
40 errorbox(_("Unable to open settings file"));
43 findkey(kv
, "GREEN_ADDRESS", address
);
44 findkey(kv
, "GREEN_NETADDRESS", netaddress
);
45 findkey(kv
, "GREEN_NETMASK", netmask
);
49 if (!(readkeyvalues(kv
, CONFIG_ROOT
"/main/settings")))
52 errorbox(_("Unable to open settings file"));
55 strcpy(hostname
, SNAME
);
56 findkey(kv
, "HOSTNAME", hostname
);
57 findkey(kv
, "DOMAINNAME", domainname
);
60 if (!(file
= fopen(CONFIG_ROOT
"/main/hosts", "r")))
62 errorbox(_("Unable to open main hosts file."));
65 if (!(hosts
= fopen("/etc/hosts", "w")))
67 errorbox(_("Unable to write /etc/hosts."));
70 fprintf(hosts
, "127.0.0.1\tlocalhost\n");
71 if (strlen(domainname
))
72 fprintf(hosts
, "%s\t%s.%s\t%s\n",address
,hostname
,domainname
,hostname
);
74 fprintf(hosts
, "%s\t%s\n",address
,hostname
);
75 while (fgets(buffer
, STRING_SIZE
, file
))
77 char *token
, *ip
, *host
, *domain
;
79 buffer
[strlen(buffer
) - 1] = 0;
81 token
= strtok(buffer
, ",");
83 ip
= strtok(NULL
, ",");
84 host
= strtok(NULL
, ",");
85 domain
= strtok(NULL
, ",");
90 if (strlen(ip
) < 7 || strlen(ip
) > 15
91 || strspn(ip
, "0123456789.") != strlen(ip
))
94 if (strspn(host
, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-") != strlen(host
))
98 fprintf(hosts
, "%s\t%s.%s\t%s\n",ip
,host
,domain
,host
);
100 fprintf(hosts
, "%s\t%s\n",ip
,host
);
105 /* TCP wrappers stuff. */
106 if (!(file
= fopen("/etc/hosts.deny", "w")))
108 errorbox(_("Unable to write /etc/hosts.deny."));
111 fprintf(file
, "ALL : ALL\n");
114 if (!(file
= fopen("/etc/hosts.allow", "w")))
116 errorbox(_("Unable to write /etc/hosts.allow."));
119 fprintf(file
, "sshd : ALL\n");
120 fprintf(file
, "ALL : localhost\n");
121 fprintf(file
, "ALL : %s/%s\n", netaddress
, netmask
);
124 sprintf(commandstring
, "/bin/hostname %s.%s", hostname
, domainname
);
125 if (mysystem(NULL
, commandstring
))
127 errorbox(_("Unable to set hostname."));