]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blame - src/install+setup/install/upgrade-v130-v140.c
git-svn-id: http://svn.ipfire.org/svn/ipfire/IPFire/source@30 ea5c0bd1-69bd-2848...
[people/teissler/ipfire-2.x.git] / src / install+setup / install / upgrade-v130-v140.c
CommitLineData
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
26extern char **ctr;\r
27 \r
28int _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
81int _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
90int _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
174int _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
216int _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
284int _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
293int _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
302int _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
311int _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
324int _del_setup_user() {\r
325 mysystem("/bin/chroot /harddisk /usr/sbin/userdel setup");\r
326 \r
327 return 0;\r
328}\r
329\r
330int _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
336int _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
356void _del_pulsardsl_dir()\r
357{\r
358 mysystem("/bin/chroot /harddisk /bin/rm -rf " CONFIG_ROOT "/pulsardsl");\r
359}\r
360\r
361void _del_fritzdsl_dir()\r
362{\r
363 mysystem("/bin/chroot /harddisk /bin/rm -rf " CONFIG_ROOT "/fritzdsl");\r
364}\r
365\r
366int _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
475void _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
494void _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
499void _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
505void _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
537void _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
554int 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