]>
Commit | Line | Data |
---|---|---|
cd1a2927 MT |
1 | /*\r |
2 | * This file is part of the IPCop Firewall.\r | |
3 | *\r | |
4 | * IPCop is free software; you can redistribute it and/or modify\r | |
5 | * it under the terms of the GNU General Public License as published by\r | |
6 | * the Free Software Foundation; either version 2 of the License, or\r | |
7 | * (at your option) any later version.\r | |
8 | *\r | |
9 | * IPCop is distributed in the hope that it will be useful,\r | |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of\r | |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r | |
12 | * GNU General Public License for more details.\r | |
13 | *\r | |
14 | * You should have received a copy of the GNU General Public License\r | |
15 | * along with IPCop; if not, write to the Free Software\r | |
16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r | |
17 | *\r | |
18 | * Copyright 2002: Mark Wormgoor <mark@wormgoor.com>\r | |
19 | * \r | |
20 | * $Id: upgrade-v130-v140.c,v 1.12.2.35 2004/11/11 09:40:03 alanh Exp $\r | |
21 | * \r | |
22 | */\r | |
23 | \r | |
24 | #include "install.h"\r | |
25 | \r | |
26 | extern char **ctr;\r | |
27 | \r | |
28 | int _handledomainname(void)\r | |
29 | {\r | |
30 | char domainname[STRING_SIZE] = "localdomain";\r | |
31 | struct keyvalue *kv = initkeyvalues();\r | |
32 | char *values[] = { domainname, NULL }; /* pointers for the values. */\r | |
33 | struct newtWinEntry entries[] =\r | |
34 | { { "", &values[0], 0,}, { NULL, NULL, 0 } };\r | |
35 | int rc;\r | |
36 | int result;\r | |
37 | \r | |
38 | if (!(readkeyvalues(kv, "/harddisk" CONFIG_ROOT "/main/settings")))\r | |
39 | {\r | |
40 | freekeyvalues(kv);\r | |
41 | errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);\r | |
42 | return 0;\r | |
43 | } \r | |
44 | \r | |
45 | findkey(kv, "DOMAINNAME", domainname);\r | |
46 | \r | |
47 | /* already have a domainname */\r | |
48 | if (strlen(domainname))\r | |
49 | return 0;\r | |
50 | \r | |
51 | for (;;)\r | |
52 | { \r | |
53 | rc = newtWinEntries(ctr[TR_DOMAINNAME], ctr[TR_ENTER_DOMAINNAME],\r | |
54 | 50, 5, 5, 40, entries, ctr[TR_OK], ctr[TR_CANCEL], NULL); \r | |
55 | \r | |
56 | if (rc == 1)\r | |
57 | {\r | |
58 | strcpy(domainname, values[0]);\r | |
59 | if (strchr(domainname, ' '))\r | |
60 | errorbox(ctr[TR_DOMAINNAME_CANNOT_CONTAIN_SPACES]);\r | |
61 | else\r | |
62 | { \r | |
63 | replacekeyvalue(kv, "DOMAINNAME", domainname);\r | |
64 | writekeyvalues(kv, "/harddisk" CONFIG_ROOT "/main/settings");\r | |
65 | result = 1;\r | |
66 | break;\r | |
67 | }\r | |
68 | }\r | |
69 | else\r | |
70 | {\r | |
71 | result = 0;\r | |
72 | break;\r | |
73 | }\r | |
74 | }\r | |
75 | free(values[0]);\r | |
76 | freekeyvalues(kv);\r | |
77 | \r | |
78 | return result;\r | |
79 | } \r | |
80 | \r | |
81 | int _add_logwatch_user() {\r | |
82 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel logwatch");\r | |
83 | mysystem("/bin/chroot /harddisk /usr/sbin/groupdel logwatch");\r | |
84 | mysystem("/bin/chroot /harddisk /usr/sbin/groupadd -g 102 logwatch");\r | |
85 | mysystem("/bin/chroot /harddisk /usr/sbin/useradd -u 102 -g logwatch -d /var/log/logwatch -s /bin/false logwatch");\r | |
86 | \r | |
87 | return 0;\r | |
88 | }\r | |
89 | \r | |
90 | int _fixsquid() {\r | |
91 | FILE *squidreadfile;\r | |
92 | FILE *squidwritefile;\r | |
93 | FILE *aclreadfile;\r | |
94 | char hostname[STRING_SIZE] = "";\r | |
95 | char domainname[STRING_SIZE] = "";\r | |
96 | char squidtemp[STRING_SIZE];\r | |
97 | struct keyvalue *kv = initkeyvalues();\r | |
98 | int already_upgraded = 0;\r | |
99 | int updated = 0;\r | |
100 | \r | |
101 | if (!(squidreadfile = fopen ("/harddisk" CONFIG_ROOT "/proxy/squid.conf", "r"))) return 1;\r | |
102 | if (!(squidwritefile = fopen ("/harddisk" CONFIG_ROOT "/proxy/squid.conf.new", "w"))) \r | |
103 | {\r | |
104 | fclose(squidreadfile);\r | |
105 | return 1;\r | |
106 | }\r | |
107 | \r | |
108 | if (!(readkeyvalues(kv, "/harddisk" CONFIG_ROOT "/main/settings")))\r | |
109 | {\r | |
110 | fclose (squidwritefile);\r | |
111 | fclose (squidreadfile);\r | |
112 | freekeyvalues(kv);\r | |
113 | errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);\r | |
114 | return 1;\r | |
115 | }\r | |
116 | \r | |
117 | findkey(kv, "HOSTNAME", hostname);\r | |
118 | findkey(kv, "DOMAINNAME", domainname);\r | |
119 | freekeyvalues(kv);\r | |
120 | \r | |
121 | while (fgets (squidtemp, STRING_SIZE, squidreadfile) != NULL) {\r | |
122 | /* this will fail if we've already been upgraded, which is ok */\r | |
123 | if (!strncmp(squidtemp, "reply_body_max_size 0 KB", 24)) {\r | |
124 | sprintf(squidtemp, "reply_body_max_size 0 allow all\n");\r | |
125 | }\r | |
126 | if (!strncmp(squidtemp, "cache_store_log /var/log/squid/store.log", 40)) {\r | |
127 | sprintf(squidtemp, "cache_store_log none\n");\r | |
128 | }\r | |
129 | fputs(squidtemp, squidwritefile);\r | |
130 | \r | |
131 | /* so for us developers we skip already upgraded squiddies */\r | |
132 | if (!strncmp(squidtemp, "visible_hostname", 16)) {\r | |
133 | already_upgraded = 1;\r | |
134 | }\r | |
135 | \r | |
136 | /* Check for the new acl's */\r | |
137 | if (!strncmp(squidtemp, "__GREEN_IP__", 12)) {\r | |
138 | updated = 1;\r | |
139 | }\r | |
140 | }\r | |
141 | if (!already_upgraded) {\r | |
142 | sprintf(squidtemp, "visible_hostname %s.%s\n", hostname, domainname);\r | |
143 | fputs(squidtemp, squidwritefile);\r | |
144 | }\r | |
145 | \r | |
146 | fclose (squidwritefile);\r | |
147 | fclose (squidreadfile);\r | |
148 | \r | |
149 | rename ("/harddisk" CONFIG_ROOT "/proxy/squid.conf.new",\r | |
150 | "/harddisk" CONFIG_ROOT "/proxy/squid.conf");\r | |
151 | \r | |
152 | replace("/harddisk" CONFIG_ROOT "/proxy/squid.conf", "cache_dir ufs", "cache_dir aufs");\r | |
153 | \r | |
154 | if (!updated) {\r | |
155 | rename ("/harddisk" CONFIG_ROOT "/proxy/acl",\r | |
156 | "/harddisk" CONFIG_ROOT "/proxy/acl.old");\r | |
157 | rename ("/harddisk" CONFIG_ROOT "/proxy/acl-1.4",\r | |
158 | "/harddisk" CONFIG_ROOT "/proxy/acl");\r | |
159 | } else {\r | |
160 | if (!(aclreadfile = fopen ("/harddisk" CONFIG_ROOT "/proxy/acl", "r"))) {\r | |
161 | rename ("/harddisk" CONFIG_ROOT "/proxy/acl-1.4",\r | |
162 | "/harddisk" CONFIG_ROOT "/proxy/acl");\r | |
163 | } else {\r | |
164 | unlink ("/harddisk" CONFIG_ROOT "/proxy/acl-1.4");\r | |
165 | fclose(aclreadfile);\r | |
166 | }\r | |
167 | }\r | |
168 | \r | |
169 | chown ("/harddisk" CONFIG_ROOT "/proxy/squid.conf", 99, 99);\r | |
170 | chown ("/harddisk" CONFIG_ROOT "/proxy/acl", 99, 99);\r | |
171 | return 0;\r | |
172 | }\r | |
173 | \r | |
174 | int _fixeagleusb() {\r | |
175 | FILE *eaglereadfile;\r | |
176 | FILE *eaglewritefile;\r | |
177 | char eagletemp[STRING_SIZE];\r | |
178 | int already_upgraded = 0;\r | |
179 | \r | |
180 | if (!(eaglereadfile = fopen ("/harddisk" CONFIG_ROOT "/eagle-usb/eagle-usb.conf", "r"))) return 1;\r | |
181 | if (!(eaglewritefile = fopen ("/harddisk" CONFIG_ROOT "/eagle-usb/eagle-usb.conf.new", "w"))) \r | |
182 | {\r | |
183 | fclose(eaglereadfile);\r | |
184 | return 1;\r | |
185 | }\r | |
186 | \r | |
187 | while (fgets (eagletemp, STRING_SIZE, eaglereadfile) != NULL) {\r | |
188 | /* so for us developers we skip already upgraded configs */\r | |
189 | if (!strncmp(eagletemp, "<eaglectrl>", 11)) {\r | |
190 | already_upgraded = 1;\r | |
191 | }\r | |
192 | }\r | |
193 | \r | |
194 | rewind(eaglereadfile);\r | |
195 | if (!already_upgraded)\r | |
196 | fprintf(eaglewritefile, "<eaglectrl>\n");\r | |
197 | while (fgets (eagletemp, STRING_SIZE, eaglereadfile) != NULL)\r | |
198 | fputs(eagletemp, eaglewritefile);\r | |
199 | if (!already_upgraded)\r | |
200 | fprintf(eaglewritefile, "</eaglectrl>\n");\r | |
201 | \r | |
202 | fclose (eaglewritefile);\r | |
203 | fclose (eaglereadfile);\r | |
204 | \r | |
205 | rename ("/harddisk" CONFIG_ROOT "/eagle-usb/eagle-usb.conf.new",\r | |
206 | "/harddisk" CONFIG_ROOT "/eagle-usb/eagle-usb.conf");\r | |
207 | \r | |
208 | replace("/harddisk" CONFIG_ROOT "/eagle-usb/eagle-usb.conf", "Linetype=00000001", "Linetype=0A");\r | |
209 | \r | |
210 | chown ("/harddisk" CONFIG_ROOT "/eagle-usb/eagle-usb.conf", 99, 99);\r | |
211 | unlink("/harddisk" CONFIG_ROOT "/eagle-usb/dsp_code_pots.bin");\r | |
212 | unlink("/harddisk" CONFIG_ROOT "/eagle-usb/dsp_code_isdn.bin");\r | |
213 | return 0;\r | |
214 | }\r | |
215 | \r | |
216 | int _fixdhcp_30() {\r | |
217 | FILE *dhcpreadfile;\r | |
218 | FILE *dhcpwritefile;\r | |
219 | char dhcptemp[STRING_SIZE];\r | |
220 | \r | |
221 | if (!(dhcpreadfile = fopen ("/harddisk" CONFIG_ROOT "/dhcp/dhcpd.conf", "r"))) return 1;\r | |
222 | if (!(dhcpwritefile = fopen ("/harddisk" CONFIG_ROOT "/dhcp/dhcpd.conf.new", "w"))) \r | |
223 | {\r | |
224 | fclose(dhcpreadfile);\r | |
225 | return 1;\r | |
226 | }\r | |
227 | fprintf (dhcpwritefile, "authoritative;\n");\r | |
228 | fprintf (dhcpwritefile, "deny bootp;\n");\r | |
229 | fprintf (dhcpwritefile, "ddns-update-style none;\n");\r | |
230 | while (fgets (dhcptemp, STRING_SIZE, dhcpreadfile) != NULL) {\r | |
231 | int write = 1;\r | |
232 | \r | |
233 | /* so for us developers we skip already upgraded dhcp files */\r | |
234 | if (!strncmp(dhcptemp, "authoritative", 13)) {\r | |
235 | write = 0;\r | |
236 | }\r | |
237 | /* so for us developers we skip already upgraded dhcp files */\r | |
238 | if (!strncmp(dhcptemp, "ddns-update-style", 17)) {\r | |
239 | write = 0;\r | |
240 | }\r | |
241 | /* so for us developers we skip already upgraded dhcp files */\r | |
242 | if (!strncmp(dhcptemp, "deny bootp", 10)) {\r | |
243 | write = 0;\r | |
244 | }\r | |
245 | \r | |
246 | if (write)\r | |
247 | fputs(dhcptemp, dhcpwritefile);\r | |
248 | }\r | |
249 | \r | |
250 | fclose(dhcpreadfile);\r | |
251 | fclose(dhcpwritefile);\r | |
252 | \r | |
253 | rename ("/harddisk" CONFIG_ROOT "/dhcp/dhcpd.conf.new",\r | |
254 | "/harddisk" CONFIG_ROOT "/dhcp/dhcpd.conf");\r | |
255 | chown ("/harddisk" CONFIG_ROOT "/dhcp/dhcpd.conf", 99, 99);\r | |
256 | \r | |
257 | /* This one will get converted again furthur down */\r | |
258 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "WINS=", "WINS1=");\r | |
259 | \r | |
260 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "START_ADDR=", "START_ADDR_GREEN=");\r | |
261 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "END_ADDR=", "END_ADDR_GREEN=");\r | |
262 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "DOMAIN_NAME=", "DOMAIN_NAME_GREEN=");\r | |
263 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "DEFAULT_LEASE_TIME=", "DEFAULT_LEASE_TIME_GREEN=");\r | |
264 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "MAX_LEASE_TIME=", "MAX_LEASE_TIME_GREEN=");\r | |
265 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "DNS1=", "DNS1_GREEN=");\r | |
266 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "DNS2=", "DNS2_GREEN=");\r | |
267 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "WINS1=", "WINS1_GREEN=");\r | |
268 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "WINS2=", "WINS2_GREEN=");\r | |
269 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "ENABLE=", "ENABLE_GREEN=");\r | |
270 | replace("/harddisk" CONFIG_ROOT "/dhcp/settings", "range dynamic-bootp", "range");\r | |
271 | chown ("/harddisk" CONFIG_ROOT "/dhcp/settings", 99, 99);\r | |
272 | \r | |
273 | if ((dhcpreadfile = fopen ("/harddisk" CONFIG_ROOT "/dhcp/enable", "r")))\r | |
274 | {\r | |
275 | fclose(dhcpreadfile);\r | |
276 | rename ("/harddisk" CONFIG_ROOT "/dhcp/enable",\r | |
277 | "/harddisk" CONFIG_ROOT "/dhcp/enable_green");\r | |
278 | chown ("/harddisk" CONFIG_ROOT "/dhcp/enable_green", 99, 99);\r | |
279 | }\r | |
280 | \r | |
281 | return 0;\r | |
282 | }\r | |
283 | \r | |
284 | int _add_sshd_user() {\r | |
285 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel sshd");\r | |
286 | mysystem("/bin/chroot /harddisk /usr/sbin/groupdel sshd");\r | |
287 | mysystem("/bin/chroot /harddisk /usr/sbin/groupadd -g 74 sshd");\r | |
288 | mysystem("/bin/chroot /harddisk /usr/sbin/useradd -u 74 -g sshd -d /var/empty/sshd -s /bin/false -M sshd");\r | |
289 | \r | |
290 | return 0;\r | |
291 | }\r | |
292 | \r | |
293 | int _add_dnsmasq_user() {\r | |
294 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel dnsmasq");\r | |
295 | mysystem("/bin/chroot /harddisk /usr/sbin/groupdel dnsmasq");\r | |
296 | mysystem("/bin/chroot /harddisk /usr/sbin/groupadd -g 103 dnsmasq");\r | |
297 | mysystem("/bin/chroot /harddisk /usr/sbin/useradd -u 103 -g dnsmasq -d / -s /bin/false -M dnsmasq");\r | |
298 | \r | |
299 | return 0;\r | |
300 | }\r | |
301 | \r | |
302 | int _add_cron_user() {\r | |
303 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel cron");\r | |
304 | mysystem("/bin/chroot /harddisk /usr/sbin/groupdel cron");\r | |
305 | mysystem("/bin/chroot /harddisk /usr/sbin/groupadd -g 104 cron");\r | |
306 | mysystem("/bin/chroot /harddisk /usr/sbin/useradd -u 104 -g cron -d / -s /bin/false -M cron");\r | |
307 | \r | |
308 | return 0;\r | |
309 | }\r | |
310 | \r | |
311 | int _add_sysklogd_user() {\r | |
312 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel syslogd");\r | |
313 | mysystem("/bin/chroot /harddisk /usr/sbin/groupdel syslogd");\r | |
314 | mysystem("/bin/chroot /harddisk /usr/sbin/groupadd -g 105 syslogd");\r | |
315 | mysystem("/bin/chroot /harddisk /usr/sbin/useradd -u 105 -g syslogd -d / -s /bin/false -M syslogd");\r | |
316 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel klogd");\r | |
317 | mysystem("/bin/chroot /harddisk /usr/sbin/groupdel klogd");\r | |
318 | mysystem("/bin/chroot /harddisk /usr/sbin/groupadd -g 106 klogd");\r | |
319 | mysystem("/bin/chroot /harddisk /usr/sbin/useradd -u 106 -g klogd -d / -s /bin/false -M klogd");\r | |
320 | \r | |
321 | return 0;\r | |
322 | }\r | |
323 | \r | |
324 | int _del_setup_user() {\r | |
325 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel setup");\r | |
326 | \r | |
327 | return 0;\r | |
328 | }\r | |
329 | \r | |
330 | int _create_nobody_dir(){\r | |
331 | mysystem("/bin/chroot /harddisk /usr/sbin/usermod -d /home/nobody nobody");\r | |
332 | \r | |
333 | return 0;\r | |
334 | }\r | |
335 | \r | |
336 | int _del_useless_user_group()\r | |
337 | {\r | |
338 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel games");\r | |
339 | mysystem("/bin/chroot /harddisk /usr/sbin/groupdel games");\r | |
340 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel news");\r | |
341 | mysystem("/bin/chroot /harddisk /usr/sbin/groupdel news");\r | |
342 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel ftp");\r | |
343 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel gopher");\r | |
344 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel lp");\r | |
345 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel uucp");\r | |
346 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel adm");\r | |
347 | mysystem("/bin/chroot /harddisk /usr/sbin/groupdel adm");\r | |
348 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel operator");\r | |
349 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel sync");\r | |
350 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel shutdown");\r | |
351 | mysystem("/bin/chroot /harddisk /usr/sbin/userdel halt");\r | |
352 | mysystem("/bin/chroot /harddisk /usr/sbin/groupdel man");\r | |
353 | return 0;\r | |
354 | }\r | |
355 | \r | |
356 | void _del_pulsardsl_dir()\r | |
357 | {\r | |
358 | mysystem("/bin/chroot /harddisk /bin/rm -rf " CONFIG_ROOT "/pulsardsl");\r | |
359 | }\r | |
360 | \r | |
361 | void _del_fritzdsl_dir()\r | |
362 | {\r | |
363 | mysystem("/bin/chroot /harddisk /bin/rm -rf " CONFIG_ROOT "/fritzdsl");\r | |
364 | }\r | |
365 | \r | |
366 | int _convert_vpn() {\r | |
367 | int count=1;\r | |
368 | FILE *vpn1, *vpn2;\r | |
369 | char vpnip[STRING_SIZE] = "";\r | |
370 | char greennetaddr[STRING_SIZE] = "";\r | |
371 | struct keyvalue *kv = initkeyvalues();\r | |
372 | char vpnsrctemp[STRING_SIZE], vpndsttemp[STRING_SIZE];\r | |
373 | char *name, *left, *left_nexthop, *left_subnet, *right, *right_nexthop, *right_subnet, *secret, *enabled, *compression;\r | |
374 | \r | |
375 | if (!(vpn1 = fopen ("/harddisk" CONFIG_ROOT "/vpn/config", "r"))) return 1;\r | |
376 | if (!(vpn2 = fopen ("/harddisk" CONFIG_ROOT "/vpn/config.new", "w"))) \r | |
377 | {\r | |
378 | fclose(vpn1);\r | |
379 | return 1;\r | |
380 | }\r | |
381 | \r | |
382 | if (!(readkeyvalues(kv, "/harddisk" CONFIG_ROOT "/ethernet/settings")))\r | |
383 | {\r | |
384 | fclose (vpn1);\r | |
385 | fclose (vpn2);\r | |
386 | freekeyvalues(kv);\r | |
387 | errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);\r | |
388 | return 0;\r | |
389 | }\r | |
390 | \r | |
391 | findkey(kv, "GREEN_NETADDRESS", greennetaddr);\r | |
392 | freekeyvalues(kv);\r | |
393 | \r | |
394 | kv = initkeyvalues();\r | |
395 | if (!(readkeyvalues(kv, "/harddisk" CONFIG_ROOT "/vpn/settings")))\r | |
396 | {\r | |
397 | fclose (vpn1);\r | |
398 | fclose (vpn2);\r | |
399 | freekeyvalues(kv);\r | |
400 | errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);\r | |
401 | return 0;\r | |
402 | } \r | |
403 | \r | |
404 | /* if no VPN_IP is defined, we must turn it off to force the user\r | |
405 | * to enter a value once upgraded */\r | |
406 | findkey(kv, "VPN_IP", vpnip);\r | |
407 | if (strlen(vpnip) == 0) {\r | |
408 | replacekeyvalue(kv, "ENABLED", "off");\r | |
409 | writekeyvalues(kv, "/harddisk" CONFIG_ROOT "/vpn/settings");\r | |
410 | }\r | |
411 | freekeyvalues(kv);\r | |
412 | \r | |
413 | while (fgets (vpnsrctemp, STRING_SIZE, vpn1) != NULL) {\r | |
414 | if (isdigit (vpnsrctemp[0])) {\r | |
415 | /* Already converted to new format */\r | |
416 | fputs(vpnsrctemp, vpn2);\r | |
417 | continue;\r | |
418 | }\r | |
419 | \r | |
420 | name = NULL;\r | |
421 | left = NULL;\r | |
422 | left_nexthop = NULL;\r | |
423 | left_subnet = NULL;\r | |
424 | right = NULL;\r | |
425 | right_nexthop = NULL;\r | |
426 | right_subnet = NULL;\r | |
427 | secret = NULL;\r | |
428 | enabled = NULL;\r | |
429 | compression = NULL;\r | |
430 | \r | |
431 | if (vpnsrctemp[strlen(vpnsrctemp) - 1] == '\n')\r | |
432 | vpnsrctemp[strlen(vpnsrctemp) - 1] = '\0';\r | |
433 | name = strtok (vpnsrctemp, ",");\r | |
434 | left = strtok (NULL, ",");\r | |
435 | left_nexthop = strtok (NULL, ",");\r | |
436 | left_subnet = strtok (NULL, ",");\r | |
437 | right = strtok (NULL, ",");\r | |
438 | right_nexthop = strtok (NULL, ",");\r | |
439 | right_subnet = strtok (NULL, ",");\r | |
440 | secret = strtok (NULL, ",");\r | |
441 | enabled = strtok (NULL, ",");\r | |
442 | compression = strtok (NULL, ",");\r | |
443 | if (!(name && left && left_subnet &&\r | |
444 | right && right_subnet &&\r | |
445 | secret && enabled && compression ))\r | |
446 | continue;\r | |
447 | \r | |
448 | /* Try and guess what side IPCop is on; defaults to left */\r | |
449 | if (strstr(greennetaddr, right_subnet)) {\r | |
450 | sprintf (vpndsttemp, "%d,%s,%s,,net,psk,%s,right,,%s,,%s,%s,,%s,,,,,,,,,,,,,RED\n",\r | |
451 | count, enabled, name, secret, right_subnet,\r | |
452 | left, left_subnet, compression);\r | |
453 | } else {\r | |
454 | sprintf (vpndsttemp, "%d,%s,%s,,net,psk,%s,left,,%s,,%s,%s,,%s,,,,,,,,,,,,,RED\n",\r | |
455 | count, enabled, name, secret, left_subnet,\r | |
456 | right, right_subnet, compression);\r | |
457 | }\r | |
458 | fputs(vpndsttemp, vpn2);\r | |
459 | \r | |
460 | count++;\r | |
461 | }\r | |
462 | \r | |
463 | /* Close source and destination vpn files */\r | |
464 | fclose (vpn1);\r | |
465 | fclose (vpn2);\r | |
466 | \r | |
467 | /* Move the new vpn file */\r | |
468 | rename ("/harddisk" CONFIG_ROOT "/vpn/config.new",\r | |
469 | "/harddisk" CONFIG_ROOT "/vpn/config");\r | |
470 | chown ("/harddisk" CONFIG_ROOT "/vpn/config", 99, 99);\r | |
471 | \r | |
472 | return 0;\r | |
473 | }\r | |
474 | \r | |
475 | void _convert_ppp_settings_V140() {\r | |
476 | DIR *dirp;\r | |
477 | struct dirent *dp;\r | |
478 | char filename[STRING_SIZE];\r | |
479 | \r | |
480 | dirp = opendir( "/harddisk" CONFIG_ROOT "/ppp" );\r | |
481 | while ( (dp = readdir( dirp )) != NULL ) {\r | |
482 | if ( strstr( dp->d_name, "settings" ) == dp->d_name ) {\r | |
483 | snprintf (filename, STRING_SIZE-1, "%s/%s", \r | |
484 | "/harddisk" CONFIG_ROOT "/ppp", dp->d_name);\r | |
485 | replace (filename, "PERSISTENT=on", "RECONNECTION=persistent");\r | |
486 | replace (filename, "DIALONDEMAND=on", "RECONNECTION=dialondemand");\r | |
487 | replace (filename, "MODULATION=GDTM", "MODULATION=GDMT");\r | |
488 | chown (filename, 99, 99);\r | |
489 | } \r | |
490 | }\r | |
491 | (void) closedir( dirp );\r | |
492 | }\r | |
493 | \r | |
494 | void _convert_net_settings_V140(){\r | |
495 | replace ("/harddisk" CONFIG_ROOT "/ethernet/settings", "eepro100", "e100");\r | |
496 | chown ("/harddisk" CONFIG_ROOT "/ethernet/settings", 99, 99);\r | |
497 | }\r | |
498 | \r | |
499 | void _convert_keymap() {\r | |
500 | replace("/harddisk" CONFIG_ROOT "/main/settings", "KEYMAP=/lib/kbd", "KEYMAP=/usr/share/kbd");\r | |
501 | replace("/harddisk" CONFIG_ROOT "/main/settings", ".kmap.gz", ".map.gz");\r | |
502 | chown ("/harddisk" CONFIG_ROOT "/main/settings", 99, 99);\r | |
503 | }\r | |
504 | \r | |
505 | void _convert_speedtouch() {\r | |
506 | FILE *speedtchbootfile;\r | |
507 | FILE *speedtchfirmfile;\r | |
508 | \r | |
509 | if (( speedtchfirmfile = fopen ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v4.bin", "r")))\r | |
510 | {\r | |
511 | fclose (speedtchfirmfile);\r | |
512 | if ((speedtchbootfile = fopen ("/harddisk" CONFIG_ROOT "/alcatelusb/boot.v4.bin", "r"))) {\r | |
513 | fclose (speedtchbootfile);\r | |
514 | system("/bin/cat /harddisk" CONFIG_ROOT "/alcatelusb/boot.v4.bin "\r | |
515 | "/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v4.bin"\r | |
516 | "> /harddisk" CONFIG_ROOT "/alcatelusb/firmware.v4_b.bin");\r | |
517 | remove ("/harddisk" CONFIG_ROOT "/alcatelusb/boot.v4.bin");\r | |
518 | remove ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v4.bin");\r | |
519 | chown ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v4_b.bin", 99, 99);\r | |
520 | }\r | |
521 | }\r | |
522 | \r | |
523 | if (( speedtchfirmfile = fopen ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v123.bin", "r"))) {\r | |
524 | fclose (speedtchfirmfile);\r | |
525 | system("/bin/cat /harddisk" CONFIG_ROOT "/alcatelusb/boot.v123.bin "\r | |
526 | "/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v123.bin"\r | |
527 | "> /harddisk" CONFIG_ROOT "/alcatelusb/firmware.v0123.bin");\r | |
528 | remove ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v123.bin");\r | |
529 | }\r | |
530 | \r | |
531 | remove ("/harddisk" CONFIG_ROOT "/alcatelusb/boot.v123.bin");\r | |
532 | \r | |
533 | rename ("/harddisk" CONFIG_ROOT "/alcatelusb/mgmt.o", "/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v0123.bin");\r | |
534 | chown ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v0123.bin", 99, 99);\r | |
535 | }\r | |
536 | \r | |
537 | void _convert_isapnp() {\r | |
538 | FILE *isapnpfile;\r | |
539 | \r | |
540 | mkdir ("/harddisk" CONFIG_ROOT "/isapnp", S_IRWXU|S_IRWXG|S_IRWXO );\r | |
541 | if (( isapnpfile = fopen ("/harddisk/etc/isapnp.conf", "r"))) {\r | |
542 | fclose (isapnpfile);\r | |
543 | rename ("/harddisk/etc/isapnp.conf", "/harddisk" CONFIG_ROOT "/isapnp/isapnp.conf");\r | |
544 | } else {\r | |
545 | if (( isapnpfile = fopen ("/harddisk" CONFIG_ROOT "/isapnp/isapnp.conf", "r"))) {\r | |
546 | fclose(isapnpfile);\r | |
547 | } else {\r | |
548 | isapnpfile = fopen ("/harddisk" CONFIG_ROOT "/isapnp/isapnp.conf", "w");\r | |
549 | fclose(isapnpfile);\r | |
550 | }\r | |
551 | }\r | |
552 | }\r | |
553 | \r | |
554 | int upgrade_v130_v140() {\r | |
555 | _del_setup_user();\r | |
556 | _del_useless_user_group();\r | |
557 | _add_logwatch_user();\r | |
558 | _add_sshd_user();\r | |
559 | _add_dnsmasq_user();\r | |
560 | _add_cron_user();\r | |
561 | _add_sysklogd_user();\r | |
562 | _del_pulsardsl_dir();\r | |
563 | _del_fritzdsl_dir();\r | |
564 | _convert_vpn();\r | |
565 | _handledomainname();\r | |
566 | _fixsquid();\r | |
567 | _fixeagleusb();\r | |
568 | _create_nobody_dir();\r | |
569 | _convert_ppp_settings_V140();\r | |
570 | _convert_net_settings_V140();\r | |
571 | _fixdhcp_30();\r | |
572 | _convert_keymap();\r | |
573 | _convert_speedtouch();\r | |
574 | _convert_isapnp();\r | |
575 | \r | |
576 | return 0;\r | |
577 | }\r |