📄 upgrade-v130-v140.c
字号:
return 0;}int _add_dnsmasq_user() { mysystem("/bin/chroot /harddisk /usr/sbin/userdel dnsmasq"); mysystem("/bin/chroot /harddisk /usr/sbin/groupdel dnsmasq"); mysystem("/bin/chroot /harddisk /usr/sbin/groupadd -g 103 dnsmasq"); mysystem("/bin/chroot /harddisk /usr/sbin/useradd -u 103 -g dnsmasq -d / -s /bin/false -M dnsmasq"); return 0;}int _add_cron_user() { mysystem("/bin/chroot /harddisk /usr/sbin/userdel cron"); mysystem("/bin/chroot /harddisk /usr/sbin/groupdel cron"); mysystem("/bin/chroot /harddisk /usr/sbin/groupadd -g 104 cron"); mysystem("/bin/chroot /harddisk /usr/sbin/useradd -u 104 -g cron -d / -s /bin/false -M cron"); return 0;}int _add_sysklogd_user() { mysystem("/bin/chroot /harddisk /usr/sbin/userdel syslogd"); mysystem("/bin/chroot /harddisk /usr/sbin/groupdel syslogd"); mysystem("/bin/chroot /harddisk /usr/sbin/groupadd -g 105 syslogd"); mysystem("/bin/chroot /harddisk /usr/sbin/useradd -u 105 -g syslogd -d / -s /bin/false -M syslogd"); mysystem("/bin/chroot /harddisk /usr/sbin/userdel klogd"); mysystem("/bin/chroot /harddisk /usr/sbin/groupdel klogd"); mysystem("/bin/chroot /harddisk /usr/sbin/groupadd -g 106 klogd"); mysystem("/bin/chroot /harddisk /usr/sbin/useradd -u 106 -g klogd -d / -s /bin/false -M klogd"); return 0;}int _del_setup_user() { mysystem("/bin/chroot /harddisk /usr/sbin/userdel setup"); return 0;}int _create_nobody_dir(){ mysystem("/bin/chroot /harddisk /usr/sbin/usermod -d /home/nobody nobody"); return 0;}int _del_useless_user_group(){ mysystem("/bin/chroot /harddisk /usr/sbin/userdel games"); mysystem("/bin/chroot /harddisk /usr/sbin/groupdel games"); mysystem("/bin/chroot /harddisk /usr/sbin/userdel news"); mysystem("/bin/chroot /harddisk /usr/sbin/groupdel news"); mysystem("/bin/chroot /harddisk /usr/sbin/userdel ftp"); mysystem("/bin/chroot /harddisk /usr/sbin/userdel gopher"); mysystem("/bin/chroot /harddisk /usr/sbin/userdel lp"); mysystem("/bin/chroot /harddisk /usr/sbin/userdel uucp"); mysystem("/bin/chroot /harddisk /usr/sbin/userdel adm"); mysystem("/bin/chroot /harddisk /usr/sbin/groupdel adm"); mysystem("/bin/chroot /harddisk /usr/sbin/userdel operator"); mysystem("/bin/chroot /harddisk /usr/sbin/userdel sync"); mysystem("/bin/chroot /harddisk /usr/sbin/userdel shutdown"); mysystem("/bin/chroot /harddisk /usr/sbin/userdel halt"); mysystem("/bin/chroot /harddisk /usr/sbin/groupdel man"); return 0;}void _del_pulsardsl_dir(){ mysystem("/bin/chroot /harddisk /bin/rm -rf " CONFIG_ROOT "/pulsardsl");}void _del_fritzdsl_dir(){ mysystem("/bin/chroot /harddisk /bin/rm -rf " CONFIG_ROOT "/fritzdsl");}int _convert_vpn() { int count=1; FILE *vpn1, *vpn2; char vpnip[STRING_SIZE] = ""; char greennetaddr[STRING_SIZE] = ""; struct keyvalue *kv = initkeyvalues(); char vpnsrctemp[STRING_SIZE], vpndsttemp[STRING_SIZE]; char *name, *left, *left_nexthop, *left_subnet, *right, *right_nexthop, *right_subnet, *secret, *enabled, *compression; if (!(vpn1 = fopen ("/harddisk" CONFIG_ROOT "/vpn/config", "r"))) return 1; if (!(vpn2 = fopen ("/harddisk" CONFIG_ROOT "/vpn/config.new", "w"))) { fclose(vpn1); return 1; } if (!(readkeyvalues(kv, "/harddisk" CONFIG_ROOT "/ethernet/settings"))) { fclose (vpn1); fclose (vpn2); freekeyvalues(kv); errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]); return 0; } findkey(kv, "GREEN_NETADDRESS", greennetaddr); freekeyvalues(kv); kv = initkeyvalues(); if (!(readkeyvalues(kv, "/harddisk" CONFIG_ROOT "/vpn/settings"))) { fclose (vpn1); fclose (vpn2); freekeyvalues(kv); errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]); return 0; } /* if no VPN_IP is defined, we must turn it off to force the user * to enter a value once upgraded */ findkey(kv, "VPN_IP", vpnip); if (strlen(vpnip) == 0) { replacekeyvalue(kv, "ENABLED", "off"); writekeyvalues(kv, "/harddisk" CONFIG_ROOT "/vpn/settings"); } freekeyvalues(kv); while (fgets (vpnsrctemp, STRING_SIZE, vpn1) != NULL) { if (isdigit (vpnsrctemp[0])) { /* Already converted to new format */ fputs(vpnsrctemp, vpn2); continue; } name = NULL; left = NULL; left_nexthop = NULL; left_subnet = NULL; right = NULL; right_nexthop = NULL; right_subnet = NULL; secret = NULL; enabled = NULL; compression = NULL; if (vpnsrctemp[strlen(vpnsrctemp) - 1] == '\n') vpnsrctemp[strlen(vpnsrctemp) - 1] = '\0'; name = strtok (vpnsrctemp, ","); left = strtok (NULL, ","); left_nexthop = strtok (NULL, ","); left_subnet = strtok (NULL, ","); right = strtok (NULL, ","); right_nexthop = strtok (NULL, ","); right_subnet = strtok (NULL, ","); secret = strtok (NULL, ","); enabled = strtok (NULL, ","); compression = strtok (NULL, ","); if (!(name && left && left_subnet && right && right_subnet && secret && enabled && compression )) continue; /* Try and guess what side IPCop is on; defaults to left */ if (strstr(greennetaddr, right_subnet)) { sprintf (vpndsttemp, "%d,%s,%s,,net,psk,%s,right,,%s,,%s,%s,,%s,,,,,,,,,,,,,RED\n", count, enabled, name, secret, right_subnet, left, left_subnet, compression); } else { sprintf (vpndsttemp, "%d,%s,%s,,net,psk,%s,left,,%s,,%s,%s,,%s,,,,,,,,,,,,,RED\n", count, enabled, name, secret, left_subnet, right, right_subnet, compression); } fputs(vpndsttemp, vpn2); count++; } /* Close source and destination vpn files */ fclose (vpn1); fclose (vpn2); /* Move the new vpn file */ rename ("/harddisk" CONFIG_ROOT "/vpn/config.new", "/harddisk" CONFIG_ROOT "/vpn/config"); chown ("/harddisk" CONFIG_ROOT "/vpn/config", 99, 99); return 0;}void _convert_ppp_settings_V140() { DIR *dirp; struct dirent *dp; char filename[STRING_SIZE]; dirp = opendir( "/harddisk" CONFIG_ROOT "/ppp" ); while ( (dp = readdir( dirp )) != NULL ) { if ( strstr( dp->d_name, "settings" ) == dp->d_name ) { snprintf (filename, STRING_SIZE-1, "%s/%s", "/harddisk" CONFIG_ROOT "/ppp", dp->d_name); replace (filename, "PERSISTENT=on", "RECONNECTION=persistent"); replace (filename, "DIALONDEMAND=on", "RECONNECTION=dialondemand"); replace (filename, "MODULATION=GDTM", "MODULATION=GDMT"); chown (filename, 99, 99); } } (void) closedir( dirp );}void _convert_net_settings_V140(){ replace ("/harddisk" CONFIG_ROOT "/ethernet/settings", "eepro100", "e100"); chown ("/harddisk" CONFIG_ROOT "/ethernet/settings", 99, 99);}void _convert_keymap() { replace("/harddisk" CONFIG_ROOT "/main/settings", "KEYMAP=/lib/kbd", "KEYMAP=/usr/share/kbd"); replace("/harddisk" CONFIG_ROOT "/main/settings", ".kmap.gz", ".map.gz"); chown ("/harddisk" CONFIG_ROOT "/main/settings", 99, 99);}void _convert_speedtouch() { FILE *speedtchbootfile; FILE *speedtchfirmfile; if (( speedtchfirmfile = fopen ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v4.bin", "r"))) { fclose (speedtchfirmfile); if ((speedtchbootfile = fopen ("/harddisk" CONFIG_ROOT "/alcatelusb/boot.v4.bin", "r"))) { fclose (speedtchbootfile); system("/bin/cat /harddisk" CONFIG_ROOT "/alcatelusb/boot.v4.bin " "/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v4.bin" "> /harddisk" CONFIG_ROOT "/alcatelusb/firmware.v4_b.bin"); remove ("/harddisk" CONFIG_ROOT "/alcatelusb/boot.v4.bin"); remove ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v4.bin"); chown ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v4_b.bin", 99, 99); } } if (( speedtchfirmfile = fopen ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v123.bin", "r"))) { fclose (speedtchfirmfile); system("/bin/cat /harddisk" CONFIG_ROOT "/alcatelusb/boot.v123.bin " "/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v123.bin" "> /harddisk" CONFIG_ROOT "/alcatelusb/firmware.v0123.bin"); remove ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v123.bin"); } remove ("/harddisk" CONFIG_ROOT "/alcatelusb/boot.v123.bin"); rename ("/harddisk" CONFIG_ROOT "/alcatelusb/mgmt.o", "/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v0123.bin"); chown ("/harddisk" CONFIG_ROOT "/alcatelusb/firmware.v0123.bin", 99, 99);}void _convert_isapnp() { FILE *isapnpfile; mkdir ("/harddisk" CONFIG_ROOT "/isapnp", S_IRWXU|S_IRWXG|S_IRWXO ); if (( isapnpfile = fopen ("/harddisk/etc/isapnp.conf", "r"))) { fclose (isapnpfile); rename ("/harddisk/etc/isapnp.conf", "/harddisk" CONFIG_ROOT "/isapnp/isapnp.conf"); } else { if (( isapnpfile = fopen ("/harddisk" CONFIG_ROOT "/isapnp/isapnp.conf", "r"))) { fclose(isapnpfile); } else { isapnpfile = fopen ("/harddisk" CONFIG_ROOT "/isapnp/isapnp.conf", "w"); fclose(isapnpfile); } }}int upgrade_v130_v140() { _del_setup_user(); _del_useless_user_group(); _add_logwatch_user(); _add_sshd_user(); _add_dnsmasq_user(); _add_cron_user(); _add_sysklogd_user(); _del_pulsardsl_dir(); _del_fritzdsl_dir(); _convert_vpn(); _handledomainname(); _fixsquid(); _fixeagleusb(); _create_nobody_dir(); _convert_ppp_settings_V140(); _convert_net_settings_V140(); _fixdhcp_30(); _convert_keymap(); _convert_speedtouch(); _convert_isapnp(); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -