From cd1a2927226c734d96478e12bb768256fb64a06a Mon Sep 17 00:00:00 2001 From: ipfire Date: Wed, 15 Feb 2006 21:15:54 +0000 Subject: [PATCH] git-svn-id: http://svn.ipfire.org/svn/ipfire/IPFire/source@16 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8 --- .cvsignore | 8 + config/CVS/Entries | 12 + config/CVS/Repository | 1 + config/CVS/Root | 1 + config/CVS/Tag | 1 + config/aboot/CVS/Entries | 3 + config/aboot/CVS/Repository | 1 + config/aboot/CVS/Root | 1 + config/aboot/CVS/Tag | 1 + config/aboot/aboot.conf | 1 + config/aboot/scsiaboot.conf | 1 + config/cdrom/CVS/Entries | 2 + config/cdrom/CVS/Repository | 1 + config/cdrom/CVS/Root | 1 + config/cdrom/CVS/Tag | 1 + config/cdrom/README.txt | 42 + config/cfgroot/CVS/Entries | 21 + config/cfgroot/CVS/Repository | 1 + config/cfgroot/CVS/Root | 1 + config/cfgroot/CVS/Tag | 1 + config/cfgroot/advoptions-list | 56 + config/cfgroot/backup-exclude | 20 + config/cfgroot/backup-exclude.hardware | 1 + config/cfgroot/backup-include | 16 + config/cfgroot/countries.pl | 250 + config/cfgroot/defaultservices | 249 + config/cfgroot/general-functions.pl | 554 + config/cfgroot/header-menu.pl | 24 + config/cfgroot/header.pl | 823 + config/cfgroot/icmptypes | 61 + config/cfgroot/ipcop.gpg | 18 + config/cfgroot/lang.pl | 160 + config/cfgroot/logging-settings | 5 + config/cfgroot/modem-defaults | 8 + config/cfgroot/modem-settings | 8 + config/cfgroot/oinkmaster.conf | 292 + config/cfgroot/protocols.pl | 162 + config/cfgroot/proxy-acl | 49 + config/cfgroot/time-settings | 7 + config/cfgroot/xtaccess-config | 1 + config/cron/CVS/Entries | 2 + config/cron/CVS/Repository | 1 + config/cron/CVS/Root | 1 + config/cron/CVS/Tag | 1 + config/cron/crontab | 36 + config/etc/CVS/Entries | 18 + config/etc/CVS/Repository | 1 + config/etc/CVS/Root | 1 + config/etc/CVS/Tag | 1 + config/etc/certparams | 9 + config/etc/fstab | 8 + config/etc/group | 30 + config/etc/host.conf | 1 + config/etc/inittab | 23 + config/etc/inputrc | 33 + config/etc/ld.so.conf | 3 + config/etc/logrotate.conf | 75 + config/etc/mime.types | 277 + config/etc/modules.conf | 24 + config/etc/nsswitch.conf | 19 + config/etc/passwd | 14 + config/etc/profile | 47 + config/etc/resolv.conf | 1 + config/etc/securetty | 22 + config/etc/sysctl.conf | 24 + config/etc/syslog.conf | 20 + config/grub/CVS/Entries | 4 + config/grub/CVS/Repository | 1 + config/grub/CVS/Root | 1 + config/grub/CVS/Tag | 1 + config/grub/grub.conf | 21 + config/grub/ipcop.xpm.gz | Bin 0 -> 7526 bytes config/grub/scsigrub.conf | 25 + config/httpd/CVS/Entries | 2 + config/httpd/CVS/Repository | 1 + config/httpd/CVS/Root | 1 + config/httpd/CVS/Tag | 1 + config/httpd/httpd.conf | 149 + config/install/CVS/Entries | 11 + config/install/CVS/Repository | 1 + config/install/CVS/Root | 1 + config/install/CVS/Tag | 1 + config/install/fstab | 3 + config/install/group | 4 + config/install/halt | 19 + config/install/hosts | 1 + config/install/inittab | 10 + config/install/nsswitch.conf | 15 + config/install/passwd | 1 + config/install/profile | 7 + config/install/rc | 12 + config/install/shells | 1 + config/ipac-ng/CVS/Entries | 3 + config/ipac-ng/CVS/Repository | 1 + config/ipac-ng/CVS/Root | 1 + config/ipac-ng/CVS/Tag | 1 + config/ipac-ng/ipac.conf | 5 + config/ipac-ng/rules.conf | 36 + config/kernel/CVS/Entries | 8 + config/kernel/CVS/Repository | 1 + config/kernel/CVS/Root | 1 + config/kernel/CVS/Tag | 1 + config/kernel/aboot.conf | 4 + config/kernel/install-message | 21 + config/kernel/kernel.config.alpha | 1373 + config/kernel/kernel.config.i386 | 1493 + config/kernel/kernel.config.i386.installer | 1456 + config/kernel/kernel.config.i386.original | 1474 + config/kernel/kernel.config.i386.smp | 1478 + config/kernel/syslinux.cfg | 17 + config/snort/CVS/Entries | 2 + config/snort/CVS/Repository | 1 + config/snort/CVS/Root | 1 + config/snort/CVS/Tag | 1 + config/snort/snort.conf | 123 + config/ssl/CVS/Entries | 2 + config/ssl/CVS/Repository | 1 + config/ssl/CVS/Root | 1 + config/ssl/CVS/Tag | 1 + config/ssl/openssl.cnf | 94 + doc/.cvsignore | 1 + doc/COPYING | 340 + doc/CVS/Entries | 7 + doc/CVS/Repository | 1 + doc/CVS/Root | 1 + doc/CVS/Tag | 1 + doc/ChangeLog | 6749 +++++ doc/How-to-make-update | 51 + doc/README | 22 + doc/make.sh-usage | 29 + doc/packages-list.txt | 159 + doc/updated-sources.txt_old | 124 + html/CVS/Entries | 2 + html/CVS/Repository | 1 + html/CVS/Root | 1 + html/CVS/Tag | 1 + html/cgi-bin/CVS/Entries | 36 + html/cgi-bin/CVS/Repository | 1 + html/cgi-bin/CVS/Root | 1 + html/cgi-bin/CVS/Tag | 1 + html/cgi-bin/aliases.cgi | 482 + html/cgi-bin/backup.cgi | 652 + html/cgi-bin/base.cgi | 488 + html/cgi-bin/changepw.cgi | 123 + html/cgi-bin/connections.cgi | 329 + html/cgi-bin/credits.cgi | 371 + html/cgi-bin/ddns.cgi | 537 + html/cgi-bin/dhcp.cgi | 1245 + html/cgi-bin/dial.cgi | 35 + html/cgi-bin/dmzholes.cgi | 440 + html/cgi-bin/graphs.cgi | 148 + html/cgi-bin/gui.cgi | 229 + html/cgi-bin/hosts.cgi | 449 + html/cgi-bin/ids.cgi | 313 + html/cgi-bin/index.cgi | 204 + html/cgi-bin/ipinfo.cgi | 103 + html/cgi-bin/logs.cgi/CVS/Entries | 7 + html/cgi-bin/logs.cgi/CVS/Repository | 1 + html/cgi-bin/logs.cgi/CVS/Root | 1 + html/cgi-bin/logs.cgi/CVS/Tag | 1 + html/cgi-bin/logs.cgi/config.dat | 165 + html/cgi-bin/logs.cgi/firewalllog.dat | 411 + html/cgi-bin/logs.cgi/ids.dat | 458 + html/cgi-bin/logs.cgi/log.dat | 426 + html/cgi-bin/logs.cgi/proxylog.dat | 494 + html/cgi-bin/logs.cgi/summary.dat | 213 + html/cgi-bin/modem.cgi | 120 + html/cgi-bin/netstatus.cgi | 222 + html/cgi-bin/networks.cgi | 420 + html/cgi-bin/optionsfw.cgi | 98 + html/cgi-bin/portfw.cgi | 1179 + html/cgi-bin/pppsetup.cgi | 1205 + html/cgi-bin/proxy.cgi | 421 + html/cgi-bin/proxygraphs.cgi | 63 + html/cgi-bin/remote.cgi | 180 + html/cgi-bin/services.cgi | 586 + html/cgi-bin/shaping.cgi | 367 + html/cgi-bin/shutdown.cgi | 253 + html/cgi-bin/status.cgi | 325 + html/cgi-bin/time.cgi | 391 + html/cgi-bin/updates.cgi | 269 + html/cgi-bin/upload.cgi | 187 + html/cgi-bin/vpnmain.cgi | 2580 ++ html/cgi-bin/wireless.cgi | 508 + html/cgi-bin/xtaccess.cgi | 363 + html/html/CVS/Entries | 6 + html/html/CVS/Repository | 1 + html/html/CVS/Root | 1 + html/html/CVS/Tag | 1 + html/html/blob.gif | Bin 0 -> 293 bytes html/html/favicon.ico | Bin 0 -> 1406 bytes html/html/images/CVS/Entries | 25 + html/html/images/CVS/Repository | 1 + html/html/images/CVS/Root | 1 + html/html/images/CVS/Tag | 1 + html/html/images/add.gif | Bin 0 -> 154 bytes html/html/images/addblue.gif | Bin 0 -> 154 bytes html/html/images/bounceback.png | Bin 0 -> 5947 bytes html/html/images/boxbottom1.png | Bin 0 -> 355 bytes html/html/images/boxbottom2.png | Bin 0 -> 134 bytes html/html/images/boxbottom3.png | Bin 0 -> 294 bytes html/html/images/boxleft.png | Bin 0 -> 116 bytes html/html/images/boxright.png | Bin 0 -> 113 bytes html/html/images/boxtop1.png | Bin 0 -> 1307 bytes html/html/images/boxtop2.png | Bin 0 -> 387 bytes html/html/images/boxtop3.png | Bin 0 -> 2362 bytes html/html/images/clock.gif | Bin 0 -> 817 bytes html/html/images/delete.gif | Bin 0 -> 153 bytes html/html/images/download.png | Bin 0 -> 3884 bytes html/html/images/edit.gif | Bin 0 -> 131 bytes html/html/images/floppy.gif | Bin 0 -> 151 bytes html/html/images/forward.gif | Bin 0 -> 107 bytes html/html/images/header.png | Bin 0 -> 19115 bytes html/html/images/info.gif | Bin 0 -> 159 bytes html/html/images/null.gif | Bin 0 -> 43 bytes html/html/images/off.gif | Bin 0 -> 125 bytes html/html/images/on.gif | Bin 0 -> 139 bytes html/html/images/reload.gif | Bin 0 -> 108 bytes html/html/images/web-support.png | Bin 0 -> 1642 bytes html/html/include/CVS/Entries | 3 + html/html/include/CVS/Repository | 1 + html/html/include/CVS/Root | 1 + html/html/include/CVS/Tag | 1 + html/html/include/domMenu.js | 1167 + html/html/include/ipcop.css | 122 + html/html/index.cgi | 8 + html/html/ipcop_big.gif | Bin 0 -> 6074 bytes langs/CVS/Entries | 30 + langs/CVS/Repository | 1 + langs/CVS/Root | 1 + langs/CVS/Tag | 1 + langs/bz/CVS/Entries | 2 + langs/bz/CVS/Repository | 1 + langs/bz/CVS/Root | 1 + langs/bz/CVS/Tag | 1 + langs/bz/cgi-bin/CVS/Entries | 2 + langs/bz/cgi-bin/CVS/Repository | 1 + langs/bz/cgi-bin/CVS/Root | 1 + langs/bz/cgi-bin/CVS/Tag | 1 + langs/bz/cgi-bin/bz.pl | 941 + langs/bz/install/CVS/Entries | 2 + langs/bz/install/CVS/Repository | 1 + langs/bz/install/CVS/Root | 1 + langs/bz/install/CVS/Tag | 1 + langs/bz/install/lang_bz.c | 508 + langs/cs/CVS/Entries | 2 + langs/cs/CVS/Repository | 1 + langs/cs/CVS/Root | 1 + langs/cs/CVS/Tag | 1 + langs/cs/cgi-bin/CVS/Entries | 2 + langs/cs/cgi-bin/CVS/Repository | 1 + langs/cs/cgi-bin/CVS/Root | 1 + langs/cs/cgi-bin/CVS/Tag | 1 + langs/cs/cgi-bin/cs.pl | 863 + langs/cs/install/CVS/Entries | 2 + langs/cs/install/CVS/Repository | 1 + langs/cs/install/CVS/Root | 1 + langs/cs/install/CVS/Tag | 1 + langs/cs/install/lang_cs.c | 507 + langs/da/CVS/Entries | 2 + langs/da/CVS/Repository | 1 + langs/da/CVS/Root | 1 + langs/da/CVS/Tag | 1 + langs/da/cgi-bin/CVS/Entries | 2 + langs/da/cgi-bin/CVS/Repository | 1 + langs/da/cgi-bin/CVS/Root | 1 + langs/da/cgi-bin/CVS/Tag | 1 + langs/da/cgi-bin/da.pl | 947 + langs/da/install/CVS/Entries | 2 + langs/da/install/CVS/Repository | 1 + langs/da/install/CVS/Root | 1 + langs/da/install/CVS/Tag | 1 + langs/da/install/lang_da.c | 508 + langs/de/CVS/Entries | 2 + langs/de/CVS/Repository | 1 + langs/de/CVS/Root | 1 + langs/de/CVS/Tag | 1 + langs/de/cgi-bin/CVS/Entries | 2 + langs/de/cgi-bin/CVS/Repository | 1 + langs/de/cgi-bin/CVS/Root | 1 + langs/de/cgi-bin/CVS/Tag | 1 + langs/de/cgi-bin/de.pl | 955 + langs/de/install/CVS/Entries | 2 + langs/de/install/CVS/Repository | 1 + langs/de/install/CVS/Root | 1 + langs/de/install/CVS/Tag | 1 + langs/de/install/lang_de.c | 509 + langs/el/CVS/Entries | 2 + langs/el/CVS/Repository | 1 + langs/el/CVS/Root | 1 + langs/el/CVS/Tag | 1 + langs/el/cgi-bin/CVS/Entries | 2 + langs/el/cgi-bin/CVS/Repository | 1 + langs/el/cgi-bin/CVS/Root | 1 + langs/el/cgi-bin/CVS/Tag | 1 + langs/el/cgi-bin/el.pl | 947 + langs/el/install/CVS/Entries | 2 + langs/el/install/CVS/Repository | 1 + langs/el/install/CVS/Root | 1 + langs/el/install/CVS/Tag | 1 + langs/el/install/lang_el.c | 507 + langs/en/CVS/Entries | 2 + langs/en/CVS/Repository | 1 + langs/en/CVS/Root | 1 + langs/en/CVS/Tag | 1 + langs/en/cgi-bin/CVS/Entries | 2 + langs/en/cgi-bin/CVS/Repository | 1 + langs/en/cgi-bin/CVS/Root | 1 + langs/en/cgi-bin/CVS/Tag | 1 + langs/en/cgi-bin/en.pl | 976 + langs/en/install/CVS/Entries | 2 + langs/en/install/CVS/Repository | 1 + langs/en/install/CVS/Root | 1 + langs/en/install/CVS/Tag | 1 + langs/en/install/lang_en.c | 505 + langs/es/CVS/Entries | 2 + langs/es/CVS/Repository | 1 + langs/es/CVS/Root | 1 + langs/es/CVS/Tag | 1 + langs/es/cgi-bin/CVS/Entries | 2 + langs/es/cgi-bin/CVS/Repository | 1 + langs/es/cgi-bin/CVS/Root | 1 + langs/es/cgi-bin/CVS/Tag | 1 + langs/es/cgi-bin/es.pl | 947 + langs/es/install/CVS/Entries | 2 + langs/es/install/CVS/Repository | 1 + langs/es/install/CVS/Root | 1 + langs/es/install/CVS/Tag | 1 + langs/es/install/lang_es.c | 509 + langs/fa/CVS/Entries | 1 + langs/fa/CVS/Repository | 1 + langs/fa/CVS/Root | 1 + langs/fa/CVS/Tag | 1 + langs/fa/cgi-bin/CVS/Entries | 2 + langs/fa/cgi-bin/CVS/Repository | 1 + langs/fa/cgi-bin/CVS/Root | 1 + langs/fa/cgi-bin/CVS/Tag | 1 + langs/fa/cgi-bin/fa.pl | 211 + langs/fi/CVS/Entries | 2 + langs/fi/CVS/Repository | 1 + langs/fi/CVS/Root | 1 + langs/fi/CVS/Tag | 1 + langs/fi/cgi-bin/CVS/Entries | 2 + langs/fi/cgi-bin/CVS/Repository | 1 + langs/fi/cgi-bin/CVS/Root | 1 + langs/fi/cgi-bin/CVS/Tag | 1 + langs/fi/cgi-bin/fi.pl | 945 + langs/fi/install/CVS/Entries | 2 + langs/fi/install/CVS/Repository | 1 + langs/fi/install/CVS/Root | 1 + langs/fi/install/CVS/Tag | 1 + langs/fi/install/lang_fi.c | 507 + langs/fr/CVS/Entries | 2 + langs/fr/CVS/Repository | 1 + langs/fr/CVS/Root | 1 + langs/fr/CVS/Tag | 1 + langs/fr/cgi-bin/CVS/Entries | 2 + langs/fr/cgi-bin/CVS/Repository | 1 + langs/fr/cgi-bin/CVS/Root | 1 + langs/fr/cgi-bin/CVS/Tag | 1 + langs/fr/cgi-bin/fr.pl | 955 + langs/fr/install/CVS/Entries | 2 + langs/fr/install/CVS/Repository | 1 + langs/fr/install/CVS/Root | 1 + langs/fr/install/CVS/Tag | 1 + langs/fr/install/lang_fr.c | 510 + langs/hu/CVS/Entries | 2 + langs/hu/CVS/Repository | 1 + langs/hu/CVS/Root | 1 + langs/hu/CVS/Tag | 1 + langs/hu/cgi-bin/CVS/Entries | 2 + langs/hu/cgi-bin/CVS/Repository | 1 + langs/hu/cgi-bin/CVS/Root | 1 + langs/hu/cgi-bin/CVS/Tag | 1 + langs/hu/cgi-bin/hu.pl | 854 + langs/hu/install/CVS/Entries | 2 + langs/hu/install/CVS/Repository | 1 + langs/hu/install/CVS/Root | 1 + langs/hu/install/CVS/Tag | 1 + langs/hu/install/lang_hu.c | 508 + langs/it/CVS/Entries | 2 + langs/it/CVS/Repository | 1 + langs/it/CVS/Root | 1 + langs/it/CVS/Tag | 1 + langs/it/cgi-bin/CVS/Entries | 2 + langs/it/cgi-bin/CVS/Repository | 1 + langs/it/cgi-bin/CVS/Root | 1 + langs/it/cgi-bin/CVS/Tag | 1 + langs/it/cgi-bin/it.pl | 945 + langs/it/install/CVS/Entries | 2 + langs/it/install/CVS/Repository | 1 + langs/it/install/CVS/Root | 1 + langs/it/install/CVS/Tag | 1 + langs/it/install/lang_it.c | 507 + langs/la/CVS/Entries | 2 + langs/la/CVS/Repository | 1 + langs/la/CVS/Root | 1 + langs/la/CVS/Tag | 1 + langs/la/cgi-bin/CVS/Entries | 2 + langs/la/cgi-bin/CVS/Repository | 1 + langs/la/cgi-bin/CVS/Root | 1 + langs/la/cgi-bin/CVS/Tag | 1 + langs/la/cgi-bin/la.pl | 940 + langs/la/install/CVS/Entries | 2 + langs/la/install/CVS/Repository | 1 + langs/la/install/CVS/Root | 1 + langs/la/install/CVS/Tag | 1 + langs/la/install/lang_la.c | 507 + langs/list | 29 + langs/lt/CVS/Entries | 1 + langs/lt/CVS/Repository | 1 + langs/lt/CVS/Root | 1 + langs/lt/CVS/Tag | 1 + langs/lt/cgi-bin/CVS/Entries | 2 + langs/lt/cgi-bin/CVS/Repository | 1 + langs/lt/cgi-bin/CVS/Root | 1 + langs/lt/cgi-bin/CVS/Tag | 1 + langs/lt/cgi-bin/lt.pl | 159 + langs/nl/CVS/Entries | 2 + langs/nl/CVS/Repository | 1 + langs/nl/CVS/Root | 1 + langs/nl/CVS/Tag | 1 + langs/nl/cgi-bin/CVS/Entries | 2 + langs/nl/cgi-bin/CVS/Repository | 1 + langs/nl/cgi-bin/CVS/Root | 1 + langs/nl/cgi-bin/CVS/Tag | 1 + langs/nl/cgi-bin/nl.pl | 953 + langs/nl/install/CVS/Entries | 2 + langs/nl/install/CVS/Repository | 1 + langs/nl/install/CVS/Root | 1 + langs/nl/install/CVS/Tag | 1 + langs/nl/install/lang_nl.c | 514 + langs/no/CVS/Entries | 2 + langs/no/CVS/Repository | 1 + langs/no/CVS/Root | 1 + langs/no/CVS/Tag | 1 + langs/no/cgi-bin/CVS/Entries | 2 + langs/no/cgi-bin/CVS/Repository | 1 + langs/no/cgi-bin/CVS/Root | 1 + langs/no/cgi-bin/CVS/Tag | 1 + langs/no/cgi-bin/no.pl | 948 + langs/no/install/CVS/Entries | 2 + langs/no/install/CVS/Repository | 1 + langs/no/install/CVS/Root | 1 + langs/no/install/CVS/Tag | 1 + langs/no/install/lang_no.c | 510 + langs/pl/CVS/Entries | 2 + langs/pl/CVS/Repository | 1 + langs/pl/CVS/Root | 1 + langs/pl/CVS/Tag | 1 + langs/pl/cgi-bin/CVS/Entries | 2 + langs/pl/cgi-bin/CVS/Repository | 1 + langs/pl/cgi-bin/CVS/Root | 1 + langs/pl/cgi-bin/CVS/Tag | 1 + langs/pl/cgi-bin/pl.pl | 945 + langs/pl/install/CVS/Entries | 2 + langs/pl/install/CVS/Repository | 1 + langs/pl/install/CVS/Root | 1 + langs/pl/install/CVS/Tag | 1 + langs/pl/install/lang_pl.c | 508 + langs/pt/CVS/Entries | 2 + langs/pt/CVS/Repository | 1 + langs/pt/CVS/Root | 1 + langs/pt/CVS/Tag | 1 + langs/pt/cgi-bin/CVS/Entries | 2 + langs/pt/cgi-bin/CVS/Repository | 1 + langs/pt/cgi-bin/CVS/Root | 1 + langs/pt/cgi-bin/CVS/Tag | 1 + langs/pt/cgi-bin/pt.pl | 857 + langs/pt/install/CVS/Entries | 2 + langs/pt/install/CVS/Repository | 1 + langs/pt/install/CVS/Root | 1 + langs/pt/install/CVS/Tag | 1 + langs/pt/install/lang_pt.c | 508 + langs/ro/CVS/Entries | 1 + langs/ro/CVS/Repository | 1 + langs/ro/CVS/Root | 1 + langs/ro/CVS/Tag | 1 + langs/ro/cgi-bin/CVS/Entries | 2 + langs/ro/cgi-bin/CVS/Repository | 1 + langs/ro/cgi-bin/CVS/Root | 1 + langs/ro/cgi-bin/CVS/Tag | 1 + langs/ro/cgi-bin/ro.pl | 278 + langs/ru/CVS/Entries | 1 + langs/ru/CVS/Repository | 1 + langs/ru/CVS/Root | 1 + langs/ru/CVS/Tag | 1 + langs/ru/cgi-bin/CVS/Entries | 2 + langs/ru/cgi-bin/CVS/Repository | 1 + langs/ru/cgi-bin/CVS/Root | 1 + langs/ru/cgi-bin/CVS/Tag | 1 + langs/ru/cgi-bin/ru.pl | 570 + langs/sk/CVS/Entries | 2 + langs/sk/CVS/Repository | 1 + langs/sk/CVS/Root | 1 + langs/sk/CVS/Tag | 1 + langs/sk/cgi-bin/CVS/Entries | 2 + langs/sk/cgi-bin/CVS/Repository | 1 + langs/sk/cgi-bin/CVS/Root | 1 + langs/sk/cgi-bin/CVS/Tag | 1 + langs/sk/cgi-bin/sk.pl | 946 + langs/sk/install/CVS/Entries | 2 + langs/sk/install/CVS/Repository | 1 + langs/sk/install/CVS/Root | 1 + langs/sk/install/CVS/Tag | 1 + langs/sk/install/lang_sk.c | 507 + langs/sl/CVS/Entries | 1 + langs/sl/CVS/Repository | 1 + langs/sl/CVS/Root | 1 + langs/sl/CVS/Tag | 1 + langs/sl/cgi-bin/CVS/Entries | 2 + langs/sl/cgi-bin/CVS/Repository | 1 + langs/sl/cgi-bin/CVS/Root | 1 + langs/sl/cgi-bin/CVS/Tag | 1 + langs/sl/cgi-bin/sl.pl | 468 + langs/so/CVS/Entries | 2 + langs/so/CVS/Repository | 1 + langs/so/CVS/Root | 1 + langs/so/CVS/Tag | 1 + langs/so/cgi-bin/CVS/Entries | 2 + langs/so/cgi-bin/CVS/Repository | 1 + langs/so/cgi-bin/CVS/Root | 1 + langs/so/cgi-bin/CVS/Tag | 1 + langs/so/cgi-bin/so.pl | 763 + langs/so/install/CVS/Entries | 2 + langs/so/install/CVS/Repository | 1 + langs/so/install/CVS/Root | 1 + langs/so/install/CVS/Tag | 1 + langs/so/install/lang_so.c | 508 + langs/sv/CVS/Entries | 2 + langs/sv/CVS/Repository | 1 + langs/sv/CVS/Root | 1 + langs/sv/CVS/Tag | 1 + langs/sv/cgi-bin/CVS/Entries | 2 + langs/sv/cgi-bin/CVS/Repository | 1 + langs/sv/cgi-bin/CVS/Root | 1 + langs/sv/cgi-bin/CVS/Tag | 1 + langs/sv/cgi-bin/sv.pl | 947 + langs/sv/install/CVS/Entries | 2 + langs/sv/install/CVS/Repository | 1 + langs/sv/install/CVS/Root | 1 + langs/sv/install/CVS/Tag | 1 + langs/sv/install/lang_sv.c | 508 + langs/th/CVS/Entries | 1 + langs/th/CVS/Repository | 1 + langs/th/CVS/Root | 1 + langs/th/CVS/Tag | 1 + langs/th/cgi-bin/CVS/Entries | 2 + langs/th/cgi-bin/CVS/Repository | 1 + langs/th/cgi-bin/CVS/Root | 1 + langs/th/cgi-bin/CVS/Tag | 1 + langs/th/cgi-bin/th.pl | 138 + langs/tr/CVS/Entries | 2 + langs/tr/CVS/Repository | 1 + langs/tr/CVS/Root | 1 + langs/tr/CVS/Tag | 1 + langs/tr/cgi-bin/CVS/Entries | 2 + langs/tr/cgi-bin/CVS/Repository | 1 + langs/tr/cgi-bin/CVS/Root | 1 + langs/tr/cgi-bin/CVS/Tag | 1 + langs/tr/cgi-bin/tr.pl | 442 + langs/tr/install/CVS/Entries | 2 + langs/tr/install/CVS/Repository | 1 + langs/tr/install/CVS/Root | 1 + langs/tr/install/CVS/Tag | 1 + langs/tr/install/lang_tr.c | 508 + langs/vi/CVS/Entries | 2 + langs/vi/CVS/Repository | 1 + langs/vi/CVS/Root | 1 + langs/vi/CVS/Tag | 1 + langs/vi/cgi-bin/CVS/Entries | 2 + langs/vi/cgi-bin/CVS/Repository | 1 + langs/vi/cgi-bin/CVS/Root | 1 + langs/vi/cgi-bin/CVS/Tag | 1 + langs/vi/cgi-bin/vi.pl | 862 + langs/vi/install/CVS/Entries | 2 + langs/vi/install/CVS/Repository | 1 + langs/vi/install/CVS/Root | 1 + langs/vi/install/CVS/Tag | 1 + langs/vi/install/lang_vi.c | 507 + langs/zh/CVS/Entries | 1 + langs/zh/CVS/Repository | 1 + langs/zh/CVS/Root | 1 + langs/zh/CVS/Tag | 1 + langs/zh/cgi-bin/CVS/Entries | 2 + langs/zh/cgi-bin/CVS/Repository | 1 + langs/zh/cgi-bin/CVS/Root | 1 + langs/zh/cgi-bin/CVS/Tag | 1 + langs/zh/cgi-bin/zh.pl | 861 + langs/zt/CVS/Entries | 1 + langs/zt/CVS/Repository | 1 + langs/zt/CVS/Root | 1 + langs/zt/CVS/Tag | 1 + langs/zt/cgi-bin/CVS/Entries | 2 + langs/zt/cgi-bin/CVS/Repository | 1 + langs/zt/cgi-bin/CVS/Root | 1 + langs/zt/cgi-bin/CVS/Tag | 1 + langs/zt/cgi-bin/zt.pl | 802 + lfs/3c5x9setup | 84 + lfs/3cp4218 | 117 + lfs/CVS/Entries | 171 + lfs/CVS/Repository | 1 + lfs/CVS/Root | 1 + lfs/CVS/Tag | 1 + lfs/Compress-Zlib | 87 + lfs/Config | 130 + lfs/Digest | 86 + lfs/Digest-HMAC | 86 + lfs/Digest-SHA1 | 86 + lfs/GD | 88 + lfs/HTML-Parser | 86 + lfs/HTML-Tagset | 86 + lfs/Net-DNS | 86 + lfs/Net-IPv4Addr | 85 + lfs/Net_SSLeay | 86 + lfs/URI | 86 + lfs/aboot | 93 + lfs/amedyn | 119 + lfs/apache | 143 + lfs/arping | 85 + lfs/as86 | 83 + lfs/autoconf | 84 + lfs/automake | 86 + lfs/bash | 110 + lfs/beep | 84 + lfs/bind | 90 + lfs/binutils | 114 + lfs/bison | 110 + lfs/boot.img | 76 + lfs/busybox | 108 + lfs/bzip2 | 109 + lfs/capi4k-utils | 94 + lfs/ccache | 90 + lfs/cdrom | 165 + lfs/cdrtools | 83 + lfs/cnx_pci | 109 + lfs/configroot | 133 + lfs/coreutils | 126 + lfs/cxacru | 117 + lfs/dejagnu | 84 + lfs/dhcp | 87 + lfs/dhcpcd | 86 + lfs/diffutils | 98 + lfs/dnsmasq | 90 + lfs/dosfstools | 84 + lfs/driver.img | 117 + lfs/e2fsprogs | 109 + lfs/eagle | 107 + lfs/eciadsl | 90 + lfs/ed | 88 + lfs/ethtool | 85 + lfs/expat | 85 + lfs/expect | 88 + lfs/ez-ipupdate | 86 + lfs/fcdsl | 122 + lfs/fcdsl2 | 123 + lfs/fcdslsl | 121 + lfs/fcdslslusb | 123 + lfs/fcdslusb | 121 + lfs/fcron | 92 + lfs/file | 85 + lfs/findutils | 98 + lfs/flex | 114 + lfs/gawk | 104 + lfs/gcc | 174 + lfs/gdbm | 86 + lfs/gettext | 98 + lfs/glibc | 144 + lfs/gmp | 85 + lfs/gnupg | 88 + lfs/grep | 100 + lfs/groff | 88 + lfs/grub | 120 + lfs/gzip | 114 + lfs/hdparm | 84 + lfs/iana-etc | 84 + lfs/ibod | 62 + lfs/inetutils | 90 + lfs/initrd | 148 + lfs/initscripts | 72 + lfs/installer | 70 + lfs/ipac-ng | 93 + lfs/ipaddr | 84 + lfs/iproute2 | 90 + lfs/iptables | 98 + lfs/iptables_orig | 89 + lfs/iptstate | 83 + lfs/iputils | 84 + lfs/isapnptools | 89 + lfs/isdn4k-utils | 109 + lfs/kbd | 106 + lfs/kudzu | 98 + lfs/less | 85 + lfs/libcap | 87 + lfs/libnet | 85 + lfs/libpcap | 88 + lfs/libpng | 90 + lfs/libsafe | 90 + lfs/libtool | 86 + lfs/libusb | 86 + lfs/libwww-perl | 86 + lfs/linux | 291 + lfs/linux-atm | 85 + lfs/linux_orig | 310 + lfs/logrotate | 85 + lfs/logwatch | 116 + lfs/lpd | 85 + lfs/m4 | 108 + lfs/make | 98 + lfs/makedev | 124 + lfs/man | 89 + lfs/man-pages | 83 + lfs/mbr | 84 + lfs/mingetty | 84 + lfs/misc-progs | 78 + lfs/mktemp | 85 + lfs/modutils | 85 + lfs/mtools | 85 + lfs/nano | 86 + lfs/nash | 61 + lfs/nasm | 85 + lfs/ncurses | 108 + lfs/ndiswrapper | 85 + lfs/net-tools | 109 + lfs/newt | 110 + lfs/noip_updater | 84 + lfs/ntp | 92 + lfs/oinkmaster | 86 + lfs/openssh | 102 + lfs/openssl | 92 + lfs/openswan | 103 + lfs/pam | 87 + lfs/patch | 98 + lfs/pciutils | 104 + lfs/pcmcia-cs | 100 + lfs/pcre | 86 + lfs/perl | 108 + lfs/popt | 85 + lfs/ppp | 106 + lfs/pptpclient | 84 + lfs/procinfo | 84 + lfs/procps | 86 + lfs/psmisc | 86 + lfs/pulsar | 111 + lfs/python | 85 + lfs/rp-pppoe | 85 + lfs/rrdtool | 90 + lfs/scsi.img | 84 + lfs/sed | 108 + lfs/setserial | 85 + lfs/setup | 69 + lfs/shadow | 103 + lfs/slang | 102 + lfs/snort | 95 + lfs/speedtouch | 90 + lfs/speedycgi | 85 + lfs/squid | 111 + lfs/squid-graph | 90 + lfs/stage2 | 105 + lfs/stund | 84 + lfs/sysklogd | 92 + lfs/syslinux | 85 + lfs/sysvinit | 97 + lfs/tar | 103 + lfs/tcl | 89 + lfs/tcpdump | 90 + lfs/texinfo | 98 + lfs/traceroute | 88 + lfs/uClibc | 92 + lfs/unicorn | 108 + lfs/unzip | 89 + lfs/util-linux | 124 + lfs/vim | 94 + lfs/vlan | 84 + lfs/wireless | 85 + lfs/xampp | 83 + lfs/zlib | 89 + src/CVS/Entries | 12 + src/CVS/Repository | 1 + src/CVS/Root | 1 + src/CVS/Tag | 1 + src/ROOTFILES.alpha | 24080 +++++++++++++++ src/ROOTFILES.i386 | 24748 ++++++++++++++++ src/ibod/CVS/Entries | 4 + src/ibod/CVS/Repository | 1 + src/ibod/CVS/Root | 1 + src/ibod/CVS/Tag | 1 + src/ibod/ibod.c | 367 + src/ibod/ibod.cf | 58 + src/ibod/ibod.h | 39 + src/install+setup/CVS/Entries | 3 + src/install+setup/CVS/Repository | 1 + src/install+setup/CVS/Root | 1 + src/install+setup/CVS/Tag | 1 + src/install+setup/install/CVS/Entries | 18 + src/install+setup/install/CVS/Repository | 1 + src/install+setup/install/CVS/Root | 1 + src/install+setup/install/CVS/Tag | 1 + src/install+setup/install/Makefile | 72 + src/install+setup/install/cdrom.c | 36 + src/install+setup/install/config.c | 125 + src/install+setup/install/grubbatch | 9 + src/install+setup/install/ide.c | 61 + src/install+setup/install/install.h | 92 + src/install+setup/install/install2.c | 424 + src/install+setup/install/main.c | 1051 + src/install+setup/install/net.c | 77 + src/install+setup/install/nic.c | 98 + src/install+setup/install/pcmcia.c | 332 + src/install+setup/install/pcmcia.h | 614 + src/install+setup/install/probescsi.sh | 64 + src/install+setup/install/scsi.c | 28 + src/install+setup/install/upgrade-v12-v13.c | 340 + src/install+setup/install/upgrade-v130-v140.c | 577 + src/install+setup/install/usb.c | 141 + src/install+setup/libsmooth/CVS/Entries | 8 + src/install+setup/libsmooth/CVS/Repository | 1 + src/install+setup/libsmooth/CVS/Root | 1 + src/install+setup/libsmooth/CVS/Tag | 1 + src/install+setup/libsmooth/Makefile | 41 + src/install+setup/libsmooth/langs.h.temp | 15 + src/install+setup/libsmooth/libsmooth.h | 99 + src/install+setup/libsmooth/main.c | 324 + src/install+setup/libsmooth/makelangs.pl | 13 + src/install+setup/libsmooth/netstuff.c | 638 + src/install+setup/libsmooth/varval.c | 199 + src/install+setup/setup/CVS/Entries | 13 + src/install+setup/setup/CVS/Repository | 1 + src/install+setup/setup/CVS/Root | 1 + src/install+setup/setup/CVS/Tag | 1 + src/install+setup/setup/Makefile | 33 + src/install+setup/setup/dhcp.c | 262 + src/install+setup/setup/domainname.c | 72 + src/install+setup/setup/hostname.c | 76 + src/install+setup/setup/isdn.c | 581 + src/install+setup/setup/keymap.c | 167 + src/install+setup/setup/main.c | 229 + src/install+setup/setup/misc.c | 141 + src/install+setup/setup/networking.c | 806 + src/install+setup/setup/passwords.c | 123 + src/install+setup/setup/setup.h | 42 + src/install+setup/setup/timezone.c | 134 + src/misc-progs/CVS/Entries | 30 + src/misc-progs/CVS/Repository | 1 + src/misc-progs/CVS/Root | 1 + src/misc-progs/CVS/Tag | 1 + src/misc-progs/Makefile | 82 + src/misc-progs/installfcdsl.c | 88 + src/misc-progs/installpackage.c | 218 + src/misc-progs/iowrap.c | 44 + src/misc-progs/ipcopbackup.c | 290 + src/misc-progs/ipcopbkcfg.c | 239 + src/misc-progs/ipcopdeath.c | 25 + src/misc-progs/ipcoprebirth.c | 25 + src/misc-progs/ipcopreboot.c | 117 + src/misc-progs/ipcoprscfg.c | 116 + src/misc-progs/ipsecctrl.c | 332 + src/misc-progs/logwatch.c | 112 + src/misc-progs/rebuildhosts.c | 154 + src/misc-progs/restartdhcp.c | 145 + src/misc-progs/restartntpd.c | 42 + src/misc-progs/restartshaping.c | 234 + src/misc-progs/restartsnort.c | 326 + src/misc-progs/restartsquid.c | 449 + src/misc-progs/restartssh.c | 135 + src/misc-progs/restartsyslogd.c | 167 + src/misc-progs/restartwireless.c | 147 + src/misc-progs/setaliases.c | 186 + src/misc-progs/setdate.c | 52 + src/misc-progs/setdmzholes.c | 162 + src/misc-progs/setfilters.c | 100 + src/misc-progs/setportfw.c | 369 + src/misc-progs/setuid.c | 204 + src/misc-progs/setuid.h | 91 + src/misc-progs/setxtaccess.c | 168 + src/nash/CVS/Entries | 9 + src/nash/CVS/Repository | 1 + src/nash/CVS/Root | 1 + src/nash/CVS/Tag | 1 + src/nash/Makefile | 26 + src/nash/linux_fs.h | 181 + src/nash/mkinitrd | 626 + src/nash/mount_by_label.c | 300 + src/nash/mount_by_label.h | 2 + src/nash/nash.8 | 126 + src/nash/nash.c | 1230 + src/nash/sample-rc | 13 + src/patches/CVS/Entries | 99 + src/patches/CVS/Repository | 1 + src/patches/CVS/Root | 1 + src/patches/CVS/Tag | 1 + src/patches/CnxADSL-cln-irqreturn.patch | 11 + src/patches/busybox-0.60.5-config.patch | 212 + src/patches/busybox-0.60.5-gzip.patch | 171 + .../busybox-0.60.5-insmod_gpl_symbols.patch | 46 + src/patches/busybox-0.60.5-spider.patch | 60 + src/patches/busybox-0.60.5-wget-unlink.patch | 13 + src/patches/bzip2-1.0.2-chmod.patch | 92 + .../capi4k-utils-2004-10-06_ppp-2.4.3.patch | 947 + src/patches/ccache-2.3.patch | 12 + src/patches/cnx_pci_yukon.patch | 3043 ++ .../dhcpcd-1.3.22-pl4_corrupt-packet.patch | 12 + src/patches/e2fsprogs-1.35-install.patch | 16 + src/patches/ez-ipupdate.formstring.patch | 11 + src/patches/fcdsl-singlelock.patch | 190 + src/patches/fcdslsl-singlelock.patch | 92 + src/patches/fcdslslusb-singlelock.patch | 142 + src/patches/fcdslx-irqreturn.patch | 11 + src/patches/gcc-2.95.3-alpha.patch | 321 + src/patches/glibc-2.3.3-ssp_frandom-2.patch | 222 + src/patches/grub-0.90-append.patch | 111 + src/patches/grub-0.90-symlinkmenulst.patch | 16 + src/patches/grub-0.91-bootonce.patch | 249 + src/patches/grub-0.91-splashimagehelp.patch | 28 + src/patches/grub-0.93-configfile.patch | 75 + src/patches/grub-0.93-endedit.patch | 77 + src/patches/grub-0.93-graphics-bootterm.patch | 39 + src/patches/grub-0.93-graphics.patch | 1283 + src/patches/grub-0.93-rtl8139.patch | 183 + .../grub-0.93-special-device-names.patch | 18 + src/patches/grub-0.94-i2o.patch | 55 + src/patches/gzip-1.3.3-window-size.patch | 14 + src/patches/gzip-1.3.5-asm-execstack.patch | 15 + src/patches/gzip-1.3.5-gunzip-dir.patch | 14 + src/patches/gzip-1.3.5-perm.patch | 63 + src/patches/inetutils-1.4.2-ping-1.patch | 117 + src/patches/iproute2-2.4.7-netlink.patch | 22 + src/patches/iproute2-includes.patch | 251 + src/patches/iptables-1.2.11.patch | 31 + src/patches/isdn4k-utils-v3.2p1-c89.patch | 69 + src/patches/isdn4k-utils-v3.2p1-config.patch | 96 + src/patches/kernel-2.4-layer7-2.1.patch | 2055 ++ src/patches/kudzu-0.99.50-pam.patch | 37 + src/patches/kudzu-0.99.50-updfstab.conf.patch | 24 + src/patches/libcap-1.10-shared.patch | 18 + src/patches/libcap-1.10-syscall.patch | 43 + src/patches/libpcap-0.8.3-ppp.patch | 10 + src/patches/libpcap-0.8.3-shared.patch | 51 + .../libpng-1.2.8-link_to_proper_libs-1.patch | 58 + src/patches/libsafe-alpha.diff | 232 + src/patches/libsafe-functioncaching.diff | 258 + src/patches/linux-2.4.23-olitec-isdn.patch | 60 + src/patches/linux-2.4.26-proc-stat.patch | 269 + src/patches/linux-2.4.26-scsi.patch | 10 + src/patches/linux-2.4.27-frandom-2.patch | 551 + src/patches/linux-2.4.27-ssp-1.patch | 64 + src/patches/linux-2.4.28-imq2.diff | 748 + src/patches/linux-2.4.29_r8169clone.patch | 10 + src/patches/make_devices.patch | 410 + ...net-tools-1.60-cleanup-list-handling.patch | 61 + src/patches/net-tools-1.60-get_name.patch | 58 + src/patches/newt-0.50.17-colors.patch | 103 + src/patches/newt-0.50.17-vaend.patch | 20 + src/patches/ntp-4.2.0-linuxcaps.patch | 139 + src/patches/openswan-1.0.1-plutoctl.patch | 18 + src/patches/openswan-1.0.6-numif.patch | 342 + src/patches/openswan-1.0.9-restart.patch | 73 + src/patches/pam-0.99.3.0-hostname.patch | 49 + .../patch-o-matic-ng-20040621_03_2.4.29.patch | 97 + ...atch-o-matic-ng-20040621_pptp_2.4.29.patch | 8 + src/patches/patch-o-matic-ng-raw_2.4.31.patch | 263 + src/patches/pcre-4.5-CAN-2005-2491.patch | 54 + .../perl-5.8.5-perlio_debug_security.patch | 22 + src/patches/perl-5.8.5-tempfiles.patch | 60 + src/patches/perl.patch | 26 + src/patches/pomng.fix | 11 + src/patches/ppp-2.4.1-oedod.patch | 172 + src/patches/ppp-2.4.2-close.patch | 15 + src/patches/ppp-2.4.2-pppoatm-modprobe.patch | 13 + src/patches/ppp-2.4.2-pppoatm-persist.patch | 36 + src/patches/ppp-2.4.2-pppoatm.patch | 284 + src/patches/ppp-2.4.2-printstats.patch | 11 + src/patches/ppp-2.4.2-signal.patch | 13 + .../ppp_generic-ppp-2.4.3_multilink.patch | 55 + .../proc_net_conntrack-permissions.patch | 22 + src/patches/speedtouch-1.2-isdn.patch | 11 + .../sysklogd-1.3-31-rh-ksyslog-nul.diff | 12 + ...sklogd-1.4.1-caen-owl-klogd-drop-root.diff | 170 + .../sysklogd-1.4.1-caen-owl-syslogd-bind.diff | 111 + ...logd-1.4.1-caen-owl-syslogd-drop-root.diff | 117 + ...ysklogd-1.4.1-owl-syslogd-crunch_list.diff | 87 + src/patches/tcpdump-3.8.2-bgp-dos-2.patch | 18 + src/patches/tcpdump-3.8.2-bgp-dos.patch | 14 + src/patches/tcpdump-3.8.2-isis-dos.patch | 26 + src/patches/tcpdump-3.8.2-ldp-dos.patch | 42 + src/patches/tcpdump-3.8.2-rsvp-dos.patch | 34 + ...til-linux-2.12a-umount_CAN-2005-2876.patch | 14 + src/patches/viscii10-8x16-new.psfu | Bin 0 -> 4897 bytes src/pcmcia/CVS/Entries | 3 + src/pcmcia/CVS/Repository | 1 + src/pcmcia/CVS/Root | 1 + src/pcmcia/CVS/Tag | 1 + src/pcmcia/isdnextra.conf | 3 + src/pcmcia/netextra.conf | 3 + src/ppp/CVS/Entries | 8 + src/ppp/CVS/Repository | 1 + src/ppp/CVS/Root | 1 + src/ppp/CVS/Tag | 1 + src/ppp/demonloginscript | 5 + src/ppp/dialer | 89 + src/ppp/ioptions | 0 src/ppp/ip-down | 33 + src/ppp/ip-up | 58 + src/ppp/options | 2 + src/ppp/standardloginscript | 3 + src/rc.d/CVS/Entries | 26 + src/rc.d/CVS/Repository | 1 + src/rc.d/CVS/Root | 1 + src/rc.d/CVS/Tag | 1 + src/rc.d/helper/CVS/Entries | 3 + src/rc.d/helper/CVS/Repository | 1 + src/rc.d/helper/CVS/Root | 1 + src/rc.d/helper/CVS/Tag | 1 + src/rc.d/helper/getdnsfromdhcpc.pl | 32 + src/rc.d/helper/writeipac.pl | 55 + src/rc.d/rc.3cp4218usbadsl | 76 + src/rc.d/rc.alcatelusb | 107 + src/rc.d/rc.alcatelusbk | 86 + src/rc.d/rc.amedynusbadsl | 62 + src/rc.d/rc.bewanadsl | 77 + src/rc.d/rc.conexantpciadsl | 80 + src/rc.d/rc.conexantusbadsl | 61 + src/rc.d/rc.connectioncheck | 135 + src/rc.d/rc.eagleusbadsl | 75 + src/rc.d/rc.eciadsl | 151 + src/rc.d/rc.firewall | 293 + src/rc.d/rc.firewall.local | 20 + src/rc.d/rc.flash.down | 1 + src/rc.d/rc.flash.up | 51 + src/rc.d/rc.fritzdsl | 77 + src/rc.d/rc.halt | 43 + src/rc.d/rc.isdn | 58 + src/rc.d/rc.local | 2 + src/rc.d/rc.netaddress.down | 27 + src/rc.d/rc.netaddress.up | 55 + src/rc.d/rc.network | 82 + src/rc.d/rc.pulsardsl | 45 + src/rc.d/rc.red | 1169 + src/rc.d/rc.sysinit | 267 + src/rc.d/rc.updatered | 154 + src/scripts/CVS/Entries | 12 + src/scripts/CVS/Repository | 1 + src/scripts/CVS/Root | 1 + src/scripts/CVS/Tag | 1 + src/scripts/httpscert | 50 + src/scripts/makegraphs | 487 + src/scripts/readhash | 22 + src/scripts/resetusb | 15 + src/scripts/setddns.pl | 625 + src/scripts/setreservedports | 45 + src/scripts/settime | 84 + src/scripts/timecheck | 35 + src/scripts/tunerrd.pl | 34 + src/scripts/updatelists.pl | 42 + src/scripts/updatesetup | 23 + src/uClibc/CVS/Entries | 3 + src/uClibc/CVS/Repository | 1 + src/uClibc/CVS/Root | 1 + src/uClibc/CVS/Tag | 1 + src/uClibc/Makefile | 238 + src/uClibc/make/CVS/Entries | 4 + src/uClibc/make/CVS/Repository | 1 + src/uClibc/make/CVS/Root | 1 + src/uClibc/make/CVS/Tag | 1 + src/uClibc/make/binutils.mk | 209 + src/uClibc/make/gcc-3.3.mk | 457 + src/uClibc/make/uclibc.mk | 144 + src/uClibc/sources/CVS/Entries | 13 + src/uClibc/sources/CVS/Repository | 1 + src/uClibc/sources/CVS/Root | 1 + src/uClibc/sources/CVS/Tag | 1 + src/uClibc/sources/binutils-001-debian.patch | 161 + src/uClibc/sources/binutils-002-uclibc.patch | 240 + src/uClibc/sources/codesets.txt | 2 + .../sources/gcc-001-disable-mathf.patch | 117 + .../sources/gcc-006-include-search.patch | 18 + .../sources/gcc-810-libstd++-locale.patch | 283 + src/uClibc/sources/gcc-830-nonhidden.patch | 14 + src/uClibc/sources/gcc-840-abi_check.patch | 14 + src/uClibc/sources/i386-gcc-soft-float.patch | 61 + src/uClibc/sources/locales.txt | 7 + src/uClibc/sources/patch-kernel.sh | 53 + src/uClibc/sources/uClibc.config | 146 + tools/CVS/Entries | 7 + tools/CVS/Repository | 1 + tools/CVS/Root | 1 + tools/CVS/Tag | 1 + tools/check_langs.sh | 32 + tools/check_strings.pl | 62 + tools/cvs2cl.pl | 3174 ++ tools/cvs2sql.pl | 89 + tools/fetchlangs.pl | 37 + tools/mkflash/CVS/Entries | 4 + tools/mkflash/CVS/Repository | 1 + tools/mkflash/CVS/Root | 1 + tools/mkflash/CVS/Tag | 1 + tools/mkflash/logrotate.conf | 84 + tools/mkflash/mkflash | 460 + tools/mkflash/settings.8139 | 30 + tools/perfTest.sh | 84 + updates/1.4.1/.cvsignore | 1 + updates/1.4.1/CVS/Entries | 6 + updates/1.4.1/CVS/Repository | 1 + updates/1.4.1/CVS/Root | 1 + updates/1.4.1/CVS/Tag | 1 + updates/1.4.1/ROOTFILES.alpha-1.4.1 | 189 + updates/1.4.1/ROOTFILES.i386-1.4.1 | 213 + updates/1.4.1/information | 1 + updates/1.4.1/setup | 62 + updates/1.4.10/.cvsignore | 1 + updates/1.4.10/CVS/Entries | 7 + updates/1.4.10/CVS/Repository | 1 + updates/1.4.10/CVS/Root | 1 + updates/1.4.10/CVS/Tag | 1 + updates/1.4.10/ROOTFILES.alpha-1.4.10 | 48 + updates/1.4.10/ROOTFILES.i386-1.4.10 | 48 + updates/1.4.10/fixbackups.sh | 36 + updates/1.4.10/information | 1 + updates/1.4.10/setup | 80 + updates/1.4.11/.cvsignore | 1 + updates/1.4.11/CVS/Entries | 6 + updates/1.4.11/CVS/Repository | 1 + updates/1.4.11/CVS/Root | 1 + updates/1.4.11/CVS/Tag | 1 + updates/1.4.11/ROOTFILES.alpha-1.4.11 | 228 + updates/1.4.11/ROOTFILES.i386-1.4.11 | 235 + updates/1.4.11/information | 1 + updates/1.4.11/patch.tar.gz | Bin 0 -> 3606540 bytes updates/1.4.11/setup | 47 + updates/1.4.2/.cvsignore | 1 + updates/1.4.2/CVS/Entries | 6 + updates/1.4.2/CVS/Repository | 1 + updates/1.4.2/CVS/Root | 1 + updates/1.4.2/CVS/Tag | 1 + updates/1.4.2/ROOTFILES.alpha-1.4.2 | 39 + updates/1.4.2/ROOTFILES.i386-1.4.2 | 50 + updates/1.4.2/information | 1 + updates/1.4.2/setup | 25 + updates/1.4.3/.cvsignore | 1 + updates/1.4.3/CVS/Entries | 6 + updates/1.4.3/CVS/Repository | 1 + updates/1.4.3/CVS/Root | 1 + updates/1.4.3/CVS/Tag | 1 + updates/1.4.3/ROOTFILES.alpha-1.4.3 | 126 + updates/1.4.3/ROOTFILES.i386-1.4.3 | 140 + updates/1.4.3/information | 1 + updates/1.4.3/setup | 43 + updates/1.4.4/.cvsignore | 1 + updates/1.4.4/CVS/Entries | 6 + updates/1.4.4/CVS/Repository | 1 + updates/1.4.4/CVS/Root | 1 + updates/1.4.4/CVS/Tag | 1 + updates/1.4.4/ROOTFILES.alpha-1.4.4 | 14 + updates/1.4.4/ROOTFILES.i386-1.4.4 | 21 + updates/1.4.4/information | 1 + updates/1.4.4/setup | 60 + updates/1.4.5/.cvsignore | 1 + updates/1.4.5/CVS/Entries | 6 + updates/1.4.5/CVS/Repository | 1 + updates/1.4.5/CVS/Root | 1 + updates/1.4.5/CVS/Tag | 1 + updates/1.4.5/ROOTFILES.alpha-1.4.5 | 15 + updates/1.4.5/ROOTFILES.i386-1.4.5 | 19 + updates/1.4.5/information | 1 + updates/1.4.5/setup | 20 + updates/1.4.6/.cvsignore | 1 + updates/1.4.6/CVS/Entries | 6 + updates/1.4.6/CVS/Repository | 1 + updates/1.4.6/CVS/Root | 1 + updates/1.4.6/CVS/Tag | 1 + updates/1.4.6/ROOTFILES.alpha-1.4.6 | 93 + updates/1.4.6/ROOTFILES.i386-1.4.6 | 93 + updates/1.4.6/information | 1 + updates/1.4.6/setup | 42 + updates/1.4.7/.cvsignore | 1 + updates/1.4.7/CVS/Entries | 6 + updates/1.4.7/CVS/Repository | 1 + updates/1.4.7/CVS/Root | 1 + updates/1.4.7/CVS/Tag | 1 + updates/1.4.7/ROOTFILES.alpha-1.4.7 | 374 + updates/1.4.7/ROOTFILES.i386-1.4.7 | 380 + updates/1.4.7/information | 1 + updates/1.4.7/setup | 211 + updates/1.4.8/.cvsignore | 1 + updates/1.4.8/CVS/Entries | 6 + updates/1.4.8/CVS/Repository | 1 + updates/1.4.8/CVS/Root | 1 + updates/1.4.8/CVS/Tag | 1 + updates/1.4.8/ROOTFILES.alpha-1.4.8 | 13 + updates/1.4.8/ROOTFILES.i386-1.4.8 | 29 + updates/1.4.8/information | 1 + updates/1.4.8/setup | 127 + updates/1.4.9/.cvsignore | 1 + updates/1.4.9/CVS/Entries | 7 + updates/1.4.9/CVS/Repository | 1 + updates/1.4.9/CVS/Root | 1 + updates/1.4.9/CVS/Tag | 1 + updates/1.4.9/ROOTFILES.alpha-1.4.9 | 55 + updates/1.4.9/ROOTFILES.i386-1.4.9 | 55 + updates/1.4.9/header.pl.patch | 70 + updates/1.4.9/information | 1 + updates/1.4.9/setup | 52 + updates/CVS/Entries | 11 + updates/CVS/Repository | 1 + updates/CVS/Root | 1 + updates/CVS/Tag | 1 + 1206 files changed, 185026 insertions(+) create mode 100644 .cvsignore create mode 100644 config/CVS/Entries create mode 100644 config/CVS/Repository create mode 100644 config/CVS/Root create mode 100644 config/CVS/Tag create mode 100644 config/aboot/CVS/Entries create mode 100644 config/aboot/CVS/Repository create mode 100644 config/aboot/CVS/Root create mode 100644 config/aboot/CVS/Tag create mode 100644 config/aboot/aboot.conf create mode 100644 config/aboot/scsiaboot.conf create mode 100644 config/cdrom/CVS/Entries create mode 100644 config/cdrom/CVS/Repository create mode 100644 config/cdrom/CVS/Root create mode 100644 config/cdrom/CVS/Tag create mode 100644 config/cdrom/README.txt create mode 100644 config/cfgroot/CVS/Entries create mode 100644 config/cfgroot/CVS/Repository create mode 100644 config/cfgroot/CVS/Root create mode 100644 config/cfgroot/CVS/Tag create mode 100644 config/cfgroot/advoptions-list create mode 100644 config/cfgroot/backup-exclude create mode 100644 config/cfgroot/backup-exclude.hardware create mode 100644 config/cfgroot/backup-include create mode 100644 config/cfgroot/countries.pl create mode 100644 config/cfgroot/defaultservices create mode 100644 config/cfgroot/general-functions.pl create mode 100644 config/cfgroot/header-menu.pl create mode 100644 config/cfgroot/header.pl create mode 100644 config/cfgroot/icmptypes create mode 100644 config/cfgroot/ipcop.gpg create mode 100644 config/cfgroot/lang.pl create mode 100644 config/cfgroot/logging-settings create mode 100644 config/cfgroot/modem-defaults create mode 100644 config/cfgroot/modem-settings create mode 100644 config/cfgroot/oinkmaster.conf create mode 100644 config/cfgroot/protocols.pl create mode 100644 config/cfgroot/proxy-acl create mode 100644 config/cfgroot/time-settings create mode 100644 config/cfgroot/xtaccess-config create mode 100644 config/cron/CVS/Entries create mode 100644 config/cron/CVS/Repository create mode 100644 config/cron/CVS/Root create mode 100644 config/cron/CVS/Tag create mode 100644 config/cron/crontab create mode 100644 config/etc/CVS/Entries create mode 100644 config/etc/CVS/Repository create mode 100644 config/etc/CVS/Root create mode 100644 config/etc/CVS/Tag create mode 100644 config/etc/certparams create mode 100644 config/etc/fstab create mode 100644 config/etc/group create mode 100644 config/etc/host.conf create mode 100644 config/etc/inittab create mode 100644 config/etc/inputrc create mode 100644 config/etc/ld.so.conf create mode 100644 config/etc/logrotate.conf create mode 100644 config/etc/mime.types create mode 100644 config/etc/modules.conf create mode 100644 config/etc/nsswitch.conf create mode 100644 config/etc/passwd create mode 100644 config/etc/profile create mode 100644 config/etc/resolv.conf create mode 100644 config/etc/securetty create mode 100644 config/etc/sysctl.conf create mode 100644 config/etc/syslog.conf create mode 100644 config/grub/CVS/Entries create mode 100644 config/grub/CVS/Repository create mode 100644 config/grub/CVS/Root create mode 100644 config/grub/CVS/Tag create mode 100644 config/grub/grub.conf create mode 100644 config/grub/ipcop.xpm.gz create mode 100644 config/grub/scsigrub.conf create mode 100644 config/httpd/CVS/Entries create mode 100644 config/httpd/CVS/Repository create mode 100644 config/httpd/CVS/Root create mode 100644 config/httpd/CVS/Tag create mode 100644 config/httpd/httpd.conf create mode 100644 config/install/CVS/Entries create mode 100644 config/install/CVS/Repository create mode 100644 config/install/CVS/Root create mode 100644 config/install/CVS/Tag create mode 100644 config/install/fstab create mode 100644 config/install/group create mode 100644 config/install/halt create mode 100644 config/install/hosts create mode 100644 config/install/inittab create mode 100644 config/install/nsswitch.conf create mode 100644 config/install/passwd create mode 100644 config/install/profile create mode 100644 config/install/rc create mode 100644 config/install/shells create mode 100644 config/ipac-ng/CVS/Entries create mode 100644 config/ipac-ng/CVS/Repository create mode 100644 config/ipac-ng/CVS/Root create mode 100644 config/ipac-ng/CVS/Tag create mode 100644 config/ipac-ng/ipac.conf create mode 100644 config/ipac-ng/rules.conf create mode 100644 config/kernel/CVS/Entries create mode 100644 config/kernel/CVS/Repository create mode 100644 config/kernel/CVS/Root create mode 100644 config/kernel/CVS/Tag create mode 100644 config/kernel/aboot.conf create mode 100644 config/kernel/install-message create mode 100644 config/kernel/kernel.config.alpha create mode 100644 config/kernel/kernel.config.i386 create mode 100644 config/kernel/kernel.config.i386.installer create mode 100644 config/kernel/kernel.config.i386.original create mode 100644 config/kernel/kernel.config.i386.smp create mode 100644 config/kernel/syslinux.cfg create mode 100644 config/snort/CVS/Entries create mode 100644 config/snort/CVS/Repository create mode 100644 config/snort/CVS/Root create mode 100644 config/snort/CVS/Tag create mode 100644 config/snort/snort.conf create mode 100644 config/ssl/CVS/Entries create mode 100644 config/ssl/CVS/Repository create mode 100644 config/ssl/CVS/Root create mode 100644 config/ssl/CVS/Tag create mode 100644 config/ssl/openssl.cnf create mode 100644 doc/.cvsignore create mode 100644 doc/COPYING create mode 100644 doc/CVS/Entries create mode 100644 doc/CVS/Repository create mode 100644 doc/CVS/Root create mode 100644 doc/CVS/Tag create mode 100644 doc/ChangeLog create mode 100644 doc/How-to-make-update create mode 100644 doc/README create mode 100644 doc/make.sh-usage create mode 100644 doc/packages-list.txt create mode 100644 doc/updated-sources.txt_old create mode 100644 html/CVS/Entries create mode 100644 html/CVS/Repository create mode 100644 html/CVS/Root create mode 100644 html/CVS/Tag create mode 100644 html/cgi-bin/CVS/Entries create mode 100644 html/cgi-bin/CVS/Repository create mode 100644 html/cgi-bin/CVS/Root create mode 100644 html/cgi-bin/CVS/Tag create mode 100644 html/cgi-bin/aliases.cgi create mode 100644 html/cgi-bin/backup.cgi create mode 100644 html/cgi-bin/base.cgi create mode 100644 html/cgi-bin/changepw.cgi create mode 100644 html/cgi-bin/connections.cgi create mode 100644 html/cgi-bin/credits.cgi create mode 100644 html/cgi-bin/ddns.cgi create mode 100644 html/cgi-bin/dhcp.cgi create mode 100644 html/cgi-bin/dial.cgi create mode 100644 html/cgi-bin/dmzholes.cgi create mode 100644 html/cgi-bin/graphs.cgi create mode 100644 html/cgi-bin/gui.cgi create mode 100644 html/cgi-bin/hosts.cgi create mode 100644 html/cgi-bin/ids.cgi create mode 100644 html/cgi-bin/index.cgi create mode 100644 html/cgi-bin/ipinfo.cgi create mode 100644 html/cgi-bin/logs.cgi/CVS/Entries create mode 100644 html/cgi-bin/logs.cgi/CVS/Repository create mode 100644 html/cgi-bin/logs.cgi/CVS/Root create mode 100644 html/cgi-bin/logs.cgi/CVS/Tag create mode 100644 html/cgi-bin/logs.cgi/config.dat create mode 100644 html/cgi-bin/logs.cgi/firewalllog.dat create mode 100644 html/cgi-bin/logs.cgi/ids.dat create mode 100644 html/cgi-bin/logs.cgi/log.dat create mode 100644 html/cgi-bin/logs.cgi/proxylog.dat create mode 100644 html/cgi-bin/logs.cgi/summary.dat create mode 100644 html/cgi-bin/modem.cgi create mode 100644 html/cgi-bin/netstatus.cgi create mode 100644 html/cgi-bin/networks.cgi create mode 100644 html/cgi-bin/optionsfw.cgi create mode 100644 html/cgi-bin/portfw.cgi create mode 100644 html/cgi-bin/pppsetup.cgi create mode 100644 html/cgi-bin/proxy.cgi create mode 100644 html/cgi-bin/proxygraphs.cgi create mode 100644 html/cgi-bin/remote.cgi create mode 100644 html/cgi-bin/services.cgi create mode 100644 html/cgi-bin/shaping.cgi create mode 100644 html/cgi-bin/shutdown.cgi create mode 100644 html/cgi-bin/status.cgi create mode 100644 html/cgi-bin/time.cgi create mode 100644 html/cgi-bin/updates.cgi create mode 100644 html/cgi-bin/upload.cgi create mode 100644 html/cgi-bin/vpnmain.cgi create mode 100644 html/cgi-bin/wireless.cgi create mode 100644 html/cgi-bin/xtaccess.cgi create mode 100644 html/html/CVS/Entries create mode 100644 html/html/CVS/Repository create mode 100644 html/html/CVS/Root create mode 100644 html/html/CVS/Tag create mode 100644 html/html/blob.gif create mode 100644 html/html/favicon.ico create mode 100644 html/html/images/CVS/Entries create mode 100644 html/html/images/CVS/Repository create mode 100644 html/html/images/CVS/Root create mode 100644 html/html/images/CVS/Tag create mode 100644 html/html/images/add.gif create mode 100644 html/html/images/addblue.gif create mode 100644 html/html/images/bounceback.png create mode 100644 html/html/images/boxbottom1.png create mode 100644 html/html/images/boxbottom2.png create mode 100644 html/html/images/boxbottom3.png create mode 100644 html/html/images/boxleft.png create mode 100644 html/html/images/boxright.png create mode 100644 html/html/images/boxtop1.png create mode 100644 html/html/images/boxtop2.png create mode 100644 html/html/images/boxtop3.png create mode 100644 html/html/images/clock.gif create mode 100644 html/html/images/delete.gif create mode 100644 html/html/images/download.png create mode 100644 html/html/images/edit.gif create mode 100644 html/html/images/floppy.gif create mode 100644 html/html/images/forward.gif create mode 100644 html/html/images/header.png create mode 100644 html/html/images/info.gif create mode 100644 html/html/images/null.gif create mode 100644 html/html/images/off.gif create mode 100644 html/html/images/on.gif create mode 100644 html/html/images/reload.gif create mode 100644 html/html/images/web-support.png create mode 100644 html/html/include/CVS/Entries create mode 100644 html/html/include/CVS/Repository create mode 100644 html/html/include/CVS/Root create mode 100644 html/html/include/CVS/Tag create mode 100644 html/html/include/domMenu.js create mode 100644 html/html/include/ipcop.css create mode 100644 html/html/index.cgi create mode 100644 html/html/ipcop_big.gif create mode 100644 langs/CVS/Entries create mode 100644 langs/CVS/Repository create mode 100644 langs/CVS/Root create mode 100644 langs/CVS/Tag create mode 100644 langs/bz/CVS/Entries create mode 100644 langs/bz/CVS/Repository create mode 100644 langs/bz/CVS/Root create mode 100644 langs/bz/CVS/Tag create mode 100644 langs/bz/cgi-bin/CVS/Entries create mode 100644 langs/bz/cgi-bin/CVS/Repository create mode 100644 langs/bz/cgi-bin/CVS/Root create mode 100644 langs/bz/cgi-bin/CVS/Tag create mode 100644 langs/bz/cgi-bin/bz.pl create mode 100644 langs/bz/install/CVS/Entries create mode 100644 langs/bz/install/CVS/Repository create mode 100644 langs/bz/install/CVS/Root create mode 100644 langs/bz/install/CVS/Tag create mode 100644 langs/bz/install/lang_bz.c create mode 100644 langs/cs/CVS/Entries create mode 100644 langs/cs/CVS/Repository create mode 100644 langs/cs/CVS/Root create mode 100644 langs/cs/CVS/Tag create mode 100644 langs/cs/cgi-bin/CVS/Entries create mode 100644 langs/cs/cgi-bin/CVS/Repository create mode 100644 langs/cs/cgi-bin/CVS/Root create mode 100644 langs/cs/cgi-bin/CVS/Tag create mode 100644 langs/cs/cgi-bin/cs.pl create mode 100644 langs/cs/install/CVS/Entries create mode 100644 langs/cs/install/CVS/Repository create mode 100644 langs/cs/install/CVS/Root create mode 100644 langs/cs/install/CVS/Tag create mode 100644 langs/cs/install/lang_cs.c create mode 100644 langs/da/CVS/Entries create mode 100644 langs/da/CVS/Repository create mode 100644 langs/da/CVS/Root create mode 100644 langs/da/CVS/Tag create mode 100644 langs/da/cgi-bin/CVS/Entries create mode 100644 langs/da/cgi-bin/CVS/Repository create mode 100644 langs/da/cgi-bin/CVS/Root create mode 100644 langs/da/cgi-bin/CVS/Tag create mode 100644 langs/da/cgi-bin/da.pl create mode 100644 langs/da/install/CVS/Entries create mode 100644 langs/da/install/CVS/Repository create mode 100644 langs/da/install/CVS/Root create mode 100644 langs/da/install/CVS/Tag create mode 100644 langs/da/install/lang_da.c create mode 100644 langs/de/CVS/Entries create mode 100644 langs/de/CVS/Repository create mode 100644 langs/de/CVS/Root create mode 100644 langs/de/CVS/Tag create mode 100644 langs/de/cgi-bin/CVS/Entries create mode 100644 langs/de/cgi-bin/CVS/Repository create mode 100644 langs/de/cgi-bin/CVS/Root create mode 100644 langs/de/cgi-bin/CVS/Tag create mode 100644 langs/de/cgi-bin/de.pl create mode 100644 langs/de/install/CVS/Entries create mode 100644 langs/de/install/CVS/Repository create mode 100644 langs/de/install/CVS/Root create mode 100644 langs/de/install/CVS/Tag create mode 100644 langs/de/install/lang_de.c create mode 100644 langs/el/CVS/Entries create mode 100644 langs/el/CVS/Repository create mode 100644 langs/el/CVS/Root create mode 100644 langs/el/CVS/Tag create mode 100644 langs/el/cgi-bin/CVS/Entries create mode 100644 langs/el/cgi-bin/CVS/Repository create mode 100644 langs/el/cgi-bin/CVS/Root create mode 100644 langs/el/cgi-bin/CVS/Tag create mode 100644 langs/el/cgi-bin/el.pl create mode 100644 langs/el/install/CVS/Entries create mode 100644 langs/el/install/CVS/Repository create mode 100644 langs/el/install/CVS/Root create mode 100644 langs/el/install/CVS/Tag create mode 100644 langs/el/install/lang_el.c create mode 100644 langs/en/CVS/Entries create mode 100644 langs/en/CVS/Repository create mode 100644 langs/en/CVS/Root create mode 100644 langs/en/CVS/Tag create mode 100644 langs/en/cgi-bin/CVS/Entries create mode 100644 langs/en/cgi-bin/CVS/Repository create mode 100644 langs/en/cgi-bin/CVS/Root create mode 100644 langs/en/cgi-bin/CVS/Tag create mode 100644 langs/en/cgi-bin/en.pl create mode 100644 langs/en/install/CVS/Entries create mode 100644 langs/en/install/CVS/Repository create mode 100644 langs/en/install/CVS/Root create mode 100644 langs/en/install/CVS/Tag create mode 100644 langs/en/install/lang_en.c create mode 100644 langs/es/CVS/Entries create mode 100644 langs/es/CVS/Repository create mode 100644 langs/es/CVS/Root create mode 100644 langs/es/CVS/Tag create mode 100644 langs/es/cgi-bin/CVS/Entries create mode 100644 langs/es/cgi-bin/CVS/Repository create mode 100644 langs/es/cgi-bin/CVS/Root create mode 100644 langs/es/cgi-bin/CVS/Tag create mode 100644 langs/es/cgi-bin/es.pl create mode 100644 langs/es/install/CVS/Entries create mode 100644 langs/es/install/CVS/Repository create mode 100644 langs/es/install/CVS/Root create mode 100644 langs/es/install/CVS/Tag create mode 100644 langs/es/install/lang_es.c create mode 100644 langs/fa/CVS/Entries create mode 100644 langs/fa/CVS/Repository create mode 100644 langs/fa/CVS/Root create mode 100644 langs/fa/CVS/Tag create mode 100644 langs/fa/cgi-bin/CVS/Entries create mode 100644 langs/fa/cgi-bin/CVS/Repository create mode 100644 langs/fa/cgi-bin/CVS/Root create mode 100644 langs/fa/cgi-bin/CVS/Tag create mode 100644 langs/fa/cgi-bin/fa.pl create mode 100644 langs/fi/CVS/Entries create mode 100644 langs/fi/CVS/Repository create mode 100644 langs/fi/CVS/Root create mode 100644 langs/fi/CVS/Tag create mode 100644 langs/fi/cgi-bin/CVS/Entries create mode 100644 langs/fi/cgi-bin/CVS/Repository create mode 100644 langs/fi/cgi-bin/CVS/Root create mode 100644 langs/fi/cgi-bin/CVS/Tag create mode 100644 langs/fi/cgi-bin/fi.pl create mode 100644 langs/fi/install/CVS/Entries create mode 100644 langs/fi/install/CVS/Repository create mode 100644 langs/fi/install/CVS/Root create mode 100644 langs/fi/install/CVS/Tag create mode 100644 langs/fi/install/lang_fi.c create mode 100644 langs/fr/CVS/Entries create mode 100644 langs/fr/CVS/Repository create mode 100644 langs/fr/CVS/Root create mode 100644 langs/fr/CVS/Tag create mode 100644 langs/fr/cgi-bin/CVS/Entries create mode 100644 langs/fr/cgi-bin/CVS/Repository create mode 100644 langs/fr/cgi-bin/CVS/Root create mode 100644 langs/fr/cgi-bin/CVS/Tag create mode 100644 langs/fr/cgi-bin/fr.pl create mode 100644 langs/fr/install/CVS/Entries create mode 100644 langs/fr/install/CVS/Repository create mode 100644 langs/fr/install/CVS/Root create mode 100644 langs/fr/install/CVS/Tag create mode 100644 langs/fr/install/lang_fr.c create mode 100644 langs/hu/CVS/Entries create mode 100644 langs/hu/CVS/Repository create mode 100644 langs/hu/CVS/Root create mode 100644 langs/hu/CVS/Tag create mode 100644 langs/hu/cgi-bin/CVS/Entries create mode 100644 langs/hu/cgi-bin/CVS/Repository create mode 100644 langs/hu/cgi-bin/CVS/Root create mode 100644 langs/hu/cgi-bin/CVS/Tag create mode 100644 langs/hu/cgi-bin/hu.pl create mode 100644 langs/hu/install/CVS/Entries create mode 100644 langs/hu/install/CVS/Repository create mode 100644 langs/hu/install/CVS/Root create mode 100644 langs/hu/install/CVS/Tag create mode 100644 langs/hu/install/lang_hu.c create mode 100644 langs/it/CVS/Entries create mode 100644 langs/it/CVS/Repository create mode 100644 langs/it/CVS/Root create mode 100644 langs/it/CVS/Tag create mode 100644 langs/it/cgi-bin/CVS/Entries create mode 100644 langs/it/cgi-bin/CVS/Repository create mode 100644 langs/it/cgi-bin/CVS/Root create mode 100644 langs/it/cgi-bin/CVS/Tag create mode 100644 langs/it/cgi-bin/it.pl create mode 100644 langs/it/install/CVS/Entries create mode 100644 langs/it/install/CVS/Repository create mode 100644 langs/it/install/CVS/Root create mode 100644 langs/it/install/CVS/Tag create mode 100644 langs/it/install/lang_it.c create mode 100644 langs/la/CVS/Entries create mode 100644 langs/la/CVS/Repository create mode 100644 langs/la/CVS/Root create mode 100644 langs/la/CVS/Tag create mode 100644 langs/la/cgi-bin/CVS/Entries create mode 100644 langs/la/cgi-bin/CVS/Repository create mode 100644 langs/la/cgi-bin/CVS/Root create mode 100644 langs/la/cgi-bin/CVS/Tag create mode 100644 langs/la/cgi-bin/la.pl create mode 100644 langs/la/install/CVS/Entries create mode 100644 langs/la/install/CVS/Repository create mode 100644 langs/la/install/CVS/Root create mode 100644 langs/la/install/CVS/Tag create mode 100644 langs/la/install/lang_la.c create mode 100644 langs/list create mode 100644 langs/lt/CVS/Entries create mode 100644 langs/lt/CVS/Repository create mode 100644 langs/lt/CVS/Root create mode 100644 langs/lt/CVS/Tag create mode 100644 langs/lt/cgi-bin/CVS/Entries create mode 100644 langs/lt/cgi-bin/CVS/Repository create mode 100644 langs/lt/cgi-bin/CVS/Root create mode 100644 langs/lt/cgi-bin/CVS/Tag create mode 100644 langs/lt/cgi-bin/lt.pl create mode 100644 langs/nl/CVS/Entries create mode 100644 langs/nl/CVS/Repository create mode 100644 langs/nl/CVS/Root create mode 100644 langs/nl/CVS/Tag create mode 100644 langs/nl/cgi-bin/CVS/Entries create mode 100644 langs/nl/cgi-bin/CVS/Repository create mode 100644 langs/nl/cgi-bin/CVS/Root create mode 100644 langs/nl/cgi-bin/CVS/Tag create mode 100644 langs/nl/cgi-bin/nl.pl create mode 100644 langs/nl/install/CVS/Entries create mode 100644 langs/nl/install/CVS/Repository create mode 100644 langs/nl/install/CVS/Root create mode 100644 langs/nl/install/CVS/Tag create mode 100644 langs/nl/install/lang_nl.c create mode 100644 langs/no/CVS/Entries create mode 100644 langs/no/CVS/Repository create mode 100644 langs/no/CVS/Root create mode 100644 langs/no/CVS/Tag create mode 100644 langs/no/cgi-bin/CVS/Entries create mode 100644 langs/no/cgi-bin/CVS/Repository create mode 100644 langs/no/cgi-bin/CVS/Root create mode 100644 langs/no/cgi-bin/CVS/Tag create mode 100644 langs/no/cgi-bin/no.pl create mode 100644 langs/no/install/CVS/Entries create mode 100644 langs/no/install/CVS/Repository create mode 100644 langs/no/install/CVS/Root create mode 100644 langs/no/install/CVS/Tag create mode 100644 langs/no/install/lang_no.c create mode 100644 langs/pl/CVS/Entries create mode 100644 langs/pl/CVS/Repository create mode 100644 langs/pl/CVS/Root create mode 100644 langs/pl/CVS/Tag create mode 100644 langs/pl/cgi-bin/CVS/Entries create mode 100644 langs/pl/cgi-bin/CVS/Repository create mode 100644 langs/pl/cgi-bin/CVS/Root create mode 100644 langs/pl/cgi-bin/CVS/Tag create mode 100644 langs/pl/cgi-bin/pl.pl create mode 100644 langs/pl/install/CVS/Entries create mode 100644 langs/pl/install/CVS/Repository create mode 100644 langs/pl/install/CVS/Root create mode 100644 langs/pl/install/CVS/Tag create mode 100644 langs/pl/install/lang_pl.c create mode 100644 langs/pt/CVS/Entries create mode 100644 langs/pt/CVS/Repository create mode 100644 langs/pt/CVS/Root create mode 100644 langs/pt/CVS/Tag create mode 100644 langs/pt/cgi-bin/CVS/Entries create mode 100644 langs/pt/cgi-bin/CVS/Repository create mode 100644 langs/pt/cgi-bin/CVS/Root create mode 100644 langs/pt/cgi-bin/CVS/Tag create mode 100644 langs/pt/cgi-bin/pt.pl create mode 100644 langs/pt/install/CVS/Entries create mode 100644 langs/pt/install/CVS/Repository create mode 100644 langs/pt/install/CVS/Root create mode 100644 langs/pt/install/CVS/Tag create mode 100644 langs/pt/install/lang_pt.c create mode 100644 langs/ro/CVS/Entries create mode 100644 langs/ro/CVS/Repository create mode 100644 langs/ro/CVS/Root create mode 100644 langs/ro/CVS/Tag create mode 100644 langs/ro/cgi-bin/CVS/Entries create mode 100644 langs/ro/cgi-bin/CVS/Repository create mode 100644 langs/ro/cgi-bin/CVS/Root create mode 100644 langs/ro/cgi-bin/CVS/Tag create mode 100644 langs/ro/cgi-bin/ro.pl create mode 100644 langs/ru/CVS/Entries create mode 100644 langs/ru/CVS/Repository create mode 100644 langs/ru/CVS/Root create mode 100644 langs/ru/CVS/Tag create mode 100644 langs/ru/cgi-bin/CVS/Entries create mode 100644 langs/ru/cgi-bin/CVS/Repository create mode 100644 langs/ru/cgi-bin/CVS/Root create mode 100644 langs/ru/cgi-bin/CVS/Tag create mode 100644 langs/ru/cgi-bin/ru.pl create mode 100644 langs/sk/CVS/Entries create mode 100644 langs/sk/CVS/Repository create mode 100644 langs/sk/CVS/Root create mode 100644 langs/sk/CVS/Tag create mode 100644 langs/sk/cgi-bin/CVS/Entries create mode 100644 langs/sk/cgi-bin/CVS/Repository create mode 100644 langs/sk/cgi-bin/CVS/Root create mode 100644 langs/sk/cgi-bin/CVS/Tag create mode 100644 langs/sk/cgi-bin/sk.pl create mode 100644 langs/sk/install/CVS/Entries create mode 100644 langs/sk/install/CVS/Repository create mode 100644 langs/sk/install/CVS/Root create mode 100644 langs/sk/install/CVS/Tag create mode 100644 langs/sk/install/lang_sk.c create mode 100644 langs/sl/CVS/Entries create mode 100644 langs/sl/CVS/Repository create mode 100644 langs/sl/CVS/Root create mode 100644 langs/sl/CVS/Tag create mode 100644 langs/sl/cgi-bin/CVS/Entries create mode 100644 langs/sl/cgi-bin/CVS/Repository create mode 100644 langs/sl/cgi-bin/CVS/Root create mode 100644 langs/sl/cgi-bin/CVS/Tag create mode 100644 langs/sl/cgi-bin/sl.pl create mode 100644 langs/so/CVS/Entries create mode 100644 langs/so/CVS/Repository create mode 100644 langs/so/CVS/Root create mode 100644 langs/so/CVS/Tag create mode 100644 langs/so/cgi-bin/CVS/Entries create mode 100644 langs/so/cgi-bin/CVS/Repository create mode 100644 langs/so/cgi-bin/CVS/Root create mode 100644 langs/so/cgi-bin/CVS/Tag create mode 100644 langs/so/cgi-bin/so.pl create mode 100644 langs/so/install/CVS/Entries create mode 100644 langs/so/install/CVS/Repository create mode 100644 langs/so/install/CVS/Root create mode 100644 langs/so/install/CVS/Tag create mode 100644 langs/so/install/lang_so.c create mode 100644 langs/sv/CVS/Entries create mode 100644 langs/sv/CVS/Repository create mode 100644 langs/sv/CVS/Root create mode 100644 langs/sv/CVS/Tag create mode 100644 langs/sv/cgi-bin/CVS/Entries create mode 100644 langs/sv/cgi-bin/CVS/Repository create mode 100644 langs/sv/cgi-bin/CVS/Root create mode 100644 langs/sv/cgi-bin/CVS/Tag create mode 100644 langs/sv/cgi-bin/sv.pl create mode 100644 langs/sv/install/CVS/Entries create mode 100644 langs/sv/install/CVS/Repository create mode 100644 langs/sv/install/CVS/Root create mode 100644 langs/sv/install/CVS/Tag create mode 100644 langs/sv/install/lang_sv.c create mode 100644 langs/th/CVS/Entries create mode 100644 langs/th/CVS/Repository create mode 100644 langs/th/CVS/Root create mode 100644 langs/th/CVS/Tag create mode 100644 langs/th/cgi-bin/CVS/Entries create mode 100644 langs/th/cgi-bin/CVS/Repository create mode 100644 langs/th/cgi-bin/CVS/Root create mode 100644 langs/th/cgi-bin/CVS/Tag create mode 100644 langs/th/cgi-bin/th.pl create mode 100644 langs/tr/CVS/Entries create mode 100644 langs/tr/CVS/Repository create mode 100644 langs/tr/CVS/Root create mode 100644 langs/tr/CVS/Tag create mode 100644 langs/tr/cgi-bin/CVS/Entries create mode 100644 langs/tr/cgi-bin/CVS/Repository create mode 100644 langs/tr/cgi-bin/CVS/Root create mode 100644 langs/tr/cgi-bin/CVS/Tag create mode 100644 langs/tr/cgi-bin/tr.pl create mode 100644 langs/tr/install/CVS/Entries create mode 100644 langs/tr/install/CVS/Repository create mode 100644 langs/tr/install/CVS/Root create mode 100644 langs/tr/install/CVS/Tag create mode 100644 langs/tr/install/lang_tr.c create mode 100644 langs/vi/CVS/Entries create mode 100644 langs/vi/CVS/Repository create mode 100644 langs/vi/CVS/Root create mode 100644 langs/vi/CVS/Tag create mode 100644 langs/vi/cgi-bin/CVS/Entries create mode 100644 langs/vi/cgi-bin/CVS/Repository create mode 100644 langs/vi/cgi-bin/CVS/Root create mode 100644 langs/vi/cgi-bin/CVS/Tag create mode 100644 langs/vi/cgi-bin/vi.pl create mode 100644 langs/vi/install/CVS/Entries create mode 100644 langs/vi/install/CVS/Repository create mode 100644 langs/vi/install/CVS/Root create mode 100644 langs/vi/install/CVS/Tag create mode 100644 langs/vi/install/lang_vi.c create mode 100644 langs/zh/CVS/Entries create mode 100644 langs/zh/CVS/Repository create mode 100644 langs/zh/CVS/Root create mode 100644 langs/zh/CVS/Tag create mode 100644 langs/zh/cgi-bin/CVS/Entries create mode 100644 langs/zh/cgi-bin/CVS/Repository create mode 100644 langs/zh/cgi-bin/CVS/Root create mode 100644 langs/zh/cgi-bin/CVS/Tag create mode 100644 langs/zh/cgi-bin/zh.pl create mode 100644 langs/zt/CVS/Entries create mode 100644 langs/zt/CVS/Repository create mode 100644 langs/zt/CVS/Root create mode 100644 langs/zt/CVS/Tag create mode 100644 langs/zt/cgi-bin/CVS/Entries create mode 100644 langs/zt/cgi-bin/CVS/Repository create mode 100644 langs/zt/cgi-bin/CVS/Root create mode 100644 langs/zt/cgi-bin/CVS/Tag create mode 100644 langs/zt/cgi-bin/zt.pl create mode 100644 lfs/3c5x9setup create mode 100644 lfs/3cp4218 create mode 100644 lfs/CVS/Entries create mode 100644 lfs/CVS/Repository create mode 100644 lfs/CVS/Root create mode 100644 lfs/CVS/Tag create mode 100644 lfs/Compress-Zlib create mode 100644 lfs/Config create mode 100644 lfs/Digest create mode 100644 lfs/Digest-HMAC create mode 100644 lfs/Digest-SHA1 create mode 100644 lfs/GD create mode 100644 lfs/HTML-Parser create mode 100644 lfs/HTML-Tagset create mode 100644 lfs/Net-DNS create mode 100644 lfs/Net-IPv4Addr create mode 100644 lfs/Net_SSLeay create mode 100644 lfs/URI create mode 100644 lfs/aboot create mode 100644 lfs/amedyn create mode 100644 lfs/apache create mode 100644 lfs/arping create mode 100644 lfs/as86 create mode 100644 lfs/autoconf create mode 100644 lfs/automake create mode 100644 lfs/bash create mode 100644 lfs/beep create mode 100644 lfs/bind create mode 100644 lfs/binutils create mode 100644 lfs/bison create mode 100644 lfs/boot.img create mode 100644 lfs/busybox create mode 100644 lfs/bzip2 create mode 100644 lfs/capi4k-utils create mode 100644 lfs/ccache create mode 100644 lfs/cdrom create mode 100644 lfs/cdrtools create mode 100644 lfs/cnx_pci create mode 100644 lfs/configroot create mode 100644 lfs/coreutils create mode 100644 lfs/cxacru create mode 100644 lfs/dejagnu create mode 100644 lfs/dhcp create mode 100644 lfs/dhcpcd create mode 100644 lfs/diffutils create mode 100644 lfs/dnsmasq create mode 100644 lfs/dosfstools create mode 100644 lfs/driver.img create mode 100644 lfs/e2fsprogs create mode 100644 lfs/eagle create mode 100644 lfs/eciadsl create mode 100644 lfs/ed create mode 100644 lfs/ethtool create mode 100644 lfs/expat create mode 100644 lfs/expect create mode 100644 lfs/ez-ipupdate create mode 100644 lfs/fcdsl create mode 100644 lfs/fcdsl2 create mode 100644 lfs/fcdslsl create mode 100644 lfs/fcdslslusb create mode 100644 lfs/fcdslusb create mode 100644 lfs/fcron create mode 100644 lfs/file create mode 100644 lfs/findutils create mode 100644 lfs/flex create mode 100644 lfs/gawk create mode 100644 lfs/gcc create mode 100644 lfs/gdbm create mode 100644 lfs/gettext create mode 100644 lfs/glibc create mode 100644 lfs/gmp create mode 100644 lfs/gnupg create mode 100644 lfs/grep create mode 100644 lfs/groff create mode 100644 lfs/grub create mode 100644 lfs/gzip create mode 100644 lfs/hdparm create mode 100644 lfs/iana-etc create mode 100644 lfs/ibod create mode 100644 lfs/inetutils create mode 100644 lfs/initrd create mode 100644 lfs/initscripts create mode 100644 lfs/installer create mode 100644 lfs/ipac-ng create mode 100644 lfs/ipaddr create mode 100644 lfs/iproute2 create mode 100644 lfs/iptables create mode 100644 lfs/iptables_orig create mode 100644 lfs/iptstate create mode 100644 lfs/iputils create mode 100644 lfs/isapnptools create mode 100644 lfs/isdn4k-utils create mode 100644 lfs/kbd create mode 100644 lfs/kudzu create mode 100644 lfs/less create mode 100644 lfs/libcap create mode 100644 lfs/libnet create mode 100644 lfs/libpcap create mode 100644 lfs/libpng create mode 100644 lfs/libsafe create mode 100644 lfs/libtool create mode 100644 lfs/libusb create mode 100644 lfs/libwww-perl create mode 100644 lfs/linux create mode 100644 lfs/linux-atm create mode 100644 lfs/linux_orig create mode 100644 lfs/logrotate create mode 100644 lfs/logwatch create mode 100644 lfs/lpd create mode 100644 lfs/m4 create mode 100644 lfs/make create mode 100644 lfs/makedev create mode 100644 lfs/man create mode 100644 lfs/man-pages create mode 100644 lfs/mbr create mode 100644 lfs/mingetty create mode 100644 lfs/misc-progs create mode 100644 lfs/mktemp create mode 100644 lfs/modutils create mode 100644 lfs/mtools create mode 100644 lfs/nano create mode 100644 lfs/nash create mode 100644 lfs/nasm create mode 100644 lfs/ncurses create mode 100644 lfs/ndiswrapper create mode 100644 lfs/net-tools create mode 100644 lfs/newt create mode 100644 lfs/noip_updater create mode 100644 lfs/ntp create mode 100644 lfs/oinkmaster create mode 100644 lfs/openssh create mode 100644 lfs/openssl create mode 100644 lfs/openswan create mode 100644 lfs/pam create mode 100644 lfs/patch create mode 100644 lfs/pciutils create mode 100644 lfs/pcmcia-cs create mode 100644 lfs/pcre create mode 100644 lfs/perl create mode 100644 lfs/popt create mode 100644 lfs/ppp create mode 100644 lfs/pptpclient create mode 100644 lfs/procinfo create mode 100644 lfs/procps create mode 100644 lfs/psmisc create mode 100644 lfs/pulsar create mode 100644 lfs/python create mode 100644 lfs/rp-pppoe create mode 100644 lfs/rrdtool create mode 100644 lfs/scsi.img create mode 100644 lfs/sed create mode 100644 lfs/setserial create mode 100644 lfs/setup create mode 100644 lfs/shadow create mode 100644 lfs/slang create mode 100644 lfs/snort create mode 100644 lfs/speedtouch create mode 100644 lfs/speedycgi create mode 100644 lfs/squid create mode 100644 lfs/squid-graph create mode 100644 lfs/stage2 create mode 100644 lfs/stund create mode 100644 lfs/sysklogd create mode 100644 lfs/syslinux create mode 100644 lfs/sysvinit create mode 100644 lfs/tar create mode 100644 lfs/tcl create mode 100644 lfs/tcpdump create mode 100644 lfs/texinfo create mode 100644 lfs/traceroute create mode 100644 lfs/uClibc create mode 100644 lfs/unicorn create mode 100644 lfs/unzip create mode 100644 lfs/util-linux create mode 100644 lfs/vim create mode 100644 lfs/vlan create mode 100644 lfs/wireless create mode 100644 lfs/xampp create mode 100644 lfs/zlib create mode 100644 src/CVS/Entries create mode 100644 src/CVS/Repository create mode 100644 src/CVS/Root create mode 100644 src/CVS/Tag create mode 100644 src/ROOTFILES.alpha create mode 100644 src/ROOTFILES.i386 create mode 100644 src/ibod/CVS/Entries create mode 100644 src/ibod/CVS/Repository create mode 100644 src/ibod/CVS/Root create mode 100644 src/ibod/CVS/Tag create mode 100644 src/ibod/ibod.c create mode 100644 src/ibod/ibod.cf create mode 100644 src/ibod/ibod.h create mode 100644 src/install+setup/CVS/Entries create mode 100644 src/install+setup/CVS/Repository create mode 100644 src/install+setup/CVS/Root create mode 100644 src/install+setup/CVS/Tag create mode 100644 src/install+setup/install/CVS/Entries create mode 100644 src/install+setup/install/CVS/Repository create mode 100644 src/install+setup/install/CVS/Root create mode 100644 src/install+setup/install/CVS/Tag create mode 100644 src/install+setup/install/Makefile create mode 100644 src/install+setup/install/cdrom.c create mode 100644 src/install+setup/install/config.c create mode 100644 src/install+setup/install/grubbatch create mode 100644 src/install+setup/install/ide.c create mode 100644 src/install+setup/install/install.h create mode 100644 src/install+setup/install/install2.c create mode 100644 src/install+setup/install/main.c create mode 100644 src/install+setup/install/net.c create mode 100644 src/install+setup/install/nic.c create mode 100644 src/install+setup/install/pcmcia.c create mode 100644 src/install+setup/install/pcmcia.h create mode 100644 src/install+setup/install/probescsi.sh create mode 100644 src/install+setup/install/scsi.c create mode 100644 src/install+setup/install/upgrade-v12-v13.c create mode 100644 src/install+setup/install/upgrade-v130-v140.c create mode 100644 src/install+setup/install/usb.c create mode 100644 src/install+setup/libsmooth/CVS/Entries create mode 100644 src/install+setup/libsmooth/CVS/Repository create mode 100644 src/install+setup/libsmooth/CVS/Root create mode 100644 src/install+setup/libsmooth/CVS/Tag create mode 100644 src/install+setup/libsmooth/Makefile create mode 100644 src/install+setup/libsmooth/langs.h.temp create mode 100644 src/install+setup/libsmooth/libsmooth.h create mode 100644 src/install+setup/libsmooth/main.c create mode 100644 src/install+setup/libsmooth/makelangs.pl create mode 100644 src/install+setup/libsmooth/netstuff.c create mode 100644 src/install+setup/libsmooth/varval.c create mode 100644 src/install+setup/setup/CVS/Entries create mode 100644 src/install+setup/setup/CVS/Repository create mode 100644 src/install+setup/setup/CVS/Root create mode 100644 src/install+setup/setup/CVS/Tag create mode 100644 src/install+setup/setup/Makefile create mode 100644 src/install+setup/setup/dhcp.c create mode 100644 src/install+setup/setup/domainname.c create mode 100644 src/install+setup/setup/hostname.c create mode 100644 src/install+setup/setup/isdn.c create mode 100644 src/install+setup/setup/keymap.c create mode 100644 src/install+setup/setup/main.c create mode 100644 src/install+setup/setup/misc.c create mode 100644 src/install+setup/setup/networking.c create mode 100644 src/install+setup/setup/passwords.c create mode 100644 src/install+setup/setup/setup.h create mode 100644 src/install+setup/setup/timezone.c create mode 100644 src/misc-progs/CVS/Entries create mode 100644 src/misc-progs/CVS/Repository create mode 100644 src/misc-progs/CVS/Root create mode 100644 src/misc-progs/CVS/Tag create mode 100644 src/misc-progs/Makefile create mode 100644 src/misc-progs/installfcdsl.c create mode 100644 src/misc-progs/installpackage.c create mode 100644 src/misc-progs/iowrap.c create mode 100644 src/misc-progs/ipcopbackup.c create mode 100644 src/misc-progs/ipcopbkcfg.c create mode 100644 src/misc-progs/ipcopdeath.c create mode 100644 src/misc-progs/ipcoprebirth.c create mode 100644 src/misc-progs/ipcopreboot.c create mode 100644 src/misc-progs/ipcoprscfg.c create mode 100644 src/misc-progs/ipsecctrl.c create mode 100644 src/misc-progs/logwatch.c create mode 100644 src/misc-progs/rebuildhosts.c create mode 100644 src/misc-progs/restartdhcp.c create mode 100644 src/misc-progs/restartntpd.c create mode 100644 src/misc-progs/restartshaping.c create mode 100644 src/misc-progs/restartsnort.c create mode 100644 src/misc-progs/restartsquid.c create mode 100644 src/misc-progs/restartssh.c create mode 100644 src/misc-progs/restartsyslogd.c create mode 100644 src/misc-progs/restartwireless.c create mode 100644 src/misc-progs/setaliases.c create mode 100644 src/misc-progs/setdate.c create mode 100644 src/misc-progs/setdmzholes.c create mode 100644 src/misc-progs/setfilters.c create mode 100644 src/misc-progs/setportfw.c create mode 100644 src/misc-progs/setuid.c create mode 100644 src/misc-progs/setuid.h create mode 100644 src/misc-progs/setxtaccess.c create mode 100644 src/nash/CVS/Entries create mode 100644 src/nash/CVS/Repository create mode 100644 src/nash/CVS/Root create mode 100644 src/nash/CVS/Tag create mode 100644 src/nash/Makefile create mode 100644 src/nash/linux_fs.h create mode 100644 src/nash/mkinitrd create mode 100644 src/nash/mount_by_label.c create mode 100644 src/nash/mount_by_label.h create mode 100644 src/nash/nash.8 create mode 100644 src/nash/nash.c create mode 100644 src/nash/sample-rc create mode 100644 src/patches/CVS/Entries create mode 100644 src/patches/CVS/Repository create mode 100644 src/patches/CVS/Root create mode 100644 src/patches/CVS/Tag create mode 100644 src/patches/CnxADSL-cln-irqreturn.patch create mode 100644 src/patches/busybox-0.60.5-config.patch create mode 100644 src/patches/busybox-0.60.5-gzip.patch create mode 100644 src/patches/busybox-0.60.5-insmod_gpl_symbols.patch create mode 100644 src/patches/busybox-0.60.5-spider.patch create mode 100644 src/patches/busybox-0.60.5-wget-unlink.patch create mode 100644 src/patches/bzip2-1.0.2-chmod.patch create mode 100644 src/patches/capi4k-utils-2004-10-06_ppp-2.4.3.patch create mode 100644 src/patches/ccache-2.3.patch create mode 100644 src/patches/cnx_pci_yukon.patch create mode 100644 src/patches/dhcpcd-1.3.22-pl4_corrupt-packet.patch create mode 100644 src/patches/e2fsprogs-1.35-install.patch create mode 100644 src/patches/ez-ipupdate.formstring.patch create mode 100644 src/patches/fcdsl-singlelock.patch create mode 100644 src/patches/fcdslsl-singlelock.patch create mode 100644 src/patches/fcdslslusb-singlelock.patch create mode 100644 src/patches/fcdslx-irqreturn.patch create mode 100644 src/patches/gcc-2.95.3-alpha.patch create mode 100644 src/patches/glibc-2.3.3-ssp_frandom-2.patch create mode 100644 src/patches/grub-0.90-append.patch create mode 100644 src/patches/grub-0.90-symlinkmenulst.patch create mode 100644 src/patches/grub-0.91-bootonce.patch create mode 100644 src/patches/grub-0.91-splashimagehelp.patch create mode 100644 src/patches/grub-0.93-configfile.patch create mode 100644 src/patches/grub-0.93-endedit.patch create mode 100644 src/patches/grub-0.93-graphics-bootterm.patch create mode 100644 src/patches/grub-0.93-graphics.patch create mode 100644 src/patches/grub-0.93-rtl8139.patch create mode 100644 src/patches/grub-0.93-special-device-names.patch create mode 100644 src/patches/grub-0.94-i2o.patch create mode 100644 src/patches/gzip-1.3.3-window-size.patch create mode 100644 src/patches/gzip-1.3.5-asm-execstack.patch create mode 100644 src/patches/gzip-1.3.5-gunzip-dir.patch create mode 100644 src/patches/gzip-1.3.5-perm.patch create mode 100644 src/patches/inetutils-1.4.2-ping-1.patch create mode 100644 src/patches/iproute2-2.4.7-netlink.patch create mode 100644 src/patches/iproute2-includes.patch create mode 100644 src/patches/iptables-1.2.11.patch create mode 100644 src/patches/isdn4k-utils-v3.2p1-c89.patch create mode 100644 src/patches/isdn4k-utils-v3.2p1-config.patch create mode 100644 src/patches/kernel-2.4-layer7-2.1.patch create mode 100644 src/patches/kudzu-0.99.50-pam.patch create mode 100644 src/patches/kudzu-0.99.50-updfstab.conf.patch create mode 100644 src/patches/libcap-1.10-shared.patch create mode 100644 src/patches/libcap-1.10-syscall.patch create mode 100644 src/patches/libpcap-0.8.3-ppp.patch create mode 100644 src/patches/libpcap-0.8.3-shared.patch create mode 100644 src/patches/libpng-1.2.8-link_to_proper_libs-1.patch create mode 100644 src/patches/libsafe-alpha.diff create mode 100644 src/patches/libsafe-functioncaching.diff create mode 100644 src/patches/linux-2.4.23-olitec-isdn.patch create mode 100644 src/patches/linux-2.4.26-proc-stat.patch create mode 100644 src/patches/linux-2.4.26-scsi.patch create mode 100644 src/patches/linux-2.4.27-frandom-2.patch create mode 100644 src/patches/linux-2.4.27-ssp-1.patch create mode 100644 src/patches/linux-2.4.28-imq2.diff create mode 100644 src/patches/linux-2.4.29_r8169clone.patch create mode 100644 src/patches/make_devices.patch create mode 100644 src/patches/net-tools-1.60-cleanup-list-handling.patch create mode 100644 src/patches/net-tools-1.60-get_name.patch create mode 100644 src/patches/newt-0.50.17-colors.patch create mode 100644 src/patches/newt-0.50.17-vaend.patch create mode 100644 src/patches/ntp-4.2.0-linuxcaps.patch create mode 100644 src/patches/openswan-1.0.1-plutoctl.patch create mode 100644 src/patches/openswan-1.0.6-numif.patch create mode 100644 src/patches/openswan-1.0.9-restart.patch create mode 100644 src/patches/pam-0.99.3.0-hostname.patch create mode 100644 src/patches/patch-o-matic-ng-20040621_03_2.4.29.patch create mode 100644 src/patches/patch-o-matic-ng-20040621_pptp_2.4.29.patch create mode 100644 src/patches/patch-o-matic-ng-raw_2.4.31.patch create mode 100644 src/patches/pcre-4.5-CAN-2005-2491.patch create mode 100644 src/patches/perl-5.8.5-perlio_debug_security.patch create mode 100644 src/patches/perl-5.8.5-tempfiles.patch create mode 100644 src/patches/perl.patch create mode 100644 src/patches/pomng.fix create mode 100644 src/patches/ppp-2.4.1-oedod.patch create mode 100644 src/patches/ppp-2.4.2-close.patch create mode 100644 src/patches/ppp-2.4.2-pppoatm-modprobe.patch create mode 100644 src/patches/ppp-2.4.2-pppoatm-persist.patch create mode 100644 src/patches/ppp-2.4.2-pppoatm.patch create mode 100644 src/patches/ppp-2.4.2-printstats.patch create mode 100644 src/patches/ppp-2.4.2-signal.patch create mode 100644 src/patches/ppp_generic-ppp-2.4.3_multilink.patch create mode 100644 src/patches/proc_net_conntrack-permissions.patch create mode 100644 src/patches/speedtouch-1.2-isdn.patch create mode 100644 src/patches/sysklogd-1.3-31-rh-ksyslog-nul.diff create mode 100644 src/patches/sysklogd-1.4.1-caen-owl-klogd-drop-root.diff create mode 100644 src/patches/sysklogd-1.4.1-caen-owl-syslogd-bind.diff create mode 100644 src/patches/sysklogd-1.4.1-caen-owl-syslogd-drop-root.diff create mode 100644 src/patches/sysklogd-1.4.1-owl-syslogd-crunch_list.diff create mode 100644 src/patches/tcpdump-3.8.2-bgp-dos-2.patch create mode 100644 src/patches/tcpdump-3.8.2-bgp-dos.patch create mode 100644 src/patches/tcpdump-3.8.2-isis-dos.patch create mode 100644 src/patches/tcpdump-3.8.2-ldp-dos.patch create mode 100644 src/patches/tcpdump-3.8.2-rsvp-dos.patch create mode 100644 src/patches/util-linux-2.12a-umount_CAN-2005-2876.patch create mode 100644 src/patches/viscii10-8x16-new.psfu create mode 100644 src/pcmcia/CVS/Entries create mode 100644 src/pcmcia/CVS/Repository create mode 100644 src/pcmcia/CVS/Root create mode 100644 src/pcmcia/CVS/Tag create mode 100644 src/pcmcia/isdnextra.conf create mode 100644 src/pcmcia/netextra.conf create mode 100644 src/ppp/CVS/Entries create mode 100644 src/ppp/CVS/Repository create mode 100644 src/ppp/CVS/Root create mode 100644 src/ppp/CVS/Tag create mode 100644 src/ppp/demonloginscript create mode 100644 src/ppp/dialer create mode 100644 src/ppp/ioptions create mode 100644 src/ppp/ip-down create mode 100644 src/ppp/ip-up create mode 100644 src/ppp/options create mode 100644 src/ppp/standardloginscript create mode 100644 src/rc.d/CVS/Entries create mode 100644 src/rc.d/CVS/Repository create mode 100644 src/rc.d/CVS/Root create mode 100644 src/rc.d/CVS/Tag create mode 100644 src/rc.d/helper/CVS/Entries create mode 100644 src/rc.d/helper/CVS/Repository create mode 100644 src/rc.d/helper/CVS/Root create mode 100644 src/rc.d/helper/CVS/Tag create mode 100644 src/rc.d/helper/getdnsfromdhcpc.pl create mode 100644 src/rc.d/helper/writeipac.pl create mode 100644 src/rc.d/rc.3cp4218usbadsl create mode 100644 src/rc.d/rc.alcatelusb create mode 100644 src/rc.d/rc.alcatelusbk create mode 100644 src/rc.d/rc.amedynusbadsl create mode 100644 src/rc.d/rc.bewanadsl create mode 100644 src/rc.d/rc.conexantpciadsl create mode 100644 src/rc.d/rc.conexantusbadsl create mode 100644 src/rc.d/rc.connectioncheck create mode 100644 src/rc.d/rc.eagleusbadsl create mode 100644 src/rc.d/rc.eciadsl create mode 100644 src/rc.d/rc.firewall create mode 100644 src/rc.d/rc.firewall.local create mode 100644 src/rc.d/rc.flash.down create mode 100644 src/rc.d/rc.flash.up create mode 100644 src/rc.d/rc.fritzdsl create mode 100644 src/rc.d/rc.halt create mode 100644 src/rc.d/rc.isdn create mode 100644 src/rc.d/rc.local create mode 100644 src/rc.d/rc.netaddress.down create mode 100644 src/rc.d/rc.netaddress.up create mode 100644 src/rc.d/rc.network create mode 100644 src/rc.d/rc.pulsardsl create mode 100644 src/rc.d/rc.red create mode 100644 src/rc.d/rc.sysinit create mode 100644 src/rc.d/rc.updatered create mode 100644 src/scripts/CVS/Entries create mode 100644 src/scripts/CVS/Repository create mode 100644 src/scripts/CVS/Root create mode 100644 src/scripts/CVS/Tag create mode 100644 src/scripts/httpscert create mode 100644 src/scripts/makegraphs create mode 100644 src/scripts/readhash create mode 100644 src/scripts/resetusb create mode 100644 src/scripts/setddns.pl create mode 100644 src/scripts/setreservedports create mode 100644 src/scripts/settime create mode 100644 src/scripts/timecheck create mode 100644 src/scripts/tunerrd.pl create mode 100644 src/scripts/updatelists.pl create mode 100644 src/scripts/updatesetup create mode 100644 src/uClibc/CVS/Entries create mode 100644 src/uClibc/CVS/Repository create mode 100644 src/uClibc/CVS/Root create mode 100644 src/uClibc/CVS/Tag create mode 100644 src/uClibc/Makefile create mode 100644 src/uClibc/make/CVS/Entries create mode 100644 src/uClibc/make/CVS/Repository create mode 100644 src/uClibc/make/CVS/Root create mode 100644 src/uClibc/make/CVS/Tag create mode 100644 src/uClibc/make/binutils.mk create mode 100644 src/uClibc/make/gcc-3.3.mk create mode 100644 src/uClibc/make/uclibc.mk create mode 100644 src/uClibc/sources/CVS/Entries create mode 100644 src/uClibc/sources/CVS/Repository create mode 100644 src/uClibc/sources/CVS/Root create mode 100644 src/uClibc/sources/CVS/Tag create mode 100644 src/uClibc/sources/binutils-001-debian.patch create mode 100644 src/uClibc/sources/binutils-002-uclibc.patch create mode 100644 src/uClibc/sources/codesets.txt create mode 100644 src/uClibc/sources/gcc-001-disable-mathf.patch create mode 100644 src/uClibc/sources/gcc-006-include-search.patch create mode 100644 src/uClibc/sources/gcc-810-libstd++-locale.patch create mode 100644 src/uClibc/sources/gcc-830-nonhidden.patch create mode 100644 src/uClibc/sources/gcc-840-abi_check.patch create mode 100644 src/uClibc/sources/i386-gcc-soft-float.patch create mode 100644 src/uClibc/sources/locales.txt create mode 100644 src/uClibc/sources/patch-kernel.sh create mode 100644 src/uClibc/sources/uClibc.config create mode 100644 tools/CVS/Entries create mode 100644 tools/CVS/Repository create mode 100644 tools/CVS/Root create mode 100644 tools/CVS/Tag create mode 100644 tools/check_langs.sh create mode 100644 tools/check_strings.pl create mode 100644 tools/cvs2cl.pl create mode 100644 tools/cvs2sql.pl create mode 100644 tools/fetchlangs.pl create mode 100644 tools/mkflash/CVS/Entries create mode 100644 tools/mkflash/CVS/Repository create mode 100644 tools/mkflash/CVS/Root create mode 100644 tools/mkflash/CVS/Tag create mode 100644 tools/mkflash/logrotate.conf create mode 100644 tools/mkflash/mkflash create mode 100644 tools/mkflash/settings.8139 create mode 100644 tools/perfTest.sh create mode 100644 updates/1.4.1/.cvsignore create mode 100644 updates/1.4.1/CVS/Entries create mode 100644 updates/1.4.1/CVS/Repository create mode 100644 updates/1.4.1/CVS/Root create mode 100644 updates/1.4.1/CVS/Tag create mode 100644 updates/1.4.1/ROOTFILES.alpha-1.4.1 create mode 100644 updates/1.4.1/ROOTFILES.i386-1.4.1 create mode 100644 updates/1.4.1/information create mode 100644 updates/1.4.1/setup create mode 100644 updates/1.4.10/.cvsignore create mode 100644 updates/1.4.10/CVS/Entries create mode 100644 updates/1.4.10/CVS/Repository create mode 100644 updates/1.4.10/CVS/Root create mode 100644 updates/1.4.10/CVS/Tag create mode 100644 updates/1.4.10/ROOTFILES.alpha-1.4.10 create mode 100644 updates/1.4.10/ROOTFILES.i386-1.4.10 create mode 100644 updates/1.4.10/fixbackups.sh create mode 100644 updates/1.4.10/information create mode 100644 updates/1.4.10/setup create mode 100644 updates/1.4.11/.cvsignore create mode 100644 updates/1.4.11/CVS/Entries create mode 100644 updates/1.4.11/CVS/Repository create mode 100644 updates/1.4.11/CVS/Root create mode 100644 updates/1.4.11/CVS/Tag create mode 100644 updates/1.4.11/ROOTFILES.alpha-1.4.11 create mode 100644 updates/1.4.11/ROOTFILES.i386-1.4.11 create mode 100644 updates/1.4.11/information create mode 100644 updates/1.4.11/patch.tar.gz create mode 100644 updates/1.4.11/setup create mode 100644 updates/1.4.2/.cvsignore create mode 100644 updates/1.4.2/CVS/Entries create mode 100644 updates/1.4.2/CVS/Repository create mode 100644 updates/1.4.2/CVS/Root create mode 100644 updates/1.4.2/CVS/Tag create mode 100644 updates/1.4.2/ROOTFILES.alpha-1.4.2 create mode 100644 updates/1.4.2/ROOTFILES.i386-1.4.2 create mode 100644 updates/1.4.2/information create mode 100644 updates/1.4.2/setup create mode 100644 updates/1.4.3/.cvsignore create mode 100644 updates/1.4.3/CVS/Entries create mode 100644 updates/1.4.3/CVS/Repository create mode 100644 updates/1.4.3/CVS/Root create mode 100644 updates/1.4.3/CVS/Tag create mode 100644 updates/1.4.3/ROOTFILES.alpha-1.4.3 create mode 100644 updates/1.4.3/ROOTFILES.i386-1.4.3 create mode 100644 updates/1.4.3/information create mode 100644 updates/1.4.3/setup create mode 100644 updates/1.4.4/.cvsignore create mode 100644 updates/1.4.4/CVS/Entries create mode 100644 updates/1.4.4/CVS/Repository create mode 100644 updates/1.4.4/CVS/Root create mode 100644 updates/1.4.4/CVS/Tag create mode 100644 updates/1.4.4/ROOTFILES.alpha-1.4.4 create mode 100644 updates/1.4.4/ROOTFILES.i386-1.4.4 create mode 100644 updates/1.4.4/information create mode 100644 updates/1.4.4/setup create mode 100644 updates/1.4.5/.cvsignore create mode 100644 updates/1.4.5/CVS/Entries create mode 100644 updates/1.4.5/CVS/Repository create mode 100644 updates/1.4.5/CVS/Root create mode 100644 updates/1.4.5/CVS/Tag create mode 100644 updates/1.4.5/ROOTFILES.alpha-1.4.5 create mode 100644 updates/1.4.5/ROOTFILES.i386-1.4.5 create mode 100644 updates/1.4.5/information create mode 100644 updates/1.4.5/setup create mode 100644 updates/1.4.6/.cvsignore create mode 100644 updates/1.4.6/CVS/Entries create mode 100644 updates/1.4.6/CVS/Repository create mode 100644 updates/1.4.6/CVS/Root create mode 100644 updates/1.4.6/CVS/Tag create mode 100644 updates/1.4.6/ROOTFILES.alpha-1.4.6 create mode 100644 updates/1.4.6/ROOTFILES.i386-1.4.6 create mode 100644 updates/1.4.6/information create mode 100644 updates/1.4.6/setup create mode 100644 updates/1.4.7/.cvsignore create mode 100644 updates/1.4.7/CVS/Entries create mode 100644 updates/1.4.7/CVS/Repository create mode 100644 updates/1.4.7/CVS/Root create mode 100644 updates/1.4.7/CVS/Tag create mode 100644 updates/1.4.7/ROOTFILES.alpha-1.4.7 create mode 100644 updates/1.4.7/ROOTFILES.i386-1.4.7 create mode 100644 updates/1.4.7/information create mode 100644 updates/1.4.7/setup create mode 100644 updates/1.4.8/.cvsignore create mode 100644 updates/1.4.8/CVS/Entries create mode 100644 updates/1.4.8/CVS/Repository create mode 100644 updates/1.4.8/CVS/Root create mode 100644 updates/1.4.8/CVS/Tag create mode 100644 updates/1.4.8/ROOTFILES.alpha-1.4.8 create mode 100644 updates/1.4.8/ROOTFILES.i386-1.4.8 create mode 100644 updates/1.4.8/information create mode 100644 updates/1.4.8/setup create mode 100644 updates/1.4.9/.cvsignore create mode 100644 updates/1.4.9/CVS/Entries create mode 100644 updates/1.4.9/CVS/Repository create mode 100644 updates/1.4.9/CVS/Root create mode 100644 updates/1.4.9/CVS/Tag create mode 100644 updates/1.4.9/ROOTFILES.alpha-1.4.9 create mode 100644 updates/1.4.9/ROOTFILES.i386-1.4.9 create mode 100644 updates/1.4.9/header.pl.patch create mode 100644 updates/1.4.9/information create mode 100644 updates/1.4.9/setup create mode 100644 updates/CVS/Entries create mode 100644 updates/CVS/Repository create mode 100644 updates/CVS/Root create mode 100644 updates/CVS/Tag diff --git a/.cvsignore b/.cvsignore new file mode 100644 index 0000000000..60e864fd24 --- /dev/null +++ b/.cvsignore @@ -0,0 +1,8 @@ +build +cache +ccache +log +*.img +*.iso +*.tgz +*.gpg diff --git a/config/CVS/Entries b/config/CVS/Entries new file mode 100644 index 0000000000..5499ccc276 --- /dev/null +++ b/config/CVS/Entries @@ -0,0 +1,12 @@ +D/aboot//// +D/cdrom//// +D/cfgroot//// +D/cron//// +D/etc//// +D/grub//// +D/httpd//// +D/install//// +D/ipac-ng//// +D/kernel//// +D/snort//// +D/ssl//// diff --git a/config/CVS/Repository b/config/CVS/Repository new file mode 100644 index 0000000000..c239249d12 --- /dev/null +++ b/config/CVS/Repository @@ -0,0 +1 @@ +ipcop/config diff --git a/config/CVS/Root b/config/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/CVS/Tag b/config/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/aboot/CVS/Entries b/config/aboot/CVS/Entries new file mode 100644 index 0000000000..fda279172c --- /dev/null +++ b/config/aboot/CVS/Entries @@ -0,0 +1,3 @@ +/aboot.conf/1.1/Sun Feb 8 21:29:00 2004//TIPCOP_v1_4_0 +/scsiaboot.conf/1.1/Sun Feb 8 21:29:00 2004//TIPCOP_v1_4_0 +D diff --git a/config/aboot/CVS/Repository b/config/aboot/CVS/Repository new file mode 100644 index 0000000000..72543138c4 --- /dev/null +++ b/config/aboot/CVS/Repository @@ -0,0 +1 @@ +ipcop/config/aboot diff --git a/config/aboot/CVS/Root b/config/aboot/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/aboot/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/aboot/CVS/Tag b/config/aboot/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/aboot/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/aboot/aboot.conf b/config/aboot/aboot.conf new file mode 100644 index 0000000000..f5697a867a --- /dev/null +++ b/config/aboot/aboot.conf @@ -0,0 +1 @@ +0:1/vmlinuz root=ROOT panic=10 ro diff --git a/config/aboot/scsiaboot.conf b/config/aboot/scsiaboot.conf new file mode 100644 index 0000000000..b3f0fb3cd3 --- /dev/null +++ b/config/aboot/scsiaboot.conf @@ -0,0 +1 @@ +0:1/vmlinuz root=ROOT panic=10 initrd=ipcoprd.img init=/linuxrc rw diff --git a/config/cdrom/CVS/Entries b/config/cdrom/CVS/Entries new file mode 100644 index 0000000000..33acf6fb74 --- /dev/null +++ b/config/cdrom/CVS/Entries @@ -0,0 +1,2 @@ +/README.txt/1.3/Thu Jan 8 20:02:38 2004//TIPCOP_v1_4_0 +D diff --git a/config/cdrom/CVS/Repository b/config/cdrom/CVS/Repository new file mode 100644 index 0000000000..ac64887f23 --- /dev/null +++ b/config/cdrom/CVS/Repository @@ -0,0 +1 @@ +ipcop/config/cdrom diff --git a/config/cdrom/CVS/Root b/config/cdrom/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/cdrom/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/cdrom/CVS/Tag b/config/cdrom/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/cdrom/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/cdrom/README.txt b/config/cdrom/README.txt new file mode 100644 index 0000000000..a6056eca50 --- /dev/null +++ b/config/cdrom/README.txt @@ -0,0 +1,42 @@ +IPCop - The Bad Packets Stop Here (VERSION) +------------------------------------------ + +Installation +------------ + +Please read the IPCop Installation PDF before installing the firewall. +This document is located in the \doc directory on the cdrom. It will +guide you through the installation process and will help you make the +necessary decisions during the installation process. + + +DOS Image utility tools +----------------------- + +The dosutils directory contains the following DOS and Windows applications, +please use with caution and please can we draw your attention to the +documentation on the IPCop CD or install image on your network drive. +We also draw your attention to the disclaimer of Warranty below. + +rawrite.exe - rawrite executable +rawwritewin.exe - rawwrite for Windows +diskio.dll - this MUST be in the same directory as rawrite for Windows +copying.txt - text file + + +License +------- + +Please read the file COPYING for more information on the license. + + +Disclaimer of Warranty +---------------------- + +Users of this software must accept this disclaimer of warranty: "This +software is supplied AS IS. IPCop disclaims all warranties, expressed +or implied, including, without limitation, the warranties of merchantability +and of fitness for any purpose. IPCop assumes no liability for +damages, direct or consequential, which may result from the use of this +software." + diff --git a/config/cfgroot/CVS/Entries b/config/cfgroot/CVS/Entries new file mode 100644 index 0000000000..5c502a8a6b --- /dev/null +++ b/config/cfgroot/CVS/Entries @@ -0,0 +1,21 @@ +/advoptions-list/1.1.2.3/Sat May 7 13:01:32 2005//TIPCOP_v1_4_0 +/backup-exclude/1.3.2.6/Tue Nov 1 19:20:52 2005//TIPCOP_v1_4_0 +/backup-exclude.hardware/1.2/Thu Dec 11 11:15:33 2003//TIPCOP_v1_4_0 +/backup-include/1.4.2.1/Sun Apr 25 06:57:03 2004//TIPCOP_v1_4_0 +/countries.pl/1.2.2.1/Wed Jan 26 12:23:19 2005//TIPCOP_v1_4_0 +/defaultservices/1.2/Thu Dec 11 11:15:33 2003//TIPCOP_v1_4_0 +/general-functions.pl/1.1.2.26/Wed Jan 4 16:33:55 2006//TIPCOP_v1_4_0 +/header-menu.pl/1.1.2.2/Sat Nov 19 16:48:45 2005//TIPCOP_v1_4_0 +/header.pl/1.34.2.67/Mon Oct 3 20:01:05 2005//TIPCOP_v1_4_0 +/icmptypes/1.2/Thu Dec 11 11:15:33 2003//TIPCOP_v1_4_0 +/ipcop.gpg/1.2/Thu Dec 11 11:15:33 2003//TIPCOP_v1_4_0 +/lang.pl/1.1.2.11/Sat Sep 10 16:22:50 2005//TIPCOP_v1_4_0 +/logging-settings/1.2/Thu Dec 11 11:15:33 2003//TIPCOP_v1_4_0 +/modem-defaults/1.1.1.1.8.1/Sun Jan 2 10:01:00 2005//TIPCOP_v1_4_0 +/modem-settings/1.1.1.1.8.1/Sun Jan 2 10:01:01 2005//TIPCOP_v1_4_0 +/oinkmaster.conf/1.1.2.2/Mon May 2 17:11:58 2005//TIPCOP_v1_4_0 +/protocols.pl/1.2.2.1/Wed Jan 26 12:23:20 2005//TIPCOP_v1_4_0 +/proxy-acl/1.2.2.4/Thu Dec 1 20:19:12 2005//TIPCOP_v1_4_0 +/time-settings/1.2/Thu Dec 11 11:15:33 2003//TIPCOP_v1_4_0 +/xtaccess-config/1.2/Thu Dec 11 10:57:32 2003//TIPCOP_v1_4_0 +D diff --git a/config/cfgroot/CVS/Repository b/config/cfgroot/CVS/Repository new file mode 100644 index 0000000000..3b2e70c8e3 --- /dev/null +++ b/config/cfgroot/CVS/Repository @@ -0,0 +1 @@ +ipcop/config/cfgroot diff --git a/config/cfgroot/CVS/Root b/config/cfgroot/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/cfgroot/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/cfgroot/CVS/Tag b/config/cfgroot/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/cfgroot/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/cfgroot/advoptions-list b/config/cfgroot/advoptions-list new file mode 100644 index 0000000000..8a1e75ebb1 --- /dev/null +++ b/config/cfgroot/advoptions-list @@ -0,0 +1,56 @@ +option all-subnets-local flag; +option arp-cache-timeout uint32; +option bootfile-name string; +option boot-size uint16; +option broadcast-address ip-address; +option cookie-servers ip-address [, ip-address... ]; +option default-ip-ttl uint8; +option default-tcp-ttl uint8; +option dhcp-client-identifier data-string; +option finger-server ip-address [, ip-address... ]; +option font-servers ip-address [, ip-address... ]; +option host-name string; +option ieee802-3-encapsulation flag; +option ien116-name-servers ip-address [, ip-address... ]; +option impress-servers ip-address [, ip-address... ]; +option interface-mtu uint16; +option ip-forwarding flag; +option irc-server ip-address [, ip-address... ]; +option log-servers ip-address [, ip-address... ]; +option lpr-servers ip-address [, ip-address... ]; +option mask-supplier flag; +option max-dgram-reassembly uint16; +option merit-dump string; +option mobile-ip-home-agent ip-address [, ip-address... ]; +option netbios-dd-server ip-address [, ip-address... ]; +option netbios-node-type uint8; +option netbios-scope string; +option nis-domain string; +option nisplus-domain string; +option nisplus-servers ip-address [, ip-address... ]; +option nis-servers ip-address [, ip-address... ]; +option nntp-server ip-address [, ip-address... ]; +option non-local-source-routing flag; +option ntp-servers ip-address [, ip-address... ]; +option path-mtu-aging-timeout uint32; +option path-mtu-plateau-table uint16 [, uint16... ]; +option perform-mask-discovery flag; +option policy-filter ip-address ip-address [, ip-address ip-address... ]; +option pop-server ip-address [, ip-address... ]; +option resource-location-servers ip-address [, ip-address... ]; +option root-path string; +option router-discovery flag; +option router-solicitation-address ip-address; +option smtp-server ip-address [, ip-address... ]; +option static-routes ip-address ip-address [, ip-address ip-address... ]; +option streettalk-directory-assistance-server ip-address [, ip-address... ]; +option streettalk-server ip-address [, ip-address... ]; +option swap-server ip-address; +option tcp-keepalive-garbage flag; +option tcp-keepalive-interval uint32; +option tftp-server-name string; +option time-offset int32; +option time-servers ip-address [, ip-address... ]; +option trailer-encapsulation flag; +option www-server ip-address [, ip-address... ]; +option x-display-manager ip-address [, ip-address... ]; diff --git a/config/cfgroot/backup-exclude b/config/cfgroot/backup-exclude new file mode 100644 index 0000000000..e528590799 --- /dev/null +++ b/config/cfgroot/backup-exclude @@ -0,0 +1,20 @@ +var/ipcop/backup/*.system +var/ipcop/backup/backup.key +var/ipcop/backup/sets +var/ipcop/countries.pl +var/ipcop/dhcpc +var/ipcop/eciadsl/modems.db +var/ipcop/eciadsl/firmware00.bin +var/ipcop/header.pl +var/ipcop/general-functions.pl +var/ipcop/lang.pl +var/ipcop/key +var/ipcop/langs +var/ipcop/patches +var/ipcop/ppp/fake-resolv.conf +var/ipcop/red +var/ipcop/time/counter +var/ipcop/firewall/protocols.pl +var/ipcop/firewall/defaultservices +var/ipcop/firewall/icmptypes +var/ipcop/addon-lang diff --git a/config/cfgroot/backup-exclude.hardware b/config/cfgroot/backup-exclude.hardware new file mode 100644 index 0000000000..d6bcd153d8 --- /dev/null +++ b/config/cfgroot/backup-exclude.hardware @@ -0,0 +1 @@ +var/ipcop/ethernet/settings diff --git a/config/cfgroot/backup-include b/config/cfgroot/backup-include new file mode 100644 index 0000000000..c8d66bd7c7 --- /dev/null +++ b/config/cfgroot/backup-include @@ -0,0 +1,16 @@ +/etc/passwd +/etc/shadow +/etc/hosts +/etc/localtime +/etc/httpd/server.crt +/etc/httpd/server.csr +/etc/httpd/server.key +/etc/rc.d/rc.local +/etc/rc.d/rc.firewall.local +/etc/ssh/ssh_host_dsa_key +/etc/ssh/ssh_host_dsa_key.pub +/etc/ssh/ssh_host_key +/etc/ssh/ssh_host_key.pub +/etc/ssh/ssh_host_rsa_key +/etc/ssh/ssh_host_rsa_key.pub +/var/ipcop/ diff --git a/config/cfgroot/countries.pl b/config/cfgroot/countries.pl new file mode 100644 index 0000000000..6e364b4cf5 --- /dev/null +++ b/config/cfgroot/countries.pl @@ -0,0 +1,250 @@ +package Countries; + +%countries = ( +'Afghanistan' => 'AF', +'Albania' => 'AL', +'Algeria' => 'DZ', +'American Samoa' => 'AS', +'Andorra' => 'AD', +'Angola' => 'AO', +'Anguilla' => 'AI', +'Antarctica' => 'AQ', +'Antigua and Barbuda' => 'AG', +'Argentina' => 'AR', +'Armenia' => 'AM', +'Aruba' => 'AW', +'Australia' => 'AU', +'Austria' => 'AT', +'Azerbaijan' => 'AZ', +'Bahamas' => 'BS', +'Bahrain' => 'BH', +'Bangladesh' => 'BD', +'Barbados' => 'BB', +'Belarus' => 'BY', +'Belgium' => 'BE', +'Belize' => 'BZ', +'Benin' => 'BJ', +'Bermuda' => 'BM', +'Bhutan' => 'BT', +'Bolivia' => 'BO', +'Bosnia and Herzegovina' => 'BA', +'Botswana' => 'BW', +'Bouvet Island' => 'BV', +'Brazil' => 'BR', +'British Indian Ocean Territory' => 'IO', +'Brunei Darussalam' => 'BN', +'Bulgaria' => 'BG', +'Burkina Faso' => 'BF', +'Burundi' => 'BI', +'Cambodia' => 'KH', +'Cameroon' => 'CM', +'Canada' => 'CA', +'Cape Verde' => 'CV', +'Cayman Islands' => 'KY', +'Central African Republic' => 'CF', +'Chad' => 'TD', +'Chile' => 'CL', +'China' => 'CN', +'Christmas Island' => 'CX', +'Cocos (Keeling) Islands' => 'CC', +'Colombia' => 'CO', +'Comoros' => 'KM', +'Congo' => 'CG', +'Cook Islands' => 'CK', +'Costa Rica' => 'CR', +'Cote D\'Ivoire (Ivory Coast)' => 'CI', +'Croatia (Hrvatska)' => 'HR', +'Cuba' => 'CU', +'Cyprus' => 'CY', +'Czech Republic' => 'CZ', +'Czechoslovakia (former)' => 'CS', +'Denmark' => 'DK', +'Djibouti' => 'DJ', +'Dominica' => 'DM', +'Dominican Republic' => 'DO', +'East Timor' => 'TP', +'Ecuador' => 'EC', +'Egypt' => 'EG', +'El Salvador' => 'SV', +'Equatorial Guinea' => 'GQ', +'Eritrea' => 'ER', +'Estonia' => 'EE', +'Ethiopia' => 'ET', +'Falkland Islands (Malvinas)' => 'FK', +'Faroe Islands' => 'FO', +'Fiji' => 'FJ', +'Finland' => 'FI', +'France' => 'FR', +'France, Metropolitan' => 'FX', +'French Guiana' => 'GF', +'French Polynesia' => 'PF', +'French Southern Territories' => 'TF', +'Gabon' => 'GA', +'Gambia' => 'GM', +'Georgia' => 'GE', +'Germany' => 'DE', +'Ghana' => 'GH', +'Gibraltar' => 'GI', +'Great Britain (UK)' => 'GB', +'Greece' => 'GR', +'Greenland' => 'GL', +'Grenada' => 'GD', +'Guadeloupe' => 'GP', +'Guam' => 'GU', +'Guatemala' => 'GT', +'Guinea' => 'GN', +'Guinea-Bissau' => 'GW', +'Guyana' => 'GY', +'Haiti' => 'HT', +'Heard and McDonald Islands' => 'HM', +'Honduras' => 'HN', +'Hong Kong' => 'HK', +'Hungary' => 'HU', +'Iceland' => 'IS', +'India' => 'IN', +'Indonesia' => 'ID', +'Iran' => 'IR', +'Iraq' => 'IQ', +'Ireland' => 'IE', +'Israel' => 'IL', +'Italy' => 'IT', +'Jamaica' => 'JM', +'Japan' => 'JP', +'Jordan' => 'JO', +'Kazakhstan' => 'KZ', +'Kenya' => 'KE', +'Kiribati' => 'KI', +'Korea (North)' => 'KP', +'Korea (South)' => 'KR', +'Kuwait' => 'KW', +'Kyrgyzstan' => 'KG', +'Laos' => 'LA', +'Latvia' => 'LV', +'Lebanon' => 'LB', +'Lesotho' => 'LS', +'Liberia' => 'LR', +'Libya' => 'LY', +'Liechtenstein' => 'LI', +'Lithuania' => 'LT', +'Luxembourg' => 'LU', +'Macau' => 'MO', +'Macedonia' => 'MK', +'Madagascar' => 'MG', +'Malawi' => 'MW', +'Malaysia' => 'MY', +'Maldives' => 'MV', +'Mali' => 'ML', +'Malta' => 'MT', +'Marshall Islands' => 'MH', +'Martinique' => 'MQ', +'Mauritania' => 'MR', +'Mauritius' => 'MU', +'Mayotte' => 'YT', +'Mexico' => 'MX', +'Micronesia' => 'FM', +'Moldova' => 'MD', +'Monaco' => 'MC', +'Mongolia' => 'MN', +'Montserrat' => 'MS', +'Morocco' => 'MA', +'Mozambique' => 'MZ', +'Myanmar' => 'MM', +'Namibia' => 'NA', +'Nauru' => 'NR', +'Nepal' => 'NP', +'Netherlands Antilles' => 'AN', +'Netherlands' => 'NL', +'Neutral Zone' => 'NT', +'New Caledonia' => 'NC', +'New Zealand (Aotearoa)' => 'NZ', +'Nicaragua' => 'NI', +'Niger' => 'NE', +'Nigeria' => 'NG', +'Niue' => 'NU', +'Norfolk Island' => 'NF', +'Northern Mariana Islands' => 'MP', +'Norway' => 'NO', +'Oman' => 'OM', +'Pakistan' => 'PK', +'Palau' => 'PW', +'Panama' => 'PA', +'Papua New Guinea' => 'PG', +'Paraguay' => 'PY', +'Peru' => 'PE', +'Philippines' => 'PH', +'Pitcairn' => 'PN', +'Poland' => 'PL', +'Portugal' => 'PT', +'Puerto Rico' => 'PR', +'Qatar' => 'QA', +'Reunion' => 'RE', +'Romania' => 'RO', +'Russian Federation' => 'RU', +'Rwanda' => 'RW', +'S. Georgia and S. Sandwich Isls.' => 'GS', +'Saint Kitts and Nevis' => 'KN', +'Saint Lucia' => 'LC', +'Saint Vincent and the Grenadines' => 'VC', +'Samoa' => 'WS', +'San Marino' => 'SM', +'Sao Tome and Principe' => 'ST', +'Saudi Arabia' => 'SA', +'Senegal' => 'SN', +'Seychelles' => 'SC', +'Sierra Leone' => 'SL', +'Singapore' => 'SG', +'Slovak Republic' => 'SK', +'Slovenia' => 'SI', +'Solomon Islands' => 'Sb', +'Somalia' => 'SO', +'South Africa' => 'ZA', +'Spain' => 'ES', +'Sri Lanka' => 'LK', +'St. Helena' => 'SH', +'St. Pierre and Miquelon' => 'PM', +'Sudan' => 'SD', +'Suriname' => 'SR', +'Svalbard and Jan Mayen Islands' => 'SJ', +'Swaziland' => 'SZ', +'Sweden' => 'SE', +'Switzerland' => 'CH', +'Syria' => 'SY', +'Taiwan' => 'TW', +'Tajikistan' => 'TJ', +'Tanzania' => 'TZ', +'Thailand' => 'TH', +'Togo' => 'TG', +'Tokelau' => 'TK', +'Tonga' => 'TO', +'Trinidad and Tobago' => 'TT', +'Tunisia' => 'TN', +'Turkey' => 'TR', +'Turkmenistan' => 'TM', +'Turks and Caicos Islands' => 'TC', +'Tuvalu' => 'TV', +'US Minor Outlying Islands' => 'UM', +'USSR (former)' => 'SU', +'Uganda' => 'UG', +'Ukraine' => 'UA', +'United Arab Emirates' => 'AE', +'United Kingdom' => 'UK', +'United States' => 'US', +'Uruguay' => 'UY', +'Uzbekistan' => 'UZ', +'Vanuatu' => 'VU', +'Vatican City State (Holy See)' => 'VA', +'Venezuela' => 'VE', +'Viet Nam' => 'VN', +'Virgin Islands (British)' => 'VG', +'Virgin Islands (U.S.)' => 'VI', +'Wallis and Futuna Islands' => 'WF', +'Western Sahara' => 'EH', +'Yemen' => 'YE', +'Yugoslavia' => 'YU', +'Zaire' => 'ZR', +'Zambia' => 'ZM', +'Zimbabwe' => 'ZW', +); + +1; + diff --git a/config/cfgroot/defaultservices b/config/cfgroot/defaultservices new file mode 100644 index 0000000000..7c20beb8f1 --- /dev/null +++ b/config/cfgroot/defaultservices @@ -0,0 +1,249 @@ +acap,674,tcpudp +afbackup,2988,tcpudp +afpovertcp,548,tcpudp +afs3-bos,7007,tcpudp +afs3-callback,7001,tcpudp +afs3-errors,7006,tcpudp +afs3-fileserver,7000,tcpudp +afs3-kaserver,7004,tcpudp +afs3-prserver,7002,tcpudp +afs3-rmtsys,7009,tcpudp +afs3-update,7008,tcpudp +afs3-vlserver,7003,tcpudp +afs3-volser,7005,tcpudp +amanda,10080,tcpudp +amandaidx,10082,tcp +amidxtape,10083,tcp +asp,27374,tcpudp +at-echo,204,tcpudp +at-nbp,202,tcpudp +at-rtmp,201,tcpudp +at-zis,206,tcpudp +auth,113,tcpudp +bgp,179,tcpudp +biff,512,udp +binkp,24554,tcpudp +bootpc,68,tcpudp +bootps,67,tcpudp +canna,5680,tcp +cfengine,5308,tcpudp +cfinger,2003,tcp +chargen,19,tcpudp +cmip-agent,164,tcpudp +cmip-man,163,tcpudp +codaauth2,370,tcpudp +codasrv,2432,tcpudp +codasrv-se,2433,tcpudp +conference,531,tcp +corbaloc,2809,tcp +courier,530,tcp +csnet-ns,105,tcpudp +cvspserver,2401,tcpudp +cvsup,5999,tcpudp +datametrics,1645,tcpudp +daytime,13,tcpudp +dhcpv6-client,546,tcpudp +dhcpv6-server,547,tcpudp +discard,9,tcpudp +domain,53,tcpudp +echo,4,ddp +echo,7,tcpudp +efs,520,tcp +eklogin,2105,tcp +exec,512,tcp +fax,4557,tcp +fido,60179,tcpudp +finger,79,tcpudp +fsp,21,udp +ftp,21,tcpudp +ftp-data,20,tcpudp +gdomap,538,tcpudp +gdp-port,1997,tcpudp +gii,616,tcp +gopher,70,tcpudp +gss-http,488,tcpudp +h323callsigalt,11720,tcpudp +h323gatedisc,1718,tcpudp +h323gatestat,1719,tcpudp +h323hostcall,1720,tcpudp +h323hostcallsc,1300,tcpudp +ha-cluster,694,tcpudp +hello,1789,tcpudp +hmmp-ind,612,tcpudp +hostmon,5355,tcpudp +hostname,101,tcpudp +hsrp,1985,tcpudp +http,80,tcpudp +http-alt,8008,tcpudp +https,443,tcpudp +hylafax,4559,tcp +ica,1494,tcpudp +icpv2,3130,tcpudp +iiop,535,tcpudp +imap,143,tcpudp +imap3,220,tcpudp +imaps,993,tcpudp +ingreslock,1524,tcpudp +ipx,213,tcpudp +irc,194,tcpudp +ircd,6667,tcpudp +ircs,994,tcpudp +isakmp,500,tcpudp +isdnlog,20011,tcpudp +iso-tsap,102,tcp +jetdirect,9100,tcp +kamanda,10081,tcpudp +kerberos,88,tcpudp +kerberos-adm,749,tcp +kerberos-iv,750,udptcp +kerberos_master,751,udptcp +kermit,1649,tcpudp +klogin,543,tcp +knetd,2053,tcp +kpasswd,464,tcpudp +kpop,1109,tcp +krb524,4444,tcpudp +krb5_prop,754,tcp +krbupdate,760,tcp +kshell,544,tcp +l2tp,1701,tcpudp +ldap,389,tcpudp +ldaps,636,tcpudp +licensedaemon,1986,tcpudp +link,245,tcpucp +linuxconf,98,tcp +login,513,tcp +mailq,174,tcpudp +mandelspawn,9359,udp +microsoft-ds,445,tcpudp +mobileip-agent,434,tcpudp +mobilip-mn,435,tcpudp +ms-sql-m,1434,tcpudp +ms-sql-s,1433,tcpudp +msp,18,tcpudp +mtp,1911,tcpudp +mysql,3306,tcpudp +nameserver,42,tcpudp +nbp,2,ddp +netbios-dgm,138,tcpudp +netbios-ns,137,tcpudp +netbios-ssn,139,tcpudp +netnews,532,tcp +netrjs-1,71,tcpudp +netrjs-2,72,tcpudp +netrjs-3,73,tcpudp +netrjs-4,74,tcpudp +netstat,15,tcp +netwall,533,udp +nextstep,178,tcpudp +nfs,2049,tcpudp +nicname,43,tcpudp +ninstall,2150,tcpudp +nntp,119,tcpudp +nntps,563,tcpudp +noclog,5354,tcpudp +npmp-gui,611,tcpudp +npmp-local,610,tcpudp +ntalk,518,udp +ntp,123,tcpudp +omirr,808,tcpudp +passwd_server,752,udp +pgpkeyserver,11371,tcpudp +phonebook,767,tcpudp +photuris,468,tcpudp +pim-rp-disc,496,tcpudp +pop2,109,tcpudp +pop3,110,tcpudp +pop3s,995,tcpudp +poppassd,106,tcpudp +postgres,5432,tcpudp +printer,515,tcpudp +prospero,191,tcpudp +prospero-np,1525,tcpudp +prsvp,3455,tcpudp +qmtp,209,tcpudp +qotd,17,tcpudp +quake,26000,tcpudp +radius,1812,tcpudp +radius-acct,1813,tcpudp +re-mail-ck,50,tcpudp +remotefs,556,tcp +rfe,5002,tcpudp +ripng,521,tcpudp +rje,5,tcpudp +rlp,39,tcpudp +rmtcfg,1236,tcp +rndc,953,tcpudp +router,520,udp +rpc2portmap,369,tcpudp +rsvp_tunnel,363,tcpudp +rsync,873,tcpudp +rtelnet,107,tcpudp +rtmp,1,ddp +rtsp,554,tcpudp +rwhois,4321,tcpudp +sa-msg-port,1646,tcpudp +saft,487,tcpudp +sd,9876,tcpudp +sftp,115,tcpudp +sgi-dgl,5232,tcpudp +shell,514,tcp +skkserv,1178,tcp +smtp,25,tcpudp +smtps,465,tcp +smux,199,tcpudp +snmp,161,tcpudp +snmptrap,162,udp +snpp,444,tcpudp +socks,1080,tcpudp +squid,3128,tcp +ssh,22,tcpudp +submission,587,tcpudp +sunrpc,111,tcpudp +supdup,95,tcpudp +supfiledbg,1127,tcp +supfilesrv,871,tcp +support,1529,tcp +svrloc,427,tcpudp +swat,901,tcp +syslog,514,udp +systat,11,tcpudp +tacacs,49,tcpudp +talk,517,udp +tcpmux,1,tcpudp +telnet,23,tcpudp +telnets,992,tcpudp +tempo,526,tcp +tfido,60177,tcpudp +tftp,69,tcpudp +tftp-mcast,1758,tcpudp +time,37,tcpudp +timed,525,tcpudp +tircproxy,7666,tcp +tproxy,8081,tcpudp +traceroute,33434,tcpudp +trnsprntproxy,3346,tcpudp +ulistproc,372,tcpudp +utime,519,tcpudp +uucp,540,tcp +uucp-path,117,tcpudp +vboxd,20012,tcpudp +venus,2430,tcpudp +venus-se,2431,tcpudp +webcache,8080,tcpudp +webster,765,tcpudp +who,513,udp +whoami,565,tcpudp +whois++,63,tcpudp +wins,1512,tcpudp +wnn6-ds,26208,tcpudp +x11,6000,tcp +x11-ssh-offset,6010,tcp +xdmcp,177,tcpudp +xfs,7100,tcp +xtel,1313,tcp +z39.50,210,tcpudp +zephyr-clt,2103,tcpudp +zephyr-hm,2104,tcpudp +zephyr-srv,2102,tcpudp +zip,6,ddp diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl new file mode 100644 index 0000000000..13021ca044 --- /dev/null +++ b/config/cfgroot/general-functions.pl @@ -0,0 +1,554 @@ +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# Copyright (C) 2002 Alex Hudson - getcgihash() rewrite +# Copyright (C) 2002 Bob Grant - validmac() +# Copyright (c) 2002/04/13 Steve Bootes - add alias section, helper functions +# Copyright (c) 2002/08/23 Mark Wormgoor validfqdn() +# Copyright (c) 2003/09/11 Darren Critchley srtarray() +# +# $Id: general-functions.pl,v 1.1.2.26 2006/01/04 16:33:55 franck78 Exp $ +# + +package General; + +use strict; +use Socket; +use IO::Socket; + +$|=1; # line buffering + +$General::version = 'VERSION'; +$General::swroot = 'CONFIG_ROOT'; +$General::noipprefix = 'noipg-'; +$General::adminmanualurl = 'http://www.ipcop.org/1.4.0/en/admin/html'; + +sub log +{ + my $logmessage = $_[0]; + $logmessage =~ /([\w\W]*)/; + $logmessage = $1; + system('/usr/bin/logger', '-t', 'ipcop', $logmessage); +} + +sub readhash +{ + my $filename = $_[0]; + my $hash = $_[1]; + my ($var, $val); + + + # Some ipcop code expects that readhash 'complete' the hash if new entries + # are presents. Not clear it !!! + #%$hash = (); + + open(FILE, $filename) or die "Unable to read file $filename"; + + while () + { + chop; + ($var, $val) = split /=/, $_, 2; + if ($var) + { + $val =~ s/^\'//g; + $val =~ s/\'$//g; + + # Untaint variables read from hash + $var =~ /([A-Za-z0-9_-]*)/; $var = $1; + $val =~ /([\w\W]*)/; $val = $1; + $hash->{$var} = $val; + } + } + close FILE; +} + + +sub writehash +{ + my $filename = $_[0]; + my $hash = $_[1]; + my ($var, $val); + + # write cgi vars to the file. + open(FILE, ">${filename}") or die "Unable to write file $filename"; + flock FILE, 2; + foreach $var (keys %$hash) + { + $val = $hash->{$var}; + # Darren Critchley Jan 17, 2003 added the following because when submitting with a graphic, the x and y + # location of the mouse are submitted as well, this was being written to the settings file causing + # some serious grief! This skips the variable.x and variable.y + if (!($var =~ /(.x|.y)$/)) { + if ($val =~ / /) { + $val = "\'$val\'"; } + if (!($var =~ /^ACTION/)) { + print FILE "${var}=${val}\n"; } + } + } + close FILE; +} + + +sub age +{ + my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, + $atime, $mtime, $ctime, $blksize, $blocks) = stat $_[0]; + my $now = time; + + my $totalsecs = $now - $mtime; + my $days = int($totalsecs / 86400); + my $totalhours = int($totalsecs / 3600); + my $hours = $totalhours % 24; + my $totalmins = int($totalsecs / 60); + my $mins = $totalmins % 60; + my $secs = $totalsecs % 60; + + return "${days}d ${hours}h ${mins}m ${secs}s"; +} + +sub validip +{ + my $ip = $_[0]; + + if (!($ip =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/)) { + return 0; } + else + { + my @octets = ($1, $2, $3, $4); + foreach $_ (@octets) + { + if (/^0./) { + return 0; } + if ($_ < 0 || $_ > 255) { + return 0; } + } + return 1; + } +} + +sub validmask +{ + my $mask = $_[0]; + + # secord part an ip? + if (&validip($mask)) { + return 1; } + # second part a number? + if (/^0/) { + return 0; } + if (!($mask =~ /^\d+$/)) { + return 0; } + if ($mask >= 0 && $mask <= 32) { + return 1; } + return 0; +} + +sub validipormask +{ + my $ipormask = $_[0]; + + # see if it is a IP only. + if (&validip($ipormask)) { + return 1; } + # split it into number and mask. + if (!($ipormask =~ /^(.*?)\/(.*?)$/)) { + return 0; } + my $ip = $1; + my $mask = $2; + # first part not a ip? + if (!(&validip($ip))) { + return 0; } + return &validmask($mask); +} + +sub validipandmask +{ + my $ipandmask = $_[0]; + + # split it into number and mask. + if (!($ipandmask =~ /^(.*?)\/(.*?)$/)) { + return 0; } + my $ip = $1; + my $mask = $2; + # first part not a ip? + if (!(&validip($ip))) { + return 0; } + return &validmask($mask); +} + +sub validport +{ + $_ = $_[0]; + + if (!/^\d+$/) { + return 0; } + if (/^0./) { + return 0; } + if ($_ >= 1 && $_ <= 65535) { + return 1; } + return 0; +} + +sub validmac +{ + my $checkmac = $_[0]; + my $ot = '[0-9a-f]{2}'; # 2 Hex digits (one octet) + if ($checkmac !~ /^$ot:$ot:$ot:$ot:$ot:$ot$/i) + { + return 0; + } + return 1; +} + +sub validhostname +{ + # Checks a hostname against RFC1035 + my $hostname = $_[0]; + + # Each part should be at least two characters in length + # but no more than 63 characters + if (length ($hostname) < 1 || length ($hostname) > 63) { + return 0;} + # Only valid characters are a-z, A-Z, 0-9 and - + if ($hostname !~ /^[a-zA-Z0-9-]*$/) { + return 0;} + # First character can only be a letter or a digit + if (substr ($hostname, 0, 1) !~ /^[a-zA-Z0-9]*$/) { + return 0;} + # Last character can only be a letter or a digit + if (substr ($hostname, -1, 1) !~ /^[a-zA-Z0-9]*$/) { + return 0;} + return 1; +} + +sub validdomainname +{ + my $part; + + # Checks a domain name against RFC1035 + my $domainname = $_[0]; + my @parts = split (/\./, $domainname); # Split hostname at the '.' + + foreach $part (@parts) { + # Each part should be at least two characters in length + # but no more than 63 characters + if (length ($part) < 2 || length ($part) > 63) { + return 0;} + # Only valid characters are a-z, A-Z, 0-9 and - + if ($part !~ /^[a-zA-Z0-9-]*$/) { + return 0;} + # First character can only be a letter or a digit + if (substr ($part, 0, 1) !~ /^[a-zA-Z0-9]*$/) { + return 0;} + # Last character can only be a letter or a digit + if (substr ($part, -1, 1) !~ /^[a-zA-Z0-9]*$/) { + return 0;} + } + return 1; +} + +sub validfqdn +{ + my $part; + + # Checks a fully qualified domain name against RFC1035 + my $fqdn = $_[0]; + my @parts = split (/\./, $fqdn); # Split hostname at the '.' + if (scalar(@parts) < 2) { # At least two parts should + return 0;} # exist in a FQDN + # (i.e. hostname.domain) + foreach $part (@parts) { + # Each part should be at least one character in length + # but no more than 63 characters + if (length ($part) < 1 || length ($part) > 63) { + return 0;} + # Only valid characters are a-z, A-Z, 0-9 and - + if ($part !~ /^[a-zA-Z0-9-]*$/) { + return 0;} + # First character can only be a letter or a digit + if (substr ($part, 0, 1) !~ /^[a-zA-Z0-9]*$/) { + return 0;} + # Last character can only be a letter or a digit + if (substr ($part, -1, 1) !~ /^[a-zA-Z0-9]*$/) { + return 0;} + } + return 1; +} + +sub validportrange # used to check a port range +{ + my $port = $_[0]; # port values + $port =~ tr/-/:/; # replace all - with colons just in case someone used - + my $srcdst = $_[1]; # is it a source or destination port + + if (!($port =~ /^(\d+)\:(\d+)$/)) { + + if (!(&validport($port))) { + if ($srcdst eq 'src'){ + return $Lang::tr{'source port numbers'}; + } else { + return $Lang::tr{'destination port numbers'}; + } + } + } + else + { + my @ports = ($1, $2); + if ($1 >= $2){ + if ($srcdst eq 'src'){ + return $Lang::tr{'bad source range'}; + } else { + return $Lang::tr{'bad destination range'}; + } + } + foreach $_ (@ports) + { + if (!(&validport($_))) { + if ($srcdst eq 'src'){ + return $Lang::tr{'source port numbers'}; + } else { + return $Lang::tr{'destination port numbers'}; + } + } + } + return; + } +} + +# Test if IP is within a subnet +# Call: IpInSubnet (Addr, Subnet, Subnet Mask) +# Subnet can be an IP of the subnet: 10.0.0.0 or 10.0.0.1 +# Everything in dottted notation +# Return: TRUE/FALSE +sub IpInSubnet +{ + my $ip = unpack('N', &Socket::inet_aton(shift)); + my $start = unpack('N', &Socket::inet_aton(shift)); + my $mask = unpack('N', &Socket::inet_aton(shift)); + $start &= $mask; # base of subnet... + my $end = $start + ~$mask; + return (($ip >= $start) && ($ip <= $end)); +} + +sub validemail { + my $mail = shift; + return 0 if ( $mail !~ /^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/ ); + return 0 if ( $mail =~ /^[^0-9a-zA-Z]|[^0-9a-zA-Z]$/); + return 0 if ( $mail !~ /([0-9a-zA-Z]{1})\@./ ); + return 0 if ( $mail !~ /.\@([0-9a-zA-Z]{1})/ ); + return 0 if ( $mail =~ /.\.\-.|.\-\..|.\.\..|.\-\-./g ); + return 0 if ( $mail =~ /.\.\_.|.\-\_.|.\_\..|.\_\-.|.\_\_./g ); + return 0 if ( $mail !~ /\.([a-zA-Z]{2,4})$/ ); + return 1; +} + +sub readhasharray { + my ($filename, $hash) = @_; + %$hash = (); + + open(FILE, $filename) or die "Unable to read file $filename"; + + while () { + my ($key, $rest, @temp); + chomp; + ($key, $rest) = split (/,/, $_, 2); + if ($key =~ /^[0-9]+$/ && $rest) { + @temp = split (/,/, $rest); + $hash->{$key} = \@temp; + } + } + close FILE; + return; +} + +sub writehasharray { + my ($filename, $hash) = @_; + my ($key, @temp, $i); + + open(FILE, ">$filename") or die "Unable to write to file $filename"; + + foreach $key (keys %$hash) { + if ( $hash->{$key} ) { + print FILE "$key"; + foreach $i (0 .. $#{$hash->{$key}}) { + print FILE ",$hash->{$key}[$i]"; + } + } + print FILE "\n"; + } + close FILE; + return; +} + +sub findhasharraykey { + foreach my $i (1 .. 1000000) { + if ( ! exists $_[0]{$i}) { + return $i; + } + } +} + +sub srtarray +# Darren Critchley - darrenc@telus.net - (c) 2003 +# &srtarray(SortOrder, AlphaNumeric, SortDirection, ArrayToBeSorted) +# This subroutine will take the following parameters: +# ColumnNumber = the column which you want to sort on, starts at 1 +# AlphaNumberic = a or n (lowercase) defines whether the sort should be alpha or numberic +# SortDirection = asc or dsc (lowercase) Ascending or Descending sort +# ArrayToBeSorted = the array that wants sorting +# +# Returns an array that is sorted to your specs +# +# If SortOrder is greater than the elements in array, then it defaults to the first element +# +{ + my ($colno, $alpnum, $srtdir, @tobesorted) = @_; + my @tmparray; + my @srtedarray; + my $line; + my $newline; + my $ctr; + my $ttlitems = scalar @tobesorted; # want to know the number of rows in the passed array + if ($ttlitems < 1){ # if no items, don't waste our time lets leave + return (@tobesorted); + } + my @tmp = split(/\,/,$tobesorted[0]); + $ttlitems = scalar @tmp; # this should be the number of elements in each row of the passed in array + + # Darren Critchley - validate parameters + if ($colno > $ttlitems){$colno = '1';} + $colno--; # remove one from colno to deal with arrays starting at 0 + if($colno < 0){$colno = '0';} + if ($alpnum ne '') { $alpnum = lc($alpnum); } else { $alpnum = 'a'; } + if ($srtdir ne '') { $srtdir = lc($srtdir); } else { $srtdir = 'src'; } + + foreach $line (@tobesorted) + { + chomp($line); + if ($line ne '') { + my @temp = split(/\,/,$line); + # Darren Critchley - juggle the fields so that the one we want to sort on is first + my $tmpholder = $temp[0]; + $temp[0] = $temp[$colno]; + $temp[$colno] = $tmpholder; + $newline = ""; + for ($ctr=0; $ctr < $ttlitems ; $ctr++) { + $newline=$newline . $temp[$ctr] . ","; + } + chop($newline); + push(@tmparray,$newline); + } + } + if ($alpnum eq 'n') { + @tmparray = sort {$a <=> $b} @tmparray; + } else { + @tmparray = (sort @tmparray); + } + foreach $line (@tmparray) + { + chomp($line); + if ($line ne '') { + my @temp = split(/\,/,$line); + my $tmpholder = $temp[0]; + $temp[0] = $temp[$colno]; + $temp[$colno] = $tmpholder; + $newline = ""; + for ($ctr=0; $ctr < $ttlitems ; $ctr++){ + $newline=$newline . $temp[$ctr] . ","; + } + chop($newline); + push(@srtedarray,$newline); + } + } + + if ($srtdir eq 'dsc') { + @tmparray = reverse(@srtedarray); + return (@tmparray); + } else { + return (@srtedarray); + } +} + +sub FetchPublicIp { + my %proxysettings; + &General::readhash("${General::swroot}/proxy/settings", \%proxysettings); + if ($_=$proxysettings{'UPSTREAM_PROXY'}) { + my ($peer, $peerport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/); + Net::SSLeay::set_proxy($peer,$peerport,$proxysettings{'UPSTREAM_USER'},$proxysettings{'UPSTREAM_PASSWORD'} ); + } + my ($out, $response) = Net::SSLeay::get_http( 'checkip.dyndns.org', + 80, + "/", + Net::SSLeay::make_headers('User-Agent' => 'Ipcop' ) + ); + if ($response =~ m%HTTP/1\.. 200 OK%) { + $out =~ /Current IP Address: (\d+.\d+.\d+.\d+)/; + return $1; + } + return ''; +} + +# +# Check if hostname.domain provided have IP provided +# use gethostbyname to verify that +# Params: +# IP +# hostname +# domain +# Output +# 1 IP matches host.domain +# 0 not in sync +# +sub DyndnsServiceSync ($;$;$) { + + my ($ip,$hostName,$domain) = @_; + my @addresses; + + #fix me no ip GROUP, what is the name ? + $hostName =~ s/$General::noipprefix//; + if ($hostName) { #may be empty + $hostName = "$hostName.$domain"; + @addresses = gethostbyname($hostName); + } + + if ($addresses[0] eq '') { # nothing returned ? + $hostName = $domain; # try resolving with domain only + @addresses = gethostbyname($hostName); + } + + if ($addresses[0] ne '') { # got something ? + #&General::log("name:$addresses[0], alias:$addresses[1]"); + # Build clear text list of IP + @addresses = map ( &Socket::inet_ntoa($_), @addresses[4..$#addresses]); + if (grep (/$ip/, @addresses)) { + return 1; + } + } + return 0; +} +# +# This sub returns the red IP used to compare in DyndnsServiceSync +# +sub GetDyndnsRedIP { + my %settings; + &General::readhash("${General::swroot}/ddns/settings", \%settings); + + open(IP, "${General::swroot}/red/local-ipaddress") or return 'unavailable'; + my $ip = ; + close(IP); + chomp $ip; + + if (&General::IpInSubnet ($ip,'10.0.0.0','255.0.0.0') || + &General::IpInSubnet ($ip,'172.16.0.0.','255.240.0.0') || + &General::IpInSubnet ($ip,'192.168.0.0','255.255.0.0')) + { + if ($settings{'BEHINDROUTER'} eq 'FETCH_IP') { + my $RealIP = &General::FetchPublicIp; + $ip = (&General::validip ($RealIP) ? $RealIP : 'unavailable'); + } + } + return $ip; +} +1; diff --git a/config/cfgroot/header-menu.pl b/config/cfgroot/header-menu.pl new file mode 100644 index 0000000000..b2151ea5cc --- /dev/null +++ b/config/cfgroot/header-menu.pl @@ -0,0 +1,24 @@ +sub genmenu +{ + ... snip ... + if ( ! -e "${General::swroot}/proxy/enable" && ! -e "${General::swroot}/proxy/enable_blue" ) { + splice (@{$menu{'2.status'}{'subMenu'}}, 4, 1); + splice (@{$menu{'7.mainlogs'}{'subMenu'}}, 2, 1); + } + + # Read additionnal menus entry + # this have to be hardened and accepted. To be extended. + opendir (DIR, "${General::swroot}/addon-menu"); + while (my $menuitem = readdir (DIR)) { + + if ( $menuitem =~ /^menu\.([1-6]\..*)\..*/) { #model is "menu.(N.submenu).filename" + my $submenu = $1; + open (FILE,"${General::swroot}/addon-menu/$menuitem") or die; + while (my $text = ) { # file may content many entry + splice (@{$menu{$submenu}{'subMenu'}} ,-1,0, [ eval($text) ] ); + } + close (FILE); + } + } + closedir (DIR); +} diff --git a/config/cfgroot/header.pl b/config/cfgroot/header.pl new file mode 100644 index 0000000000..c15187a135 --- /dev/null +++ b/config/cfgroot/header.pl @@ -0,0 +1,823 @@ +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# Copyright (C) 2002 Alex Hudson - getcgihash() rewrite +# Copyright (C) 2002 Bob Grant - validmac() +# Copyright (c) 2002/04/13 Steve Bootes - add alias section, helper functions +# Copyright (c) 2002/08/23 Mark Wormgoor validfqdn() +# Copyright (c) 2003/09/11 Darren Critchley srtarray() +# +# $Id: header.pl,v 1.34.2.67 2005/10/03 20:01:05 gespinasse Exp $ +# + +package Header; + +use strict; +use CGI(); +use Time::Local; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + + +$Header::pagecolour = '#ffffff'; # never used, will be removed +$Header::tablecolour = '#FFFFFF'; # never used, will be removed +$Header::bigboxcolour = '#F6F4F4'; # never used, will be removed +$Header::boxcolour = '#EAE9EE'; # only header.pl, ? move in css ? +$Header::bordercolour = '#000000'; # never used, will be removed +$Header::table1colour = '#C0C0C0'; +$Header::table2colour = '#F2F2F2'; +$Header::colourred = '#993333'; +$Header::colourorange = '#FF9933'; +$Header::colouryellow = '#FFFF00'; +$Header::colourgreen = '#339933'; +$Header::colourblue = '#333399'; +$Header::colourfw = '#000000'; # only connections.cgi +$Header::colourvpn = '#990099'; # only connections.cgi +$Header::colourerr = '#FF0000'; # only header.pl, many scripts use colourred for warnings messages +$Header::viewsize = 150; +my %menu = (); +my $hostnameintitle = 0; +our $javascript = 1; + +### Initialize menu +sub genmenu +{ + ### Initialize environment + my %ethsettings = (); + &General::readhash("${General::swroot}/ethernet/settings", \%ethsettings); + + %{$menu{'1.system'}}=( + 'contents' => $Lang::tr{'alt system'}, + 'uri' => '', + 'statusText' => "IPCop $Lang::tr{'alt system'}", + 'subMenu' => [[ $Lang::tr{'alt home'} , '/cgi-bin/index.cgi', "IPCop $Lang::tr{'alt home'}" ], + [ $Lang::tr{'updates'} , '/cgi-bin/updates.cgi', "IPCop $Lang::tr{'updates'}" ], + [ $Lang::tr{'sspasswords'} , '/cgi-bin/changepw.cgi', "IPCop $Lang::tr{'sspasswords'}" ], + [ $Lang::tr{'ssh access'} , '/cgi-bin/remote.cgi', "IPCop $Lang::tr{'ssh access'}" ], + [ $Lang::tr{'gui settings'} , '/cgi-bin/gui.cgi', "IPCop $Lang::tr{'gui settings'}" ], + [ $Lang::tr{'backup'} , '/cgi-bin/backup.cgi', "IPCop $Lang::tr{'backup'} / $Lang::tr{'restore'}" ], + [ $Lang::tr{'shutdown'} , '/cgi-bin/shutdown.cgi', "IPCop $Lang::tr{'shutdown'} / $Lang::tr{'reboot'}" ], + [ $Lang::tr{'credits'} , '/cgi-bin/credits.cgi', "IPCop $Lang::tr{'credits'}" ]] + ); + %{$menu{'2.status'}}=( + 'contents' => $Lang::tr{'status'}, + 'uri' => '', + 'statusText' => "IPCop $Lang::tr{'status information'}", + 'subMenu' => [[ $Lang::tr{'sssystem status'} , '/cgi-bin/status.cgi', "IPCop $Lang::tr{'system status information'}" ], + [ $Lang::tr{'ssnetwork status'} , '/cgi-bin/netstatus.cgi', "IPCop $Lang::tr{'network status information'}" ], + [ $Lang::tr{'system graphs'} , '/cgi-bin/graphs.cgi', "IPCop $Lang::tr{'system graphs'}" ], + [ $Lang::tr{'sstraffic graphs'} , '/cgi-bin/graphs.cgi?graph=network', "IPCop $Lang::tr{'network traffic graphs'}" ], + [ $Lang::tr{'ssproxy graphs'} , '/cgi-bin/proxygraphs.cgi', "IPCop $Lang::tr{'proxy access graphs'}" ], + [ $Lang::tr{'connections'} , '/cgi-bin/connections.cgi', "IPCop $Lang::tr{'connections'}" ]] + ); + %{$menu{'3.network'}}=( + 'contents' => $Lang::tr{'network'}, + 'uri' => '', + 'statusText' => "IPCop $Lang::tr{'network configuration'}", + 'subMenu' => [[ $Lang::tr{'alt dialup'} , '/cgi-bin/pppsetup.cgi', "IPCop $Lang::tr{'dialup settings'}" ], + [ $Lang::tr{'upload'} , '/cgi-bin/upload.cgi', $Lang::tr{'firmware upload'} ], + [ $Lang::tr{'modem'} , '/cgi-bin/modem.cgi', "IPCop $Lang::tr{'modem configuration'}" ], + [ $Lang::tr{'aliases'} , '/cgi-bin/aliases.cgi', "IPCop $Lang::tr{'external aliases configuration'}" ]] + ); + %{$menu{'4.services'}}=( + 'contents' => $Lang::tr{'alt services'}, + 'uri' => '', + 'statusText' => "IPCop $Lang::tr{'alt services'}", + 'subMenu' => [[ $Lang::tr{'proxy'} , '/cgi-bin/proxy.cgi', "IPCop $Lang::tr{'web proxy configuration'}" ], + [ $Lang::tr{'dhcp server'} , '/cgi-bin/dhcp.cgi', "IPCop $Lang::tr{'dhcp configuration'}" ], + [ $Lang::tr{'dynamic dns'} , '/cgi-bin/ddns.cgi', "IPCop $Lang::tr{'dynamic dns client'}" ], + [ $Lang::tr{'edit hosts'} , '/cgi-bin/hosts.cgi', "IPCop $Lang::tr{'host configuration'}" ], + [ $Lang::tr{'time server'} , '/cgi-bin/time.cgi', "IPCop $Lang::tr{'time server'}" ], + [ $Lang::tr{'traffic shaping'} , '/cgi-bin/shaping.cgi', "IPCop $Lang::tr{'traffic shaping settings'}" ], + [ $Lang::tr{'intrusion detection'} , '/cgi-bin/ids.cgi', "IPCop $Lang::tr{'intrusion detection system'} (Snort)" ]] + ); + %{$menu{'5.firewall'}}=( + 'contents' => $Lang::tr{'firewall'}, + 'uri' => '', + 'statusText' => "IPCop $Lang::tr{'firewall'}", + 'subMenu' => [[ $Lang::tr{'ssport forwarding'} , '/cgi-bin/portfw.cgi', "IPCop $Lang::tr{'port forwarding configuration'}" ], + [ $Lang::tr{'external access'} , '/cgi-bin/xtaccess.cgi', "IPCop $Lang::tr{'external access configuration'}" ], + [ $Lang::tr{'ssdmz pinholes'} , '/cgi-bin/dmzholes.cgi', "IPCop $Lang::tr{'dmz pinhole configuration'}" ], + [ $Lang::tr{'blue access'} , '/cgi-bin/wireless.cgi', "IPCop $Lang::tr{'blue access'}" ] + ,[ $Lang::tr{'options fw'} , '/cgi-bin/optionsfw.cgi', "IPCop $Lang::tr{'options fw'}" ] + ] + ); + %{$menu{'6.vpns'}}=( + 'contents' => $Lang::tr{'alt vpn'}, + 'uri' => '', + 'statusText' => "IPCop $Lang::tr{'virtual private networking'}", + 'subMenu' => [[ $Lang::tr{'alt vpn'} , '/cgi-bin/vpnmain.cgi', "IPCop $Lang::tr{'virtual private networking'}"]] + ); + %{$menu{'7.mainlogs'}}=( + 'contents' => $Lang::tr{'alt logs'}, + 'uri' => '', + 'statusText' => "IPCop $Lang::tr{'alt logs'}", + 'subMenu' => [[ $Lang::tr{'log settings'} , '/cgi-bin/logs.cgi/config.dat', "IPCop $Lang::tr{'log settings'}" ], + [ $Lang::tr{'log summary'} , '/cgi-bin/logs.cgi/summary.dat', "IPCop $Lang::tr{'log summary'}" ], + [ $Lang::tr{'proxy logs'} , '/cgi-bin/logs.cgi/proxylog.dat', "IPCop $Lang::tr{'proxy log viewer'}" ], + [ $Lang::tr{'firewall logs'} , '/cgi-bin/logs.cgi/firewalllog.dat', "IPCop $Lang::tr{'firewall log viewer'}" ], + [ $Lang::tr{'ids logs'} , '/cgi-bin/logs.cgi/ids.dat', "IPCop $Lang::tr{'intrusion detection system log viewer'}" ], + [ $Lang::tr{'system logs'} , '/cgi-bin/logs.cgi/log.dat', "IPCop $Lang::tr{'system log viewer'}" ]] + ); + if (! $ethsettings{'BLUE_DEV'}) { + splice (@{$menu{'5.firewall'}{'subMenu'}}, 3, 1); + } + if (! $ethsettings{'BLUE_DEV'} && ! $ethsettings{'ORANGE_DEV'}) { + splice (@{$menu{'5.firewall'}{'subMenu'}}, 2, 1); + } + unless ( $ethsettings{'CONFIG_TYPE'} =~ /^(2|3|6|7)$/ && $ethsettings{'RED_TYPE'} eq 'STATIC' ) { + splice (@{$menu{'3.network'}{'subMenu'}}, 3, 1); + } + if ( ! -e "${General::swroot}/snort/enable" && ! -e "${General::swroot}/snort/enable_blue" && + ! -e "${General::swroot}/snort/enable_green" && ! -e "${General::swroot}/snort/enable_orange") { + splice (@{$menu{'7.mainlogs'}{'subMenu'}}, 4, 1); + } + if ( ! -e "${General::swroot}/proxy/enable" && ! -e "${General::swroot}/proxy/enable_blue" ) { + splice (@{$menu{'2.status'}{'subMenu'}}, 4, 1); + splice (@{$menu{'7.mainlogs'}{'subMenu'}}, 2, 1); + } +} + +sub showhttpheaders +{ + ### Make sure this is an SSL request + if ($ENV{'SERVER_ADDR'} && $ENV{'HTTPS'} ne 'on') { + print "Status: 302 Moved\r\n"; + print "Location: https://$ENV{'SERVER_ADDR'}:445/$ENV{'PATH_INFO'}\r\n\r\n"; + exit 0; + } else { + print "Pragma: no-cache\n"; + print "Cache-control: no-cache\n"; + print "Connection: close\n"; + print "Content-type: text/html\n\n"; + } +} + +sub showjsmenu +{ + my $c1 = 1; + + print " +EOF + ; +} + +sub showmenu +{ + if ($javascript) {print "";} +} + +sub showsubsection +{ + my $location = $_[0]; + my $c1 = 0; + + if ($javascript) {print "";} +} + +sub openpage +{ + my $title = $_[0]; + my $menu = $_[1]; + my $extrahead = $_[2]; + + ### Initialize environment + my %settings = (); + &General::readhash("${General::swroot}/main/settings", \%settings); + + if ($settings{'JAVASCRIPT'} eq 'off') { + $javascript = 0; + } else { + $javascript = 1; + } + + if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') { + $hostnameintitle = 1; + } else { + $hostnameintitle = 0; + } + + print < + + +END + ; + print " "; + if ($hostnameintitle) { + print "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; + } else { + print "IPCop - $title"; + } + print "\n"; + + print < + + +END + ; + if ($javascript) { + print "\n"; + &genmenu(); + &showjsmenu(); + } else { + &genmenu(); + } + + my $location = ''; + my $sublocation = ''; + my @URI=split ('\?', $ENV{'REQUEST_URI'} ); + foreach my $k1 ( keys %menu ) { + my $temp = $menu{$k1}{'contents'}; + foreach my $k2 ( @{$menu{$k1}{'subMenu'}} ) { + if ( @{$k2}[1] eq $URI[0] ) { + $location = $temp; + $sublocation = @{$k2}[0]; + } + } + } + + my @cgigraphs = split(/graph=/,$ENV{'QUERY_STRING'}); + if (defined ($cgigraphs[1])){ + if ($cgigraphs[1] =~ /(GREEN|BLUE|ORANGE|RED|network)/) { + $location = $Lang::tr{'status'}; + $sublocation = $Lang::tr{'sstraffic graphs'}; + } + if ($cgigraphs[1] =~ /(cpu|memory|swap|disk)/) { + $location = $Lang::tr{'status'}; + $sublocation = $Lang::tr{'system graphs'}; + } + } + if ($ENV{'QUERY_STRING'} =~ /(ip)/) { + $location = $Lang::tr{'alt logs'}; + $sublocation = "WHOIS"; + } + + if ($javascript) { + print < + document.onmouseup = function() + { + domMenu_deactivate('domMenu_main'); + } + + + + +END + ; + } else { + print "\n\n\n"; + } + + print < + + + + + + +
+ + + + + + +
$location$sublocation
+
+ ${General::version} +END + ; + if ($menu == 1) { + if ($javascript) { + print "
\n"; + } + &showmenu(); + } + print "
\n"; + &showsubsection($location); + print "\n"; +} + +sub closepage +{ + print < + + + +
+END + ; + my $status = &connectionstatus(); + print "$status
\n"; + print `/usr/bin/uptime`; + + print < +
Sourceforge logo
+ +END + ; +} + +sub openbigbox +{ + my $width = $_[0]; + my $align = $_[1]; + my $sideimg = $_[2]; + my $errormessage = $_[3]; + my $bgcolor; + + if ($errormessage) { + $bgcolor = "style='background-color: $Header::colourerr;'"; + } else { + $bgcolor = ''; + } + + print "\n"; + if ($sideimg) { + print "\n"; + } else { + print "\n"; + } + print "
\n"; + print "\n"; + print "
\n"; +} + +sub closebigbox +{ + print "
\n" +} + +sub openbox +{ + my $width = $_[0]; + my $align = $_[1]; + my $caption = $_[2]; + + print < + + + + + + + + + + + + + +END + ; + if ($caption) { print "$caption\n"; } else { print " "; } + print < + + + +
+END + ; +} + +sub closebox +{ + print <
+ + + + + +END + ; +} + +sub getcgihash { + my ($hash, $params) = @_; + my $cgi = CGI->new (); + return if ($ENV{'REQUEST_METHOD'} ne 'POST'); + if (!$params->{'wantfile'}) { + $CGI::DISABLE_UPLOADS = 1; + $CGI::POST_MAX = 512 * 1024; + } else { + $CGI::POST_MAX = 10 * 1024 * 1024; + } + + $cgi->referer() =~ m/^https?\:\/\/([^\/]+)/; + my $referer = $1; + $cgi->url() =~ m/^https?\:\/\/([^\/]+)/; + my $servername = $1; + return if ($referer ne $servername); + + ### Modified for getting multi-vars, split by | + my %temp = $cgi->Vars(); + foreach my $key (keys %temp) { + $hash->{$key} = $temp{$key}; + $hash->{$key} =~ s/\0/|/g; + $hash->{$key} =~ s/^\s*(.*?)\s*$/$1/; + } + + if (($params->{'wantfile'})&&($params->{'filevar'})) { + $hash->{$params->{'filevar'}} = $cgi->upload + ($params->{'filevar'}); + } + return; +} + +sub cleanhtml +{ + my $outstring =$_[0]; + $outstring =~ tr/,/ / if not defined $_[1] or $_[1] ne 'y'; + $outstring =~ s/&/&/g; + $outstring =~ s/\'/'/g; + $outstring =~ s/\"/"/g; + $outstring =~ s//>/g; + return $outstring; +} + +sub connectionstatus +{ + my %pppsettings = (); + my %netsettings = (); + my $iface=''; + + $pppsettings{'PROFILENAME'} = 'None'; + &General::readhash("${General::swroot}/ppp/settings", \%pppsettings); + &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); + + my $profileused=''; + if ( ! ( $netsettings{'CONFIG_TYPE'} =~ /^(2|3|6|7)$/ && $netsettings{'RED_TYPE'} =~ /^(DHCP|STATIC)$/ ) ) { + $profileused="- $pppsettings{'PROFILENAME'}"; + } + + if ( ( $pppsettings{'METHOD'} eq 'DHCP' && $netsettings{'RED_TYPE'} ne 'PPTP') + || $netsettings{'RED_TYPE'} eq 'DHCP' ) { + if (open(IFACE, "${General::swroot}/red/iface")) { + $iface = ; + close IFACE; + chomp ($iface); + $iface =~ /([a-zA-Z0-9]*)/; $iface = $1; + } + } + + my ($timestr, $connstate); + if ($netsettings{'CONFIG_TYPE'} =~ /^(0|1|4|5)$/ && $pppsettings{'TYPE'} =~ /^isdn/) { + # Count ISDN channels + my ($idmap, $chmap, $drmap, $usage, $flags, $phone); + my @phonenumbers; + my $count=0; + + open (FILE, "/dev/isdninfo"); + + $idmap = ; chop $idmap; + $chmap = ; chop $chmap; + $drmap = ; chop $drmap; + $usage = ; chop $usage; + $flags = ; chop $flags; + $phone = ; chop $phone; + + $phone =~ s/^phone(\s*):(\s*)//; + + @phonenumbers = split / /, $phone; + + foreach (@phonenumbers) { + if ($_ ne '???') { + $count++; + } + } + close (FILE); + + ## Connection status + my $number; + if ($count == 0) { + $number = 'none!'; + } elsif ($count == 1) { + $number = 'single'; + } else { + $number = 'dual'; + } + + if (-e "${General::swroot}/red/active") { + $timestr = &General::age("${General::swroot}/red/active"); + $connstate = "$Lang::tr{'connected'} - $number channel ($timestr) $profileused"; + } else { + if ($count == 0) { + if (-e "${General::swroot}/red/dial-on-demand") { + $connstate = "$Lang::tr{'dod waiting'} $profileused"; + } else { + $connstate = "$Lang::tr{'idle'} $profileused"; + } + } else { + $connstate = "$Lang::tr{'connecting'} $profileused"; + } + } + } elsif ($netsettings{'RED_TYPE'} eq "STATIC" || $pppsettings {'METHOD'} eq 'STATIC') { + if (-e "${General::swroot}/red/active") { + $timestr = &General::age("${General::swroot}/red/active"); + $connstate = "$Lang::tr{'connected'} ($timestr) $profileused"; + } else { + $connstate = "$Lang::tr{'idle'} $profileused"; + } + } elsif ( ( (-e "${General::swroot}/dhcpc/dhcpcd-$iface.pid") && $netsettings{'RED_TYPE'} ne 'PPTP' ) || + !system("/bin/ps -ef | /bin/grep -q '[p]ppd'") || !system("/bin/ps -ef | /bin/grep -q '[c]onnectioncheck'")) { + if (-e "${General::swroot}/red/active") { + $timestr = &General::age("${General::swroot}/red/active"); + if ($pppsettings{'TYPE'} =~ /^(modem|bewanadsl|conexantpciadsl|eagleusbadsl)$/) { + my $speed; + if ($pppsettings{'TYPE'} eq 'modem') { + open(CONNECTLOG, "/var/log/connect.log"); + while () { + if (/CONNECT/) { + $speed = (split / /)[6]; + } + } + close (CONNECTLOG); + } elsif ($pppsettings{'TYPE'} eq 'bewanadsl') { + $speed = `/usr/bin/unicorn_status | /bin/grep Rate | /usr/bin/cut -f2 -d ':'`; + } elsif ($pppsettings{'TYPE'} eq 'conexantpciadsl') { + $speed = `/bin/cat /proc/net/atm/CnxAdsl:* | /bin/grep 'Line Rates' | /bin/sed -e 's+Line Rates: Receive+Rx+' -e 's+Transmit+Tx+'`; + } elsif ($pppsettings{'TYPE'} eq 'eagleusbadsl') { + $speed = `/usr/sbin/eaglestat | /bin/grep Rate`; + } + $connstate = "$Lang::tr{'connected'} ($timestr) $profileused (\@$speed)"; + } else { + $connstate = "$Lang::tr{'connected'} ($timestr) $profileused"; + } + } else { + if (-e "${General::swroot}/red/dial-on-demand") { + $connstate = "$Lang::tr{'dod waiting'} $profileused"; + } else { + $connstate = "$Lang::tr{'connecting'} $profileused"; + } + } + } else { + $connstate = "$Lang::tr{'idle'} $profileused"; + } + return $connstate; +} + +sub speedtouchversion +{ + my $speedtouch; + if (-f "/proc/bus/usb/devices") + { + $speedtouch=`/bin/cat /proc/bus/usb/devices | /bin/grep 'Vendor=06b9 ProdID=4061' | /usr/bin/cut -d ' ' -f6`; + if ($speedtouch eq '') { + $speedtouch= $Lang::tr{'connect the modem'}; + } + } else { + $speedtouch='USB '.$Lang::tr{'not running'}; + } + return $speedtouch +} + +#Sorting of allocated leases +sub CheckSortOrder { + my %dhcpsettings = (); + &General::readhash("${General::swroot}/dhcp/settings", \%dhcpsettings); + + if ($ENV{'QUERY_STRING'} =~ /^IPADDR|^ETHER|^HOSTNAME|^ENDTIME/ ) { + my $newsort=$ENV{'QUERY_STRING'}; + my $act=$dhcpsettings{'SORT_LEASELIST'}; + #Default sort if unspecified + $act='IPADDRRev' if !defined ($act); + #Reverse actual ? + if ($act =~ $newsort) { + my $Rev=''; + if ($act !~ 'Rev') {$Rev='Rev'}; + $newsort.=$Rev + }; + + $dhcpsettings{'SORT_LEASELIST'}=$newsort; + &General::writehash("${General::swroot}/dhcp/settings", \%dhcpsettings); + } +} + +sub PrintActualLeases +{ + our %dhcpsettings = (); + our %entries = (); + + sub leasesort { + my $qs =''; + if (rindex ($dhcpsettings{'SORT_LEASELIST'},'Rev') != -1) + { + $qs=substr ($dhcpsettings{'SORT_LEASELIST'},0,length($dhcpsettings{'SORT_LEASELIST'})-3); + if ($qs eq 'IPADDR') { + my @a = split(/\./,$entries{$a}->{$qs}); + my @b = split(/\./,$entries{$b}->{$qs}); + ($b[0]<=>$a[0]) || + ($b[1]<=>$a[1]) || + ($b[2]<=>$a[2]) || + ($b[3]<=>$a[3]); + }else { + $entries{$b}->{$qs} cmp $entries{$a}->{$qs}; + } + } + else #not reverse + { + $qs=$dhcpsettings{'SORT_LEASELIST'}; + if ($qs eq 'IPADDR') { + my @a = split(/\./,$entries{$a}->{$qs}); + my @b = split(/\./,$entries{$b}->{$qs}); + ($a[0]<=>$b[0]) || + ($a[1]<=>$b[1]) || + ($a[2]<=>$b[2]) || + ($a[3]<=>$b[3]); + }else { + $entries{$a}->{$qs} cmp $entries{$b}->{$qs}; + } + } + } + + &Header::openbox('100%', 'left', $Lang::tr{'current dynamic leases'}); + print < + +$Lang::tr{'ip address'} +$Lang::tr{'mac address'} +$Lang::tr{'hostname'} +$Lang::tr{'lease expires'} (local time d/m/y) + +END + ; + + my ($ip, $endtime, $ether, $hostname, @record, $record); + open(LEASES,"/var/state/dhcp/dhcpd.leases") or die "Can't open dhcpd.leases"; + while (my $line = ) { + next if( $line =~ /^\s*#/ ); + chomp($line); + my @temp = split (' ', $line); + + if ($line =~ /^\s*lease/) { + $ip = $temp[1]; + #All field are not necessarily read. Clear everything + $endtime = 0; + $ether = ""; + $hostname = ""; + } elsif ($line =~ /^\s*ends never;/) { + $endtime = 'never'; + } elsif ($line =~ /^\s*ends/) { + $line =~ /(\d+)\/(\d+)\/(\d+) (\d+):(\d+):(\d+)/; + $endtime = timegm($6, $5, $4, $3, $2 - 1, $1 - 1900); + } elsif ($line =~ /^\s*hardware ethernet/) { + $ether = $temp[2]; + $ether =~ s/;//g; + } elsif ($line =~ /^\s*client-hostname/) { + shift (@temp); + $hostname = join (' ',@temp); + $hostname =~ s/;//g; + $hostname =~ s/\"//g; + } elsif ($line eq "}") { + @record = ('IPADDR',$ip,'ENDTIME',$endtime,'ETHER',$ether,'HOSTNAME',$hostname); + $record = {}; # create a reference to empty hash + %{$record} = @record; # populate that hash with @record + $entries{$record->{'IPADDR'}} = $record; # add this to a hash of hashes + } #unknown format line... + } + close(LEASES); + + #Get sort method + $dhcpsettings{'SORT_LEASELIST'}='IPADDR'; #default + &General::readhash("${General::swroot}/dhcp/settings", \%dhcpsettings); #or maybe saved ! + my $id = 0; + foreach my $key (sort leasesort keys %entries) { + + my $hostname = &Header::cleanhtml($entries{$key}->{HOSTNAME},"y"); + + if ($id % 2) { + print ""; + } + else { + print ""; + } + + print <$entries{$key}->{IPADDR} +$entries{$key}->{ETHER} + $hostname + +END + ; + + if ($entries{$key}->{ENDTIME} eq 'never') { + print "$Lang::tr{'no time limit'}"; + } else { + my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $dst); + ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $dst) = localtime ($entries{$key}->{ENDTIME}); + my $enddate = sprintf ("%02d/%02d/%d %02d:%02d:%02d",$mday,$mon+1,$year+1900,$hour,$min,$sec); + + if ($entries{$key}->{ENDTIME} < time() ){ + print "$enddate"; + } else { + print "$enddate"; + } + } + print ""; + $id++; + } + + print ""; + &Header::closebox(); +} + +1; diff --git a/config/cfgroot/icmptypes b/config/cfgroot/icmptypes new file mode 100644 index 0000000000..935324fd6a --- /dev/null +++ b/config/cfgroot/icmptypes @@ -0,0 +1,61 @@ +# ICMP Data File +# +# This file is part of the IPCop Firewall. +# +# IPCop is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# IPCop is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with IPCop; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# (c) The IPCop Team +# +# $Id: icmptypes,v 1.2 2003/12/11 11:15:33 riddles Exp $ +# +# Valid ICMP types obtained through the following command +# iptables -p icmp -h +# +echo-reply (pong) +destination-unreachable +network-unreachable +host-unreachable +protocol-unreachable +port-unreachable +fragmentation-needed +source-route-failed +network-unknown +host-unknown +network-prohibited +host-prohibited +TOS-network-unreachable +TOS-host-unreachable +communication-prohibited +host-precedence-violation +precedence-cutoff +source-quench +redirect +network-redirect +host-redirect +TOS-network-redirect +TOS-host-redirect +echo-request (ping) +router-advertisement +router-solicitation +time-exceeded (ttl-exceeded) +ttl-zero-during-transit +ttl-zero-during-reassembly +parameter-problem +ip-header-bad +required-option-missing +timestamp-request +timestamp-reply +address-mask-request +address-mask-reply diff --git a/config/cfgroot/ipcop.gpg b/config/cfgroot/ipcop.gpg new file mode 100644 index 0000000000..c3e93ddd91 --- /dev/null +++ b/config/cfgroot/ipcop.gpg @@ -0,0 +1,18 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.0.7 (GNU/Linux) + +mQGiBD99FiIRBADCqlOQU6VhBMHHpX9RRHF+yfAeMVtqlKryiPh/CaBwxMjZwfcD +1vKOZo0/PLsNyOO6EBTvPrAKQXKlkpl+qR2e72QhUySurVP4Ia8mvCGxIY20H73U +2X1Tu3iKs/QErtb85l3f10XVkNtdkFjJlilF1Tpen4ZWTG4Xph2Hw8pLJwCgtj1F ++Qw2oHtvgqMp3e6gtpPDNJUEAKuEQVqruNO1xoFDwvskOImBH2bLIPD+5Gw9JjGD +z/AI9h+BqNwmKrKqRH5m2QZVCPXBhA3zeCMYyMUr81jgSIbAxYz5uNKmJ+YjJ5n2 +ykKX5v5OeyjC6sfH19hV3R/dTDymLeR/Wv4gH7/RcbileqbJMkzVpKZe3PY8sb3y +u8GbBACDj6bbgFJ5egNDtovU1UiMXyz9sX+/ZiyZeXsn5aH4Z/aBuucxKorPNUiz +NoHqMrfvi9EfObAY5YLzZPG47XRKIOh0Ss/qFpOXMI7y7+5sM9D74u7sUUpNSEAf +xY5GvTs0vAccNaqZ1dlhhzLpDuhAF9SWlWXaqfiKfP/tkOjk77RTSVBDb3AgRGV2 +ZWxvcG1lbnQgR3JvdXAgKGh0dHA6Ly93d3cuaXBjb3Aub3JnLykgPGlwY29wLWRl +dmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD6IWQQTEQIAGQUCP30WIgQLBwMCAxUC +AwMWAgECHgECF4AACgkQWpntmEo7/Z6dAwCgqXmL3xxiA4J/AIvZDYy9Qx4V34kA +mgOLo6OaYw5vAlF5z6T3gNCpiAK7 +=/LRw +-----END PGP PUBLIC KEY BLOCK----- diff --git a/config/cfgroot/lang.pl b/config/cfgroot/lang.pl new file mode 100644 index 0000000000..8d2be61bed --- /dev/null +++ b/config/cfgroot/lang.pl @@ -0,0 +1,160 @@ +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# Copyright (c) 2002/08/23 Mark Wormgoor Split from header.pl +# +# $Id: lang.pl,v 1.1.2.11 2005/09/10 16:22:50 eoberlander Exp $ +# + +package Lang; +require 'CONFIG_ROOT/general-functions.pl'; +use strict; + +### A cache file to avoid long recalculation +$Lang::CacheLang = '/var/run/cache-lang.pl'; + +# When you want to add your own language strings/entries to the ipcop language file, +# you should create a file with ..pl into CONFIG_ROOT/addon-lang dir +# is free choosable but should be significant. An Example might be "myAddnName" +# is a mnemonic of the used language like en, de, it, nl etc. +# You can find a detailed list of possible mnemonic's in the file CONFIG_ROOT/langs/list +# A file could be named "VirtualHttpd.en.pl" for example. +# +# The file content has to start with (of course without the leading #): +# --------- CODE --------- +#%tr = (%tr, +# 'key1' => 'value', # add all your entries key/values here +# 'key2' => 'value' # and end with (of course without the leading #): +#); +# --------- CODE END--------- +# +# After you have copied all your files to CONFIG_ROOT/add-lang you have to run the +# script compilation: +# perl -e "require '/CONFIG_ROOT/lang.pl'; &Lang::BuildCacheLang" + + +### Initialize language +%Lang::tr = (); +my %settings = (); +&General::readhash("${General::swroot}/main/settings", \%settings); +reload($settings{'LANGUAGE'}); + +# language variable used by makegraphs script +our $language; +$language = $settings{'LANGUAGE'}; + +# +# Load requested language file from cachefile. If cachefile doesn't exist, build on the fly. +# (it is a developper options) +# +sub reload { + + my ($LG) = @_; + %Lang::tr = (); # start with a clean array + + # Use CacheLang if present & not empty. + if (-s "$Lang::CacheLang.$LG" ) { + ##fix: need to put a lock_shared on it in case rebuild is active ? + do "$Lang::CacheLang.$LG"; + #&General::log ("cachelang file used [$LG]"); + return; + } + + #&General::log("Building on the fly cachelang file for [$LG]"); + do "${General::swroot}/langs/en.pl"; + do "${General::swroot}/langs/$LG.pl" if ($LG ne 'en'); + + my $AddonDir = ${General::swroot}.'/addon-lang'; + + opendir (DIR, $AddonDir); + my @files = readdir (DIR); + closedir (DIR); + + # default is to load english first + foreach my $file ( grep (/.*\.en.pl$/,@files)) { + do "$AddonDir/$file"; + } + + # read again, overwriting 'en' with choosed lang + if ($LG ne 'en') { + foreach my $file (grep (/.*\.$LG\.pl$/,@files) ) { + do "$AddonDir/$file"; + } + } +} + +# +# Assume this procedure is called with enough privileges. +# Merge ipcop langage file + all other extension found in addon-lang +# to build a 'cachefile' for selected language +# +sub BuildUniqueCacheLang { + + my ($LG) = @_; + + # Make CacheLang empty so that it won't be used by Lang::reload + open (FILE, ">$Lang::CacheLang.$LG") or return 1; + flock (FILE, 2) or return 1; + close (FILE); + + # Load languages files + &Lang::reload ($LG); + + # Write the unique %tr=('key'=>'value') array + open (FILE, ">$Lang::CacheLang.$LG") or return 1; + flock (FILE, 2) or return 1; + print FILE '%tr=('; + foreach my $k ( keys %Lang::tr ){ + $Lang::tr{$k} =~ s/\'/\\\'/g; # quote ' => \' + print FILE "'$k' => '$Lang::tr{$k}',"; # key => value, + } + print FILE ');'; + close (FILE); + + # Make nobody:nobody file's owner + # Will work when called by root/rc.sysinit + chown (0,0,"$Lang::CacheLang.$LG"); + chmod (0004,"$Lang::CacheLang.$LG"); + return 0; +} + +# +# Switch Ipcop Language for each lang then call build cachelang +# +sub BuildCacheLang { + + my $AddonDir = ${General::swroot}.'/addon-lang'; + + # Correct permission in case addon-installer did not do it + opendir (DIR, $AddonDir); + my @files = readdir (DIR); + foreach my $file (@files) { + next if (($file eq '..') || ($file eq '.')); + chown (0,0,"$AddonDir/$file"); + chmod (0004,"$AddonDir/$file"); + } + closedir (DIR); + + my $selected = '';; + my $missed = ''; + my $error = 0; + + open (LANGS, "${General::swroot}/langs/list"); + while () { + ($selected) = split (':'); + if (BuildUniqueCacheLang ($selected) == 1) { + $missed = $selected; # will try latter. Can only be the current cachelang file locked + }; + } + close (LANGS); + + if ($missed) { # collision with current cache lang being used ? + $error = &BuildUniqueCacheLang ($missed); + } + + &General::log ("WARNING: cannot build cachelang file for [$missed].") if ($error); + return $error; +} +1; diff --git a/config/cfgroot/logging-settings b/config/cfgroot/logging-settings new file mode 100644 index 0000000000..e5ca09e6bb --- /dev/null +++ b/config/cfgroot/logging-settings @@ -0,0 +1,5 @@ +LOGVIEW_REVERSE=off +REMOTELOG_ADDR= +ENABLE_REMOTELOG=off +LOGWATCH_LEVEL=Low +LOGWATCH_KEEP=56 diff --git a/config/cfgroot/modem-defaults b/config/cfgroot/modem-defaults new file mode 100644 index 0000000000..aa91b09f56 --- /dev/null +++ b/config/cfgroot/modem-defaults @@ -0,0 +1,8 @@ +VALID=yes +PULSE_DIAL=ATDP +HANGUP=ATH0 +INIT=+++ATZ +SPEAKER_OFF=ATM0 +TIMEOUT=45 +SPEAKER_ON=ATM1 +TONE_DIAL=ATDT diff --git a/config/cfgroot/modem-settings b/config/cfgroot/modem-settings new file mode 100644 index 0000000000..aa91b09f56 --- /dev/null +++ b/config/cfgroot/modem-settings @@ -0,0 +1,8 @@ +VALID=yes +PULSE_DIAL=ATDP +HANGUP=ATH0 +INIT=+++ATZ +SPEAKER_OFF=ATM0 +TIMEOUT=45 +SPEAKER_ON=ATM1 +TONE_DIAL=ATDT diff --git a/config/cfgroot/oinkmaster.conf b/config/cfgroot/oinkmaster.conf new file mode 100644 index 0000000000..e52d89dc96 --- /dev/null +++ b/config/cfgroot/oinkmaster.conf @@ -0,0 +1,292 @@ +# $Id: oinkmaster.conf,v 1.1.2.2 2005/05/02 17:11:58 franck78 Exp $ # + +# Oinkmaster is a tool to update snort rules, which allow to conserve +# a particular setting even after a rules update. +# This file is a customised version for IPCop. +# Disabling/enabling a particular rule should be made in this file. +# In case you want to use some of the rules files commented out in +# standard ipcop /etc/snort/snort.conf : +# -comment out the corresponding skipfile in this oinkmaster.conf +# -uncomment the corresponding include in /etc/snort.conf +# -save snort settings to restart snort + + +################################################ +# General options you may want to change # +################################################ + + + +# The PATH to use during execution. If you prefer to use external +# binaries (i.e. use_external_bins=1, see below), tar and gzip must be +# found, and also wget if downloading via ftp, http or https. All with +# optional .exe suffix. If you're on Cygwin, make sure that the path +# contains the Cygwin binaries and not the native Win32 binaries or +# you will get problems. +# Assume UNIX style by default: +#path = /bin:/usr/bin:/usr/local/bin +path = /bin + +# Files in the archive(s) matching this regular expression will be +# checked for changes, and then updated or added if needed. +# All other files will be ignored. You can then choose to skip +# individual files by specifying the "skipfile" keyword below. +# Normally you shouldn't need to change this one. +update_files = \.rules$|\.config$|\.conf$|\.txt$|\.map$ + + +# Regexp of keywords that starts a snort rule. +# May be useful if you create your own ruletypes and want those +# lines to be regarded as rules as well. +# rule_actions = alert|drop|log|pass|reject|sdrop|activate|dynamic + + +####################################################################### +# Files to totally skip (i.e. never update or check for changes) # +# # +# Syntax: skipfile filename # +# or: skipfile filename1, filename2, filename3, ... # +####################################################################### + +# Ignore local.rules from the rules archive by default since we might +# have put some local rules in our own local.rules and we don't want it +# to get overwritten by the empty one from the archive after each +# update. +skipfile local.rules + +# The file deleted.rules contains rules that have been deleted from +# other files, so there is usually no point in updating it. +skipfile deleted.rules + +# Also skip snort.conf by default since we don't want to overwrite our +# own snort.conf if we have it in the same directory as the rules. If +# you have your own production copy of snort.conf in another directory, +# it may be really nice to check for changes in this file though, +# especially since variables are sometimes added or modified and +# new/old files are included/excluded. +skipfile snort.conf + +# You may want to consider ignoring threshold.conf for the same reasons +# as for snort.conf, i.e. if you customize it locally and don't want it +# to become overwritten by the default one. It may be better to put +# local thresholding/suppressing in some local file and still update +# and use the official one though, in case important stuff is added to +# it some day. We do update it by default, but it's your call. +# skipfile threshold.conf + +# If you update from multiple URLs at the same time you must ignore +# the sid-msg.map (and generate it yourself if you need one) as it's +# usually included in each rules tarball. See the FAQ for more info. +# skipfile sid-msg.map +skipfile web-attacks.rules +skipfile backdoor.rules +skipfile shellcode.rules +skipfile policy.rules +skipfile porn.rules +skipfile info.rules +skipfile icmp-info.rules +skipfile virus.rules +skipfile chat.rules +skipfile multimedia.rules +skipfile p2p.rules +skipfile experimental.rules + + +########################################################################## +# SIDs to modify after each update (only for the skilled/stupid/brave). # +# Don't use it unless you have to. There is nothing that stops you from # +# modifying rules in such ways that they become invalid or generally # +# break things. You have been warned. # +# If you just want to disable SIDs, please skip this section and have a # +# look at the "disablesid" keyword below. # +# # +# You may specify multiple modifysid directives for the same SID (they # +# will be processed in order of appearance), and you may also specify a # +# list of SIDs on which the substitution should be applied. # +# If the argument is in the form something.something it is regarded # +# as a filename and the substitution will apply on all rules in that # +# file. The wildcard ("*") can be used to apply the substitution on all # +# rules regardless of the SID or file. Please avoid using #comments # +# at the end of modifysid lines, they may confuse the parser in some # +# situations. # +# # +# Syntax: # +# modifysid SID "replacethis" | "withthis" # +# or: # +# modifysid SID1, SID2, SID3, ... "replacethis" | "withthis" # +# or: # +# modifysid file "replacethis" | "withthis" # +# or: # +# modifysid * "replacethis" | "withthis" # +# # +# The strings within the quotes will simply be passed to a # +# s/replacethis/withthis/ statement in Perl, so they must be valid # +# regular expressions. The strings are case-sensitive and only the first # +# occurrence will be replaced. If there are multiple occurrences you # +# want to replace, simply repeat the same modifysid line. # +# # +# If you specify a modifysid statement for a multi-line rule, Oinkmaster # +# will first translate the rule into a single-line version and then # +# perform the substitution, so you don't have to care about the trailing # +# backslashes and newlines. # +# # +# If you use variables in the substitution expression, it is strongly # +# recommended to always specify them like ${varname} instead of # +# $varname (like ${1} instead of $1 for example) to avoid parsing # +# confusion in some situations. Note that modifysid statements # +# will process both active and inactive (disabled) rules. # +# # +# You may want to check out README.templates and template-examples.conf # +# to find how you can simplify the modifysid usage by using templates. # +########################################################################## + +# Example to enable a rule (in this case SID 1325) that is disabled by +# default, by simply replacing leading "#alert" with "alert". +# (You should really use 'enablesid' for this though.) +# Oinkmaster removes whitespaces next to the leading "#" so you don't +# have to worry about that, but be careful about possible whitespace in +# other places when writing the regexps. +# modifysid 1325 "^#alert" | "alert" + +# You could also do this to enable it no matter what type of rule it is +# (alert, log, pass, etc). +# modifysid 1325 "^#" | "" + +# Example to add "tag" stuff to SID 1325. +# modifysid 1325 "sid:1325;" | "sid:1325; tag: host, src, 300, seconds;" + +# Example to make SID 1378 a 'drop' rule (valid if you're running +# Snort_inline). +# modifysid 1378 "^alert" | "drop" + +# Example to replace first occurrence of $EXTERNAL_NET with $HOME_NET +# in SID 302. Remember that the strings are regular expressions, so you +# must escape special characters like $. +# modifysid 302 "\$EXTERNAL_NET" | "\$HOME_NET" + +# You can also specify that a substitution should apply on multiple SIDs. +# modifysid 302,429,1821 "\$EXTERNAL_NET" | "\$HOME_NET" + +# You can take advantage of the fact that it's regular expressions and +# do more complex stuff. This example (for Snort_inline) adds a 'replace' +# statement to SID 1324 that replaces "/bin/sh" with "/foo/sh". +# modifysid 1324 "(content\s*:\s*"\/bin\/sh"\s*;)" | \ +# "${1} replace:"\/foo\/sh";" + +# If you for some reason would like to add a comment inside the actual +# rules file, like the reason why you disabled this rule, you can do +# like this (you would normally add such comments in oinkmaster.conf +# though). +# modifysid 1324 "(.+)" | "# 20020101: disabled this rule just for fun:\n#${1}" + +# Here is an example that is actually useful. Let's say you don't care +# about incoming welchia pings (detected by SID 483 at the time of +# writing) but you want to know when infected hosts on your network +# scans hosts on the outside. (Remember that watching for outgoing +# malicious packets is often just as important as watching for incoming +# ones, especially in this case.) The rule currently looks like +# "alert icmp $EXTERNAL_NET any -> $HOME_NET any ..." +# but we want to switch that so it becomes +# "alert icmp $HOME_NET any -> $EXTERNAL_NET any ...". +# Here is how it could be done. +# modifysid 483 \ +# "(.+) \$EXTERNAL_NET (.+) \$HOME_NET (.+)" | \ +# "${1} \$HOME_NET ${2} \$EXTERNAL_NET ${3}" + +# The wildcard (modifysid * ...) can be used to do all kinds of +# interesting things. The substitution expression will be applied on all +# matching rules. First, a silly example to replace "foo" with "bar" in +# all rules (that have the string "foo" in them, that is.) +# modifysid * "foo" | "bar" + +# If you for some reason don't want to use the stream preprocessor to +# match established streams, you may want to replace the 'flow' +# statement with 'flags:A+;' in all those rules. +# modifysid * "flow:[a-z,_ ]+;" | "flags:A+;" + +# Example to convert all rules of classtype attempted-admin to 'drop' +# rules (for Snort_inline only, obviously). +# modifysid * "^alert (.*classtype\s*:\s*attempted-admin)" | "drop ${1}" + +# This one will append some text to the 'msg' string for all rules that +# have the 'tag' keyword in them. +# modifysid * "(.*msg:\s*".+?)"(\s*;.+;\s*tag:.*)" | \ +# "${1}, going to tag this baby"${2}" + +# There may be times when you want to replace multiple occurrences of a +# certain keyword/string in a rule and not just the first one. To +# replace the first two occurrences of "foo" with "bar" in SID 100, +# simply repeat the modifysid statement: +# modifysid 100 "foo" | "bar" +# modifysid 100 "foo" | "bar" + +# Or you can even specify a SID list but repeat the same SID as many +# times as required, like: +# modifysid 100,100,100 "foo" | "bar" + +# Enable all rules in the file exploit.rules. +# modifysid exploit.rules "^#" | "" + +# Enable all rules in exploit.rules, icmp-info.rules and also SID 1171. +# modifysid exploit.rules, snmp.rules, 1171 "^#" | "" + + + +######################################################################## +# SIDs that we don't want to update. # +# If you for some reason don't want a specific rule to be updated # +# (e.g. you made local modifications to it and you never want to # +# update it and don't care about changes in the official version), you # +# can specify a "localsid" statement for it. This means that the old # +# version of the rule (i.e. the one in the rules file on your # +# harddrive) is always kept, regardless if the official version has # +# been updated. Please do not use this feature unless in special # +# cases as it's easy to end up with many signatures that aren't # +# maintained anymore. See the FAQ for details about this and hints # +# about better solutions regarding customization of rules. # +# # +# Syntax: localsid SID # +# or: localsid SID1, SID2, SID3, ... # +######################################################################## + +# Example to never update SID 1325. +# localsid 1325 + + + +######################################################################## +# SIDs to enable after each update. # +# Will simply remove all the leading '#' for a specified SID (if it's # +# a multi-line rule, the leading '#' for all lines are removed.) # +# These will be processed after all the modifysid and disablesid # +# statements. Using 'enablesid' on a rule that is not disabled is a # +# NOOP. # +# # +# Syntax: enablesid SID # +# or: enablesid SID1, SID2, SID3, ... # +######################################################################## + +# Example to enable SID 1325. +# enablesid 1325 + + + +######################################################################## +# SIDs to comment out, i.e. disable, after each update by placing a # +# '#' in front of the rule (if it's a multi-line rule, it will be put # +# in front of all lines). # +# # +# Syntax: disablesid SID # +# or: disablesid SID1, SID2, SID3, ... # +######################################################################## + +# You can specify one SID per line. +# disablesid 1 +# disablesid 2 +# disablesid 3 + +# And also as comma-separated lists. +# disablesid 4,5,6 + +# It's a good idea to also add comment about why you disable the sid: +# disablesid 1324 # 20020101: disabled this SID just because I can diff --git a/config/cfgroot/protocols.pl b/config/cfgroot/protocols.pl new file mode 100644 index 0000000000..d7ed2db475 --- /dev/null +++ b/config/cfgroot/protocols.pl @@ -0,0 +1,162 @@ +# Protocols Data File +# +# This file is part of the IPCop Firewall. +# +# IPCop is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# IPCop is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with IPCop; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# (c) The IPCop Team +# +# $Id: protocols.pl,v 1.2.2.1 2005/01/26 12:23:20 riddles Exp $ +# +# Generated from /etc/protocols using: +# cat /etc/protocols | grep -ve "^#" | grep -v "^$" | \ +# awk '{ print "\"" $1 "\" => \"" $2 "\","}' +# +# Code supplied by Mark Wormgroor +# + +package Protocols; + +%protocols = ( +"ip" => "0", +"icmp" => "1", +"igmp" => "2", +"ggp" => "3", +"ipencap" => "4", +"st" => "5", +"tcp" => "6", +"cbt" => "7", +"egp" => "8", +"igp" => "9", +"bbn-rcc" => "10", +"nvp" => "11", +"pup" => "12", +"argus" => "13", +"emcon" => "14", +"xnet" => "15", +"chaos" => "16", +"udp" => "17", +"mux" => "18", +"dcn" => "19", +"hmp" => "20", +"prm" => "21", +"xns-idp" => "22", +"trunk-1" => "23", +"trunk-2" => "24", +"leaf-1" => "25", +"leaf-2" => "26", +"rdp" => "27", +"irtp" => "28", +"iso-tp4" => "29", +"netblt" => "30", +"mfe-nsp" => "31", +"merit-inp" => "32", +"sep" => "33", +"3pc" => "34", +"idpr" => "35", +"xtp" => "36", +"ddp" => "37", +"idpr-cmtp" => "38", +"tp++" => "39", +"il" => "40", +"ipv6" => "41", +"sdrp" => "42", +"ipv6-route" => "43", +"ipv6-frag" => "44", +"idrp" => "45", +"rsvp" => "46", +"gre" => "47", +"mhrp" => "48", +"bna" => "49", +"ipv6-crypt" => "50", +"ipv6-auth" => "51", +"i-nlsp" => "52", +"swipe" => "53", +"narp" => "54", +"mobile" => "55", +"tlsp" => "56", +"skip" => "57", +"ipv6-icmp" => "58", +"ipv6-nonxt" => "59", +"ipv6-opts" => "60", +"cftp" => "62", +"sat-expak" => "64", +"kryptolan" => "65", +"rvd" => "66", +"ippc" => "67", +"sat-mon" => "69", +"visa" => "70", +"ipcv" => "71", +"cpnx" => "72", +"cphb" => "73", +"wsn" => "74", +"pvp" => "75", +"br-sat-mon" => "76", +"sun-nd" => "77", +"wb-mon" => "78", +"wb-expak" => "79", +"iso-ip" => "80", +"vmtp" => "81", +"secure-vmtp" => "82", +"vines" => "83", +"ttp" => "84", +"nsfnet-igp" => "85", +"dgp" => "86", +"tcf" => "87", +"eigrp" => "88", +"ospf" => "89", +"sprite-rpc" => "90", +"larp" => "91", +"mtp" => "92", +"ax.25" => "93", +"ipip" => "94", +"micp" => "95", +"scc-sp" => "96", +"etherip" => "97", +"encap" => "98", +"gmtp" => "100", +"ifmp" => "101", +"pnni" => "102", +"pim" => "103", +"aris" => "104", +"scps" => "105", +"qnx" => "106", +"a/n" => "107", +"ipcomp" => "108", +"snp" => "109", +"compaq-peer" => "110", +"ipx-in-ip" => "111", +"vrrp" => "112", +"pgm" => "113", +"l2tp" => "115", +"ddx" => "116", +"iatp" => "117", +"stp" => "118", +"srp" => "119", +"uti" => "120", +"smp" => "121", +"sm" => "122", +"ptp" => "123", +"isis" => "124", +"fire" => "125", +"crtp" => "126", +"crdup" => "127", +"sscopmce" => "128", +"iplt" => "129", +"sps" => "130", +"pipe" => "131", +"sctp" => "132", +"fc" => "133", +); diff --git a/config/cfgroot/proxy-acl b/config/cfgroot/proxy-acl new file mode 100644 index 0000000000..ca1ccdfb2b --- /dev/null +++ b/config/cfgroot/proxy-acl @@ -0,0 +1,49 @@ +# Do not modify '/var/ipcop/proxy/squid.conf' directly since any changes +# you make will be overwritten whenever you resave proxy settings using the +# web interface! Instead, modify the file '/var/ipcop/proxy/acl' and then +# restart squid using the web interface. Changes made to the 'acl' file +# will propagate to the 'squid.conf' file at that time. +# [Scott Tregear, 22 Feb 2005] + +# Uncomment the following line to enable logging of User-Agent header: +#useragent_log /var/log/squid/user_agent.log + +# Uncomment the following line to enable logging of Referer header: +#referer_log /var/log/squid/referer.log + +acl all src 0.0.0.0/0.0.0.0 +acl localhost src 127.0.0.1/255.255.255.255 +acl SSL_ports port 443 563 +acl Safe_ports port 80 # http +acl Safe_ports port 21 # ftp +acl Safe_ports port 443 563 # https, snews +acl Safe_ports port 70 # gopher +acl Safe_ports port 210 # wais +acl Safe_ports port 1025-65535 # unregistered ports +acl Safe_ports port 280 # http-mgmt +acl Safe_ports port 488 # gss-http +acl Safe_ports port 591 # filemaker +acl Safe_ports port 777 # multiling http +acl Safe_ports port __PROXY_PORT__ # Squid port (for icons) + +acl IPCop_http port 81 +acl IPCop_https port 445 +acl IPCop_ips dst __GREEN_IP__ __BLUE_IP__ +acl IPCop_networks src __GREEN_NET__ __BLUE_NET__ +acl CONNECT method CONNECT + +##Access to squid: +#local machine, no restriction +http_access allow localhost + +#GUI admin if local machine connects +http_access allow IPCop_ips IPCop_networks IPCop_http +http_access allow CONNECT IPCop_ips IPCop_networks IPCop_https + +#Deny not web services +http_access deny !Safe_ports +http_access deny CONNECT !SSL_ports + +#Finally allow IPCop_networks clients +http_access allow IPCop_networks +http_access deny all diff --git a/config/cfgroot/time-settings b/config/cfgroot/time-settings new file mode 100644 index 0000000000..2f74f9ccc9 --- /dev/null +++ b/config/cfgroot/time-settings @@ -0,0 +1,7 @@ +NTP_ADDR_2=pool.ntp.org +UPDATE_PERIOD=daily +UPDATE_VALUE=1 +UPDATE_METHOD=manually +ENABLENTP=off +NTP_ADDR_1=pool.ntp.org +VALID=yes diff --git a/config/cfgroot/xtaccess-config b/config/cfgroot/xtaccess-config new file mode 100644 index 0000000000..74019ef20d --- /dev/null +++ b/config/cfgroot/xtaccess-config @@ -0,0 +1 @@ +tcp,0.0.0.0/0,113,on,0.0.0.0 diff --git a/config/cron/CVS/Entries b/config/cron/CVS/Entries new file mode 100644 index 0000000000..66dcc4b9f1 --- /dev/null +++ b/config/cron/CVS/Entries @@ -0,0 +1,2 @@ +/crontab/1.9.2.5/Tue Aug 16 05:39:23 2005//TIPCOP_v1_4_0 +D diff --git a/config/cron/CVS/Repository b/config/cron/CVS/Repository new file mode 100644 index 0000000000..6569308599 --- /dev/null +++ b/config/cron/CVS/Repository @@ -0,0 +1 @@ +ipcop/config/cron diff --git a/config/cron/CVS/Root b/config/cron/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/cron/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/cron/CVS/Tag b/config/cron/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/cron/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/cron/crontab b/config/cron/crontab new file mode 100644 index 0000000000..2fe0eb5ec5 --- /dev/null +++ b/config/cron/crontab @@ -0,0 +1,36 @@ +# +# $Id: crontab,v 1.9.2.5 2005/08/16 05:39:23 gespinasse Exp $ +# +SHELL=/bin/bash +PATH=/sbin:/bin:/usr/sbin:/usr/bin +MAILTO=root +HOME=/ + +# Log rotation +01 * * * * /usr/sbin/logrotate /etc/logrotate.conf + +# Backup logs to flashdisk +01 * * * * [ -f "/etc/FLASH" ] && /etc/rc.d/rc.flash.down + +# Set time +*/5 * * * * /usr/local/bin/timecheck > /dev/null 2>&1 + +# Summarize ip accounting info: +2 1 * * * /usr/sbin/ipacsum -r -H `/bin/hostname` -t "the day 2 days ago" >/dev/null +3 1 * * 0 /usr/sbin/ipacsum -r -H `/bin/hostname` -t "the week 4 weeks ago" >/dev/null +4 1 1 2 * /usr/sbin/ipacsum -r -H `/bin/hostname` -t "the year 2 years ago" >/dev/null + +# Make some nice graphs +*/5 * * * * /usr/local/bin/makegraphs >/dev/null + +# Force update the dynamic dns registration once a week +# Force update even if IP has not changed once a month if 'minimize update' selected in GUI +# to avoid account declared as dead +*/5 * * * * [ -f "/var/ipcop/red/active" ] && /usr/local/bin/setddns.pl +9 2 * * 0 [ -f "/var/ipcop/red/active" ] && /usr/local/bin/setddns.pl -f +3 2 1 * * [ -f "/var/ipcop/red/active" ] && /usr/local/bin/setddns.pl -f -m + +# Logwatch +01 0 * * * /usr/local/bin/logwatch > /var/log/logwatch/`date -I -d yesterday`; \ + LOGWATCH_KEEP=$(sed -ne 's/^LOGWATCH_KEEP=\([0-9]\+\)$/\1/p' /var/ipcop/logging/settings); \ + find /var/log/logwatch/ -ctime +${LOGWATCH_KEEP=56} -exec rm -f '{}' ';' diff --git a/config/etc/CVS/Entries b/config/etc/CVS/Entries new file mode 100644 index 0000000000..bbfe741452 --- /dev/null +++ b/config/etc/CVS/Entries @@ -0,0 +1,18 @@ +/certparams/1.3/Thu Dec 11 11:15:33 2003//TIPCOP_v1_4_0 +/fstab/1.4/Mon Mar 1 17:23:47 2004//TIPCOP_v1_4_0 +/group/1.1.2.1/Sun Jun 20 14:57:21 2004//TIPCOP_v1_4_0 +/host.conf/1.1/Thu Dec 11 11:15:34 2003//TIPCOP_v1_4_0 +/inittab/1.6.2.1/Tue Jan 24 15:25:35 2006//TIPCOP_v1_4_0 +/inputrc/1.1/Thu Dec 11 11:15:34 2003//TIPCOP_v1_4_0 +/ld.so.conf/1.2/Sun Dec 28 19:54:21 2003//TIPCOP_v1_4_0 +/logrotate.conf/1.4.2.4/Sun Oct 16 12:36:14 2005//TIPCOP_v1_4_0 +/mime.types/1.1.1.1/Tue Nov 27 08:09:53 2001//TIPCOP_v1_4_0 +/modules.conf/1.6.2.1/Fri Mar 19 07:34:38 2004//TIPCOP_v1_4_0 +/nsswitch.conf/1.1/Thu Dec 11 11:15:34 2003//TIPCOP_v1_4_0 +/passwd/1.3.2.1/Sun Jun 20 14:57:21 2004//TIPCOP_v1_4_0 +/profile/1.3.2.1/Tue Mar 9 19:19:58 2004//TIPCOP_v1_4_0 +/resolv.conf/1.1.1.1/Tue Nov 27 08:09:52 2001//TIPCOP_v1_4_0 +/securetty/1.1.1.1/Tue Nov 27 08:09:52 2001//TIPCOP_v1_4_0 +/sysctl.conf/1.2.2.1/Mon May 10 08:06:25 2004//TIPCOP_v1_4_0 +/syslog.conf/1.3.2.2/Thu Aug 12 22:48:53 2004//TIPCOP_v1_4_0 +D diff --git a/config/etc/CVS/Repository b/config/etc/CVS/Repository new file mode 100644 index 0000000000..8a34a49903 --- /dev/null +++ b/config/etc/CVS/Repository @@ -0,0 +1 @@ +ipcop/config/etc diff --git a/config/etc/CVS/Root b/config/etc/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/etc/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/etc/CVS/Tag b/config/etc/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/etc/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/etc/certparams b/config/etc/certparams new file mode 100644 index 0000000000..9b25cda604 --- /dev/null +++ b/config/etc/certparams @@ -0,0 +1,9 @@ +. +. +. +. +. +HOSTNAME +. + + diff --git a/config/etc/fstab b/config/etc/fstab new file mode 100644 index 0000000000..ba5a7f3b69 --- /dev/null +++ b/config/etc/fstab @@ -0,0 +1,8 @@ +# +# $Id: fstab,v 1.4 2006/02/11 15:42 ms Exp $ +# +/dev/harddisk1 /boot ext3 nodev,nosuid,noatime,data=journal 1 2 +/dev/harddisk2 /var/log ext3 nodev,nosuid,noatime,data=journal 1 2 +/dev/harddisk4 / ext3 noatime 1 1 +none /proc proc defaults 0 0 +none /dev/pts devpts gid=5,mode=620 0 0 diff --git a/config/etc/group b/config/etc/group new file mode 100644 index 0000000000..65a91368f8 --- /dev/null +++ b/config/etc/group @@ -0,0 +1,30 @@ +root:x:0:root +bin:x:1:root,bin,daemon +daemon:x:2:root,bin,daemon +sys:x:3:root,bin +tty:x:5: +disk:x:6:root +lp:x:7:daemon +mem:x:8: +kmem:x:9: +wheel:x:10:root +mail:x:12:mail +uucp:x:14: +dialout:x:16: +floppy:x:19: +tape:x:20: +utmp:x:22: +squid:x:23: +ntp:x:38: +dip:x:40: +lock:x:54: +sshd:x:74: +pcap:x:77: +nobody:x:99: +users:x:100: +snort:x:101: +logwatch:x:102: +dnsmasq:x:103: +cron:x:104: +syslogd:x:105: +klogd:x:106: diff --git a/config/etc/host.conf b/config/etc/host.conf new file mode 100644 index 0000000000..5cdde5e527 --- /dev/null +++ b/config/etc/host.conf @@ -0,0 +1 @@ +order hosts,bind diff --git a/config/etc/inittab b/config/etc/inittab new file mode 100644 index 0000000000..dfa8945451 --- /dev/null +++ b/config/etc/inittab @@ -0,0 +1,23 @@ +# +# $Id: inittab,v 1.6.2.1 2006/01/24 15:25:35 franck78 Exp $ +# +id:3:initdefault: + +l0:0:wait:/etc/rc.d/rc.halt halt +l6:6:wait:/etc/rc.d/rc.halt reboot + +si::sysinit:/etc/rc.d/rc.sysinit + +# Trap CTRL-ALT-DELETE +ca::ctrlaltdel:/sbin/shutdown -r now + +# Run gettys in standard runlevels +1:2345:respawn:/sbin/mingetty tty1 +2:2345:respawn:/sbin/mingetty tty2 +3:2345:respawn:/sbin/mingetty tty3 +4:2345:respawn:/sbin/mingetty tty4 +5:2345:respawn:/sbin/mingetty tty5 +6:2345:respawn:/sbin/mingetty tty6 + +# Going single user mode for maintenance +xx:S1:respawn:/bin/bash diff --git a/config/etc/inputrc b/config/etc/inputrc new file mode 100644 index 0000000000..f286926856 --- /dev/null +++ b/config/etc/inputrc @@ -0,0 +1,33 @@ +# do not bell on tab-completion +#set bell-style none + +set meta-flag on +set input-meta on +set convert-meta off +set output-meta on + +$if mode=emacs + +# for linux console and RH/Debian xterm +"\e[1~": beginning-of-line +"\e[4~": end-of-line +"\e[5~": beginning-of-history +"\e[6~": end-of-history +"\e[3~": delete-char +"\e[2~": quoted-insert +"\e[5C": forward-word +"\e[5D": backward-word +"\e\e[C": forward-word +"\e\e[D": backward-word + +# for rxvt +"\e[8~": end-of-line + +# for non RH/Debian xterm, can't hurt for RH/DEbian xterm +"\eOH": beginning-of-line +"\eOF": end-of-line + +# for freebsd console +"\e[H": beginning-of-line +"\e[F": end-of-line +$endif diff --git a/config/etc/ld.so.conf b/config/etc/ld.so.conf new file mode 100644 index 0000000000..75451432cb --- /dev/null +++ b/config/etc/ld.so.conf @@ -0,0 +1,3 @@ +# Begin /etc/ld.so.conf + +# End /etc/ld.so.conf diff --git a/config/etc/logrotate.conf b/config/etc/logrotate.conf new file mode 100644 index 0000000000..d4209369d0 --- /dev/null +++ b/config/etc/logrotate.conf @@ -0,0 +1,75 @@ +# rotate log files weekly +weekly + +# keep 52 weeks worth of backlogs +rotate 52 + +# create new (empty) log files after rotating old ones +create + +# uncomment this if you want your log files compressed +compress + +# wtmp +/var/log/wtmp { + weekly + create 0664 root utmp + rotate 1 +} + +/var/log/httpd/access_log /var/log/httpd/error_log /var/log/httpd/ssl_request_log /var/log/httpd/ssl_engine_log { + missingok + sharedscripts + postrotate + /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true + endscript +} + +/var/log/snort/alert { + weekly + copytruncate + compress + ifempty + missingok + postrotate + /usr/bin/find /var/log/snort -path '/var/log/snort/[0-9]*' -prune -exec /bin/rm -rf {} \; + /usr/bin/find /var/log/snort -name 'snort.log.*' -mtime +28 -exec /bin/rm -rf {} \; + /usr/local/bin/restartsnort + endscript +} + +/var/log/squid/access.log /var/log/squid/user_agent.log /var/log/squid/referer.log { + weekly + copytruncate + ifempty + missingok +} + +/var/log/squid/cache.log { + weekly + rotate 3 + copytruncate + compress + missingok +} + +/var/log/squid/store.log { + weekly + rotate 3 + copytruncate + compress + missingok + postrotate + /bin/chmod -R ugo+rX /var/log/squid + /usr/sbin/squid -k rotate + endscript +} + +/var/log/messages /var/log/boot.log /var/log/dhcpcd.log { + create 664 root syslogd + sharedscripts + ifempty + postrotate + /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true + endscript +} diff --git a/config/etc/mime.types b/config/etc/mime.types new file mode 100644 index 0000000000..bf088b0103 --- /dev/null +++ b/config/etc/mime.types @@ -0,0 +1,277 @@ +# This is the default mime.types file from the Apache web server distribution + +# This file controls what Internet media types are sent to the client for +# given file extension(s). Sending the correct media type to the client +# is important so they know how to handle the content of the file. +# Extra types can either be added here or by using an AddType directive +# in your config files. For more information about Internet media types, +# please read RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type +# registry is at . + +# MIME type Extension +application/EDI-Consent +application/EDI-X12 +application/EDIFACT +application/activemessage +application/andrew-inset ez +application/applefile +application/atomicmail +application/cals-1840 +application/commonground +application/cybercash +application/dca-rft +application/dec-dx +application/eshop +application/hyperstudio +application/iges +application/mac-binhex40 hqx +application/mac-compactpro cpt +application/macwriteii +application/marc +application/mathematica +application/msword doc +application/news-message-id +application/news-transmission +application/octet-stream bin dms lha lzh exe class +application/oda oda +application/pdf pdf +application/pgp-encrypted +application/pgp-keys +application/pgp-signature +application/pkcs10 +application/pkcs7-mime +application/pkcs7-signature +application/postscript ai eps ps +application/prs.alvestrand.titrax-sheet +application/prs.cww +application/prs.nprend +application/remote-printing +application/riscos +application/rtf rtf +application/set-payment +application/set-payment-initiation +application/set-registration +application/set-registration-initiation +application/sgml +application/sgml-open-catalog +application/slate +application/smil smi smil +application/vemmi +application/vnd.3M.Post-it-Notes +application/vnd.FloGraphIt +application/vnd.acucobol +application/vnd.anser-web-certificate-issue-initiation +application/vnd.anser-web-funds-transfer-initiation +application/vnd.audiograph +application/vnd.businessobjects +application/vnd.claymore +application/vnd.comsocaller +application/vnd.dna +application/vnd.dxr +application/vnd.ecdis-update +application/vnd.ecowin.chart +application/vnd.ecowin.filerequest +application/vnd.ecowin.fileupdate +application/vnd.ecowin.series +application/vnd.ecowin.seriesrequest +application/vnd.ecowin.seriesupdate +application/vnd.enliven +application/vnd.epson.salt +application/vnd.fdf +application/vnd.ffsns +application/vnd.framemaker +application/vnd.fujitsu.oasys +application/vnd.fujitsu.oasys2 +application/vnd.fujitsu.oasys3 +application/vnd.fujitsu.oasysgp +application/vnd.fujitsu.oasysprs +application/vnd.fujixerox.docuworks +application/vnd.hp-HPGL +application/vnd.hp-PCL +application/vnd.hp-PCLXL +application/vnd.hp-hps +application/vnd.ibm.MiniPay +application/vnd.ibm.modcap +application/vnd.intercon.formnet +application/vnd.intertrust.digibox +application/vnd.intertrust.nncp +application/vnd.is-xpr +application/vnd.japannet-directory-service +application/vnd.japannet-jpnstore-wakeup +application/vnd.japannet-payment-wakeup +application/vnd.japannet-registration +application/vnd.japannet-registration-wakeup +application/vnd.japannet-setstore-wakeup +application/vnd.japannet-verification +application/vnd.japannet-verification-wakeup +application/vnd.koan +application/vnd.lotus-1-2-3 +application/vnd.lotus-approach +application/vnd.lotus-freelance +application/vnd.lotus-organizer +application/vnd.lotus-screencam +application/vnd.lotus-wordpro +application/vnd.meridian-slingshot +application/vnd.mif mif +application/vnd.minisoft-hp3000-save +application/vnd.mitsubishi.misty-guard.trustweb +application/vnd.ms-artgalry +application/vnd.ms-asf +application/vnd.ms-excel +application/vnd.ms-powerpoint ppt +application/vnd.ms-project +application/vnd.ms-tnef +application/vnd.ms-works +application/vnd.music-niff +application/vnd.musician +application/vnd.netfpx +application/vnd.noblenet-directory +application/vnd.noblenet-sealer +application/vnd.noblenet-web +application/vnd.novadigm.EDM +application/vnd.novadigm.EDX +application/vnd.novadigm.EXT +application/vnd.osa.netdeploy +application/vnd.powerbuilder6 +application/vnd.powerbuilder6-s +application/vnd.rapid +application/vnd.seemail +application/vnd.shana.informed.formtemplate +application/vnd.shana.informed.interchange +application/vnd.shana.informed.package +application/vnd.street-stream +application/vnd.svd +application/vnd.swiftview-ics +application/vnd.truedoc +application/vnd.visio +application/vnd.webturbo +application/vnd.wrq-hp3000-labelled +application/vnd.wt.stf +application/vnd.xara +application/vnd.yellowriver-custom-menu +application/wita +application/wordperfect5.1 +application/x-bcpio bcpio +application/x-bzip2 bz2 +application/x-cdlink vcd +application/x-chess-pgn pgn +application/x-compress +application/x-cpio cpio +application/x-csh csh +application/x-director dcr dir dxr +application/x-dvi dvi +application/x-futuresplash spl +application/x-gtar gtar +application/x-gzip gz tgz +application/x-hdf hdf +application/x-javascript js +application/x-koan skp skd skt skm +application/x-latex latex +application/x-netcdf nc cdf +# The standard is that rpm is audio/x-pn-realaudio-plugin... oh well... +application/x-rpm rpm +application/x-sh sh +application/x-shar shar +application/x-shockwave-flash swf +application/x-stuffit sit +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl tcl +application/x-tex tex +application/x-texinfo texinfo texi +application/x-troff t tr roff +application/x-troff-man man +application/x-troff-me me +application/x-troff-ms ms +application/x-ustar ustar +application/x-wais-source src +application/x400-bp +application/xml +application/zip zip +audio/32kadpcm +audio/basic au snd +audio/midi mid midi kar +audio/mpeg mpga mp2 mp3 +audio/vnd.qcelp +audio/x-aiff aif aiff aifc +audio/x-pn-realaudio ram rm +audio/x-realaudio ra +audio/x-wav wav +chemical/x-pdb pdb xyz +image/cgm +image/g3fax +image/gif gif +image/ief ief +image/jpeg jpeg jpg jpe +image/naplps +image/png png +image/prs.btif +image/tiff tiff tif +image/vnd.dwg +image/vnd.dxf +image/vnd.fpx +image/vnd.net-fpx +image/vnd.svf +image/vnd.xiff +image/x-cmu-raster ras +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd +message/delivery-status +message/disposition-notification +message/external-body +message/http +message/news +message/partial +message/rfc822 +model/iges igs iges +model/mesh msh mesh silo +model/vnd.dwf +model/vrml wrl vrml +multipart/alternative +multipart/appledouble +multipart/byteranges +multipart/digest +multipart/encrypted +multipart/form-data +multipart/header-set +multipart/mixed +multipart/parallel +multipart/related +multipart/report +multipart/signed +multipart/voice-message +text/css css +text/directory +text/enriched +text/plain asc txt +text/prs.lines.tag +text/rfc822-headers +text/richtext rtx +text/rtf rtf +text/sgml sgml sgm +text/tab-separated-values tsv +text/uri-list +text/vnd.abc +text/vnd.flatland.3dml +text/vnd.fmi.flexstor +text/vnd.in3d.3dml +text/vnd.in3d.spot +text/vnd.latex-z +text/x-setext etx +text/xml xml +video/mpeg mpeg mpg mpe +video/quicktime qt mov +video/vnd.motorola.video +video/vnd.motorola.videop +video/vnd.vivo +video/x-msvideo avi +video/x-sgi-movie movie +x-conference/x-cooltalk ice +text/html html htm diff --git a/config/etc/modules.conf b/config/etc/modules.conf new file mode 100644 index 0000000000..ebf07eb781 --- /dev/null +++ b/config/etc/modules.conf @@ -0,0 +1,24 @@ +# USB HID Settings +above hid keybdev + +# ISDN Settings +alias char-major-43 hisax +alias char-major-44 hisax +alias char-major-45 hisax +alias ippp0 off +alias ippp1 off + +# PPP Settings +alias char-major-108 ppp_generic +alias /dev/ppp ppp_generic +alias tty-ldisc-3 ppp_async +alias tty-ldisc-13 n_hdlc +alias tty-ldisc-14 ppp_synctty +alias ppp-compress-21 bsd_comp +alias ppp-compress-24 ppp_deflate +alias ppp-compress-26 ppp_deflate +alias net-pf-8 atm +alias net-pf-24 pppoe +alias char-major-144 pppox +alias char-major-166 acm + diff --git a/config/etc/nsswitch.conf b/config/etc/nsswitch.conf new file mode 100644 index 0000000000..7d86691543 --- /dev/null +++ b/config/etc/nsswitch.conf @@ -0,0 +1,19 @@ +# Begin /etc/nsswitch.conf + +passwd: files +group: files +shadow: files + +publickey: files + +hosts: files dns +networks: files + +protocols: db files +services: db files +ethers: db files +rpc: db files + +netgroup: db files + +# End /etc/nsswitch.conf diff --git a/config/etc/passwd b/config/etc/passwd new file mode 100644 index 0000000000..b570f33c56 --- /dev/null +++ b/config/etc/passwd @@ -0,0 +1,14 @@ +root:x:0:0:root:/root:/bin/bash +bin:x:1:1:bin:/bin:/bin/false +daemon:x:2:2:daemon:/sbin:/bin/false +mail:x:8:12:mail:/var/spool/mail:/bin/false +squid:x:23:23:ftp:/var/spool/squid:/bin/false +ntp:x:38:38::/etc/ntp:/bin/false +sshd:x:74:74:sshd:/var/empty:/bin/false +nobody:x:99:99:Nobody:/home/nobody:/bin/false +snort:x:100:101:ftp:/var/log/snort:/bin/false +logwatch:x:102:102::/var/log/logwatch:/bin/false +dnsmasq:x:103:103::/:/bin/false +cron:x:104:104::/:/bin/false +syslogd:x:105:105:/var/empty:/bin/false +klogd:x:106:106:/var/empty:/bin/false diff --git a/config/etc/profile b/config/etc/profile new file mode 100644 index 0000000000..0066845989 --- /dev/null +++ b/config/etc/profile @@ -0,0 +1,47 @@ +# /etc/bashrc + +umask 022 +unset i + +# are we an interactive shell? +if [ "$PS1" ]; then + if [ -x /usr/bin/tput ]; then + if [ "x`tput kbs`" != "x" ]; then # We can't do this with "dumb" terminal + stty erase `tput kbs` + elif [ -x /usr/bin/wc ]; then + if [ "`tput kbs|wc -c `" -gt 0 ]; then # We can't do this with "dumb" terminal + stty erase `tput kbs` + fi + fi + fi +fi + +# Path manipulation +PATH="/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin" + +# No core files by default +ulimit -S -c 0 > /dev/null 2>&1 + +USER=`id -un` +LOGNAME=$USER + +HOSTNAME=`/bin/hostname` +HISTSIZE=250 + +if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then + INPUTRC=/etc/inputrc +fi + +export PATH USER LOGNAME HOSTNAME HISTSIZE INPUTRC + +# LS Colors +alias dir='ls' +alias ll='ls -l --color=tty' +alias ls='ls --color=tty' + +# IPCop language settings +LANG=en_US.utf8 +PS1='\[\033[1;33m\]\u\[\033[1;37m\]@\[\033[1;32m\]\h\[\033[1;37m\]:\[\033[1;31m\]\w \[\033[1;36m\]\$ \[\033[0m\]' +echo -n -e '\033%G' + +export LANG PS1 diff --git a/config/etc/resolv.conf b/config/etc/resolv.conf new file mode 100644 index 0000000000..bbc8559cd5 --- /dev/null +++ b/config/etc/resolv.conf @@ -0,0 +1 @@ +nameserver 127.0.0.1 diff --git a/config/etc/securetty b/config/etc/securetty new file mode 100644 index 0000000000..f176d0469d --- /dev/null +++ b/config/etc/securetty @@ -0,0 +1,22 @@ +tty1 +tty2 +tty3 +tty4 +tty5 +tty6 +ttyp0 +ttyp1 +ttyp2 +ttyp3 +ttyp4 +ttyp5 +ttyp6 +ttyp7 +ttyp8 +ttyp9 +ttypa +ttypb +ttypc +ttypd +ttype +ttypf diff --git a/config/etc/sysctl.conf b/config/etc/sysctl.conf new file mode 100644 index 0000000000..bcf90e86fd --- /dev/null +++ b/config/etc/sysctl.conf @@ -0,0 +1,24 @@ +net.ipv4.ip_forward = 1 +net.ipv4.ip_dynaddr = 1 +net.ipv4.icmp_echo_ignore_broadcasts = 1 +net.ipv4.icmp_ignore_bogus_error_responses = 1 + +net.ipv4.tcp_sack = 0 +net.ipv4.tcp_timestamps = 0 +net.ipv4.tcp_syncookies = 1 +net.ipv4.tcp_fin_timeout = 30 +net.ipv4.tcp_window_scaling = 0 +net.ipv4.tcp_syn_retries = 3 +net.ipv4.tcp_synack_retries = 3 + +net.ipv4.conf.default.rp_filter = 0 +net.ipv4.conf.default.accept_redirects = 0 +net.ipv4.conf.default.accept_source_route = 0 +net.ipv4.conf.default.log_martians = 1 + +net.ipv4.conf.all.rp_filter = 0 +net.ipv4.conf.all.accept_redirects = 0 +net.ipv4.conf.all.accept_source_route = 0 +net.ipv4.conf.all.log_martians = 1 + +kernel.printk = 1 4 1 7 diff --git a/config/etc/syslog.conf b/config/etc/syslog.conf new file mode 100644 index 0000000000..6ff65062d2 --- /dev/null +++ b/config/etc/syslog.conf @@ -0,0 +1,20 @@ +# Log all kernel messages to the console. +# Logging much else clutters up the screen. +#kern.* /dev/console + +# Log anything (except mail) of level info or higher. +# Don't log private authentication messages! +# local0.* any dhcpcd log (even debug) in messages +daemon.*;local0.*;local2.*;*.info;mail.none;authpriv.*;cron.* /var/log/messages + +# Everybody gets emergency messages +*.emerg * + +# Save boot messages also to boot.log +local7.* /var/log/boot.log + +# Display logs on tty12 +*.* /dev/tty12 + +# Optionally log to a remote host +#*.* @hostname.domain diff --git a/config/grub/CVS/Entries b/config/grub/CVS/Entries new file mode 100644 index 0000000000..2973b9a8da --- /dev/null +++ b/config/grub/CVS/Entries @@ -0,0 +1,4 @@ +/grub.conf/1.5.2.5/Fri Aug 27 09:59:56 2004//TIPCOP_v1_4_0 +/ipcop.xpm.gz/1.4/Fri Feb 6 20:58:18 2004//TIPCOP_v1_4_0 +/scsigrub.conf/1.5.2.5/Fri Aug 27 09:59:56 2004//TIPCOP_v1_4_0 +D diff --git a/config/grub/CVS/Repository b/config/grub/CVS/Repository new file mode 100644 index 0000000000..84852ce6dc --- /dev/null +++ b/config/grub/CVS/Repository @@ -0,0 +1 @@ +ipcop/config/grub diff --git a/config/grub/CVS/Root b/config/grub/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/grub/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/grub/CVS/Tag b/config/grub/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/grub/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/grub/grub.conf b/config/grub/grub.conf new file mode 100644 index 0000000000..7f2d1777fd --- /dev/null +++ b/config/grub/grub.conf @@ -0,0 +1,21 @@ +timeout 5 +default saved +foreground = 16064e +background = ffffff +splashimage (hd0,0)/grub/ipcop.xpm.gz +title IPFire + root (hd0,0) + kernel /vmlinuz root=ROOT panic=10 acpi=off ro + savedefault +title IPFire SMP + root (hd0,0) + kernel /vmlinuz-smp root=ROOT panic=10 acpi=off ro + savedefault +title IPFire (ACPI enabled) + root (hd0,0) + kernel /vmlinuz root=ROOT panic=10 ro + savedefault +title IPFire SMP (ACPI HT enabled) + root (hd0,0) + kernel /vmlinuz-smp root=ROOT panic=10 acpi=ht ro + savedefault diff --git a/config/grub/ipcop.xpm.gz b/config/grub/ipcop.xpm.gz new file mode 100644 index 0000000000000000000000000000000000000000..4fab5310f3c6ced3a04bff927641f6d97e7e2c5c GIT binary patch literal 7526 zc-rlj4gIp@Ca>&1QU7Z-adHFf?a=d-KV>=2eN2w^XT(?1)jCN6?f zZqL#eOkGPCMV}qL`rUVGN&E3i<5x-?N92`H9QsUG%IG?Uqy4Gr7n?)gwr{S{mE|h4 zs3Mn;j>ZmL;am=VLS=s}c8cq?F83n?FMpmDh+LfYH(&0t2VCs$HD6vd%c0UQwsX@j zk8=Yl>GG7{@|WGY$7_Mj$D`GzfhTM0GXW=S1uk;_2L+~qI|W*SJA1i-#|wcM$qllL z)x=2o^J7Y+d{--+E#P1yekK4*hmkp7{_PTQ)*HV&(Al~baJnfq<0nAZD05D%mOtO8 zY%R{IvR!2TY2~16z9d!81fDg@kQe9ZW&$o3Jmvqi^3etERX3k3um3d~umzlq?MBM@ z4T&5OXDC*5mo_Kj5aE@wUTl ze?+HuBzn8c>Pr1UFvo*$UKn?|I^o&`5U{17C6d9$x!+>e$^Aq8L1+bo==uMR)eB-r}Z-5U?N$ zW$~d%^;0!=n-94$f`WVnRt0HYxxt5M{k4u@7S^w+8dOi8Kt(zKW(Gep8_JFct^0L7 zxY3I#4|!!m!}8c4FKXKv0iixhrSY(SqNHr3DPz^&_tViEQRN7s8>xG~fl3@$;2_-j z>XDz}wM+$eF8}s;%>sq6w0Pv}Ijyd;|93ZqHfQlEwRE8ON{zPA&Oqeo?KsfN2$Vp| zpgXt^KI@wHg?}+EL&Lku2!vm?!Ngq(l-kGOR}&Q2A$Qlh{Wt5wwfa-I+$7_CQh?^g ztp*$Re%vA#t%1Q(cag~$mcPnsq0a=%O^9gsN7o$TI$krF?^$MZl?km7mm8TA>6TxP zW3xB>d^-F}9>y$>n_SXRe_`k0jvDcNEw#a81#r15T`b)H2Bd+)*t|Hv($mUQLpdjI z-A^%KiY@{baYi_95Xl)XbnRF=I5?(s`-KL8o2CdfLPg3#8CxGgV$M+m?aV@+2U5ko zWMJNoH^c7LfG-ffCRM{9D8o9jglp+eajRt-xyhWnt|kz&)ha%`z8<6`ZOyD-;P}ZhTJlJ|BCfeXdCayY zYx;dAaQMhobhG~f-FL5>@|P!O57Zu|#yEwyi$712XX<8Y8f<2Qy$_5x05N$TKUS&>yaHH&BNHgIKemQW~X;GL){kh>SCnY!uxxN!4JQp7*ypU8QzYw+3j&SIZ;wzeud`wrP}Mp zlhoGKiIaNxkKR&-Q5*~O~r83vts_l4z<+YOT;pa=p{Gm5k4$VxgWr$L*Pq!pyL;qr8x zlXf)cdmRNI*k|0M#YQOEI}_A9<^|l|g7#w&{xJ}~e@iy{gUNBh)qLu~l6=J;YDxl% z!|>%`9a2Nv!Xi8dL)e^sW^t}_HB*FJ4EiXd;DgwMT-9H$+hE=h#g;|)nh4y`{JSf? z;vfwGh8A?r_eWdM&NWUug(TeSWSGUx!1>$C%NQ0Tg%wC4AIx#cASDjVBvzf|Ai>fm z*>IkR!;1r-viv@`bvjFbkeU6@9EkTtHOZ~^ltUuXuLE?4Vy$d7tmODynh@#N0fB=x zR;gCcxA`Zt_smi*j|wkyqG6F|JUVeV4(3zpp-hNv#)P;Se+C`Ze4CuFvwnhXnCK@m zYK1ZFAR**?c7eYqy#kOoYE)yI5<(q%NZUC!Z*}-X$~VfMK_YMqzFocCySDahsAdeh zu-C6>O-V+J93y?!cLSyQ(rr2a^A{_(zXcGX6n|0k+&=<7fu8lCnC-)}a$)R55_ zpU;~p_ye`cu5nyYQ< z)JFfPFiCin-Sv2itJMg$`jhB$em~xto+cN>XkS94y`$(Y(&3 zUA-qk?}PmjumNELT61M_MYh{>^qH5)vKUzqQ1QVDLr%CQGnVYMw`hCz4Pta#SbCl^ z*|`1;?*L6eY?mVk-WSu8igqA(-L2n8=p^svqfhSl$?+7FblxfJVRdqaHF~_7j|gjn z9M3X$!kt0;Eg_;p*X*M~IXdI>8GLyT;T}Pc^&b{2b*zQ|o>Gxax~ zC27(s4pLH6!gz5qyboo_G_rH-c&qD!KP{x~ zW!L!#UcoPT45p|;g94<<6B|Oh&Dm(cZB}RG_WLlF{NEN4awqM;qQH2{3kV-+?Vaky z7N2>m!g}db{=APHj(S1Yn>i*13cEjfSEOAv_qqeeS$FGl7C>F$zp@8vYAQEY%63ko)eKV0DWizM_^dfi2{4id3a zTbWt^qy~PXliVSkHhnxbz;yL=$#kmsvOfatsQqx76`53Mjxgzi1T6vPbE`sD> zx9_`G95gg(YwG<5C3?1EA_H?3-GD%P6AH|Z)=5jYV;`&>E$n({Dk>Bt z$(!D3S@lO&C5LAwpFbT0>H*)C_4d9FDF8aB!OkvXZ??>{7Ful_>3N(^=8mNhPzXwv zp*A5k@3ef+`;VW`t@!GgT0Jr+mKK)6%!K=q3B zi@j=tlO4&sZ8oHayEj7OK2>TN`gy=^>tAMJ?W`y-Gy!M%=mYi=QigBc>?E+O$JuQl z95~rB+k$%oiea8J(6ee_1=EDbDZ9+gew<%(iq^+uHZRYf@^zomu->8|l!j_$@gjea70WGZ}bBd9idVN|6q)eBHJ`IZjlv!)q#HYscqm9>`a88eS!|(|H_a=f5AxAA8R=Q#V`F-ALGk=v zPq}N`aTkUWwF_p=mSV965p%@DxevvtQ-xwj z@l9?*LDfSFNYT(aCtj_HGEcj%&?TklpR$=-$xLQ|>8pnJ*F2;m%btOydbSjk@MQnW8s@Oxn*Jz7W;CNwQw`&Ouu zyp*kAZ&Sh0t$L2RhJx!+bZuR=b>|kjK$8*!_`EaZs$;djQQzu>^vxh*I8e!;|7VgwKrelnvg`V zM9kQzJ?~rWrX--eJXgv5LNrJUS#sKf$44B>)Ddx+@7@~uo~*0igi#f~IQUw>Eb*-} z0;*5Jt`J(2JqFX2_?0!RntMasXmhWZkuxw<&uxJ=YZALl@;rb_pMtR|QemoYZoR*c z4Ai|E!sIEuW~``usY`W6X&Jdzy0rS-+@b7^L6S3coS&GFuYWV9nlHC0_;Vlo2}kN9 zjw(JhW@cc3*>1gmt-@_#=1iy>`Kp_wwb)NsAk%5qHK>0O2J{N z&rI$2UJMBuMEDA;=b>&xCqDL%#5!Xq*IPF~Y}Iw$>90a}rjwG{qPace?kjh@ zS#?Y_a6-c-Ao+3;=nDb@G3EOZnhaEXA!NWL7m}?AszCBElobk~H31tkUk`6V z<=Df_Ay4y*%Yx9cZXxZ@=c?pz_58TJnJ>1}%5uOb|@O z=O9}Ih2&3>eX$!dWt9dcc%yeOS0kkp{7EcSA9&Lx40M+AecOs6v-9x*xv#I@E#3C= zIqbUi4oslwDC1{pf!tH)pn0Xf*Z5SAwll|4>C5D0o_wUH&5ziL)%fpi<9ZK%8UdF@ z$GZmIHNva>Qdzi%19Z0N?b=VZ%?D&cbNTHOqiC%CCqu;8drlQK#jV2nqO|MTRR5*Q z?X`BFIxh5QT1@Ka8za4E8a-gHr8+@?dagLcMWrljVV=Kae|oFVCQ(ny^LxOr$iL;z zNWhpjNT*1nBA@x^!+TK;_&4i6%6sUuF`rU)N6=}F2l@lkM$+3#LKd-#k( zAFA#iNy~T^_73}j&QTs&hfgxpwNcwjAUbq>BZF_Mqxwtkm~VKT7FNIaxeKfl zj(Gr+WN0~eK1%3OZ&Y~aJOCxn+J6)g`aB;Hhg?+)H_duzH)p0J{07hJy3h;WH>{Kf zd1&+a;|{~DQQPww?Jc6vyfY5`uw|Wip?fjjBlz?VblRH(c#1`@&1>>)k!*mU#oCQj z;v^rdwBY~<(Nq&htX46GVakQNPA)H}cOkH|p z^w?L*dKbwnFG`CH9GJ+!)Pg-rCxs*t1+BLtv9hze&|&w#C6d}Dtm0X}t0-|k!?~2I zKtGnvIF#D6ba3-g;&zs=^iULW)~7o%{9+b4gy+To?DI<$xz!3z=}_oPo+tT(-B)YzvYsIs;mf{^)*qcn2QN=>O`7sSGMLXjcY&MBPjC;~EPNUNM ze5=q;Fk0Yj^f+|uB@~ijxZ;FH@wa_-sNGgq{+>Fh@FUP-KXjGE%W`9oZZ0VBz(PL?PKh zfxFL}#owH5+&H6%w1kJk$UpN?dSAR5;LQ7ZFPBEY#|-zNn>M;ez*@!`<9j}AOl`#AuC_C>hqZz?s=H--?+I{nyihS3Nv<78x#gtag1g`9@+IUfqBUpp) zcr$3P@XVVD2!Y7!O;5;Z|43hEKK*5{H^$2St|R+U^=l@Xp?Yk=0}SF9>KoRtf0{1R z^>7&FZI%!y`Z7On2Fl!d&7wg{0=Ax<$T$1_ql*<@a<5z3tSIN(;uI9&BorlI5`a(7)>n_VTVB>Km zY&4FiJfH@!&nVS8I30qhdSGP>pazfX?t?tFY9C$ zI>Ke#PrdXx+o_FEXr&Qev0s)FlOu-R(Gp4kHo2mvZtLdr(Zf>;&~5z2&OZ+tWhJ|<0QM{U zJQ9kX&qr%bt+&?c-epPwne;H*jleQ!+M$p73ifBF+~L|m+oZoj zzvBZc6H>>8N~ZMawfS>uMy3SOe55SdD-)VHmTJ(jm!Xg)DMbJzpqYBmTqNla! z9ltzJr0vw7qTx5khrZ9@{WvxNJ3sH8R)T$$_O~rPlVcHJ-QLM+M}7)1W`W1s=Oiq= zL<;eJm^0Gcytc++In!g-P~!8~_$e#miJ#05Rr5?ZdM_osL=QRey6_-@hg55NAj;d~ zih-#JRwT|kEyNQzqSExf?>+$P=5Fh=keC-1hiY>YW5wF`PW+IQ!?Jt90YU)EXo31% z>Ql$82J@a*&KE!WiDCXifCFHv8xuQ#{X2bf9I8KMjFxVh + Options None + AllowOverride None + + + Options ExecCGI + AllowOverride None + Order allow,deny + Allow from all + + + AuthName "Restricted" + AuthType Basic + AuthUserFile CONFIG_ROOT/auth/users + require user admin + +ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/ + + AllowOverride None + Options None + AuthName "Restricted" + AuthType Basic + AuthUserFile CONFIG_ROOT/auth/users + Require user admin + + Satisfy Any + Allow from All + + + Satisfy Any + Allow from All + + + Require user admin dial + + + + DirectoryIndex index.html index.htm index.shtml index.cgi + +AccessFileName .htaccess + + Order allow,deny + Deny from all + + + TypesConfig /etc/mime.types + +DefaultType text/plain + +HostnameLookups Off +ErrorLog /var/log/httpd/error_log +LogLevel warn +LogFormat "%h %l %u %t \"%r\" %>s %b" common +CustomLog /var/log/httpd/access_log common +ServerSignature Off +AddHandler cgi-script .cgi + + BrowserMatch "Mozilla/2" nokeepalive + BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 + BrowserMatch "RealPlayer 4\.0" force-response-1.0 + BrowserMatch "Java/1\.0" force-response-1.0 + BrowserMatch "JDK/1\.0" force-response-1.0 + + +### +### SSL Configuration +### +AddType application/x-x509-ca-cert .crt +AddType application/x-pkcs7-crl .crl + +SSLPassPhraseDialog builtin +SSLSessionCache dbm:/var/log/httpd/ssl_scache +SSLSessionCacheTimeout 900 +SSLMutex file:/var/log/httpd/ssl_mutex +SSLRandomSeed startup builtin +SSLRandomSeed connect builtin +SSLLog /var/log/httpd/ssl_engine_log +SSLLogLevel info + + + RewriteEngine on + RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS) + RewriteRule .* - [F] + DocumentRoot /home/httpd/html + ServerAdmin root@localhost + ErrorLog /var/log/httpd/error_log + TransferLog /var/log/httpd/access_log + SSLEngine on + SSLProtocol all -SSLv2 + SSLCipherSuite ALL:!ADH:!EXPORT56:!eNULL:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP + SSLCertificateFile /etc/httpd/server.crt + SSLCertificateKeyFile /etc/httpd/server.key + + SSLOptions +StdEnvVars + + + SSLOptions +StdEnvVars + + SetEnv HOME /home/nobody + SetEnvIf User-Agent ".*MSIE.*" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 + CustomLog /var/log/httpd/ssl_request_log \ + "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" + + + + Options None + AllowOverride None + AuthName "Restricted" + AuthType Basic + AuthUserFile /var/ipcop/auth/users + require user admin + + +include /etc/httpd/conf/hostname.conf diff --git a/config/install/CVS/Entries b/config/install/CVS/Entries new file mode 100644 index 0000000000..268620330d --- /dev/null +++ b/config/install/CVS/Entries @@ -0,0 +1,11 @@ +/fstab/1.1.1.1/Tue Nov 27 08:09:57 2001//TIPCOP_v1_4_0 +/group/1.1.1.1/Tue Nov 27 08:09:57 2001//TIPCOP_v1_4_0 +/halt/1.2/Fri Dec 12 10:33:30 2003//TIPCOP_v1_4_0 +/hosts/1.2/Fri Dec 12 10:33:30 2003//TIPCOP_v1_4_0 +/inittab/1.3/Fri Dec 12 10:33:30 2003//TIPCOP_v1_4_0 +/nsswitch.conf/1.1.1.1/Tue Nov 27 08:09:57 2001//TIPCOP_v1_4_0 +/passwd/1.1.1.1/Tue Nov 27 08:09:57 2001//TIPCOP_v1_4_0 +/profile/1.2/Fri Dec 12 10:33:30 2003//TIPCOP_v1_4_0 +/rc/1.5.2.1/Tue Sep 14 21:42:47 2004//TIPCOP_v1_4_0 +/shells/1.1.1.1/Tue Nov 27 08:09:57 2001//TIPCOP_v1_4_0 +D diff --git a/config/install/CVS/Repository b/config/install/CVS/Repository new file mode 100644 index 0000000000..a262c52ab6 --- /dev/null +++ b/config/install/CVS/Repository @@ -0,0 +1 @@ +ipcop/config/install diff --git a/config/install/CVS/Root b/config/install/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/install/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/install/CVS/Tag b/config/install/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/install/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/install/fstab b/config/install/fstab new file mode 100644 index 0000000000..7399c0c1f5 --- /dev/null +++ b/config/install/fstab @@ -0,0 +1,3 @@ +/dev/ram0 / ext2 +/dev/fd0 / ext2 +/proc /proc proc diff --git a/config/install/group b/config/install/group new file mode 100644 index 0000000000..465a9cf410 --- /dev/null +++ b/config/install/group @@ -0,0 +1,4 @@ +root:x:0:root +tty:x:5: +disk:x:6: +uucp:x:14: diff --git a/config/install/halt b/config/install/halt new file mode 100644 index 0000000000..22a170e9ec --- /dev/null +++ b/config/install/halt @@ -0,0 +1,19 @@ +#!/bin/sh +echo "Shutting down..." +echo "Sending all processes the TERM signal..." +/sbin/killall5 -15 +sleep 3 +echo "Sending all processes the KILL signal..." +/sbin/killall5 -9 +sleep 3 +echo "Unmounting /cdrom, /harddisk/boot, /harddisk/var/log and /harddisk" +/sbin/umount /cdrom +/sbin/umount /harddisk/boot +/sbin/umount /harddisk/var/log +/sbin/umount /harddisk +echo "Unmounting /proc" +/sbin/umount /proc/bus/usb +/sbin/umount /proc +echo "Unmounting root" +/sbin/mount -n -o remount,ro / +/sbin/reboot -i -d -p diff --git a/config/install/hosts b/config/install/hosts new file mode 100644 index 0000000000..f4fb350dda --- /dev/null +++ b/config/install/hosts @@ -0,0 +1 @@ +localhost 127.0.0.1 diff --git a/config/install/inittab b/config/install/inittab new file mode 100644 index 0000000000..5eb074c8a6 --- /dev/null +++ b/config/install/inittab @@ -0,0 +1,10 @@ +# System initialization. +::sysinit:/etc/rc + +# Run gettys in standard runlevels +tty1::respawn:/bin/iowrap /dev/tty1 /bin/ash --login -c "/bin/install /dev/tty2" +tty3::respawn:/bin/iowrap /dev/tty3 /bin/ash --login + +# Stuff to do before rebooting +::ctrlaltdel:/etc/halt +::shutdown:/etc/halt diff --git a/config/install/nsswitch.conf b/config/install/nsswitch.conf new file mode 100644 index 0000000000..da516c6ca0 --- /dev/null +++ b/config/install/nsswitch.conf @@ -0,0 +1,15 @@ +passwd: files +shadow: files +group: files +hosts: files +services: files +networks: files +protocols: files +rpc: files +ethers: files +netmasks: files +bootparams: files +automount: files +aliases: files +netgroup: files +publickey: files diff --git a/config/install/passwd b/config/install/passwd new file mode 100644 index 0000000000..365a8d7f75 --- /dev/null +++ b/config/install/passwd @@ -0,0 +1 @@ +root::0:0:root:/:/bin/ash diff --git a/config/install/profile b/config/install/profile new file mode 100644 index 0000000000..7f830af6c2 --- /dev/null +++ b/config/install/profile @@ -0,0 +1,7 @@ +#!/bin/ash + +TERM=linux +LANG=en_US.UTF-8 +export TERM LANG + +/bin/unicode_start lat0-16 diff --git a/config/install/rc b/config/install/rc new file mode 100644 index 0000000000..20dcdff76c --- /dev/null +++ b/config/install/rc @@ -0,0 +1,12 @@ +#!/bin/ash +echo "Mounting proc" +mount /proc + +echo "Starting syslogd" +syslogd -L -O /dev/tty2 + +echo "Silencing kernel" +echo >/proc/sys/kernel/printk "1 4 1 7" + +echo "Disabling screen blanking" +echo -n -e "\033[9;0]" diff --git a/config/install/shells b/config/install/shells new file mode 100644 index 0000000000..006aa38ced --- /dev/null +++ b/config/install/shells @@ -0,0 +1 @@ +/bin/ash diff --git a/config/ipac-ng/CVS/Entries b/config/ipac-ng/CVS/Entries new file mode 100644 index 0000000000..eceffac046 --- /dev/null +++ b/config/ipac-ng/CVS/Entries @@ -0,0 +1,3 @@ +/ipac.conf/1.2.2.1/Wed Jun 9 23:00:11 2004//TIPCOP_v1_4_0 +/rules.conf/1.2.2.1/Wed Jun 9 23:00:11 2004//TIPCOP_v1_4_0 +D diff --git a/config/ipac-ng/CVS/Repository b/config/ipac-ng/CVS/Repository new file mode 100644 index 0000000000..d53a6c3502 --- /dev/null +++ b/config/ipac-ng/CVS/Repository @@ -0,0 +1 @@ +ipcop/config/ipac-ng diff --git a/config/ipac-ng/CVS/Root b/config/ipac-ng/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/ipac-ng/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/ipac-ng/CVS/Tag b/config/ipac-ng/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/ipac-ng/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/ipac-ng/ipac.conf b/config/ipac-ng/ipac.conf new file mode 100644 index 0000000000..b4145952cb --- /dev/null +++ b/config/ipac-ng/ipac.conf @@ -0,0 +1,5 @@ +access agent = files +account agent = iptables +storage = gdbm +rules file = /etc/ipac-ng/rules.conf +drop zero lines = yes diff --git a/config/ipac-ng/rules.conf b/config/ipac-ng/rules.conf new file mode 100644 index 0000000000..e5f823841c --- /dev/null +++ b/config/ipac-ng/rules.conf @@ -0,0 +1,36 @@ +# Example config file with accounting rules +# Install as /etc/ipac-ng/rules.conf.iptables +# +# Format: +# Name of rule|direction|interface|protocol|source|destination +# WARNING!!!! spaces are not allowed before and after '|'. +# +# where +# Name of rule Any string to identify this rule +# direction ipac~fi - forward in +# ipac~fo - forward out +# ipac~i - outgoing from machine with ipac-ng to other host(/net) +# (or incoming to otherhost) +# ipac~o - incoming to machine with ipac-ng +# (or outgoing from otherhost) +# +# interface interface name, '+' means all interfaces (dont try to use ip numbers here!) +# protocol tcp | udp | icmp | all +# source \ +# destination both as described in ipfwadm(8), or empty +# +# incoming: + +# lets demonstrate this by following rules. +# Example 1: +# there are some hosts in out net 192.168.0.0/24 +# our ipac-ng host has two interfaces - eth0 connected to local net +# and eth1 to internet +Incoming GREEN|ipac~i|eth0|all||| +Outgoing GREEN|ipac~o|eth0|all||| + +Incoming RED (PPP)|ipac~i|ppp0|all||| +Outgoing RED (PPP)|ipac~o|ppp0|all||| + +Incoming RED (ISDN PPP)|ipac~i|ippp0|all||| +Outgoing RED (ISDN PPP)|ipac~o|ippp0|all||| diff --git a/config/kernel/CVS/Entries b/config/kernel/CVS/Entries new file mode 100644 index 0000000000..5aa6999adb --- /dev/null +++ b/config/kernel/CVS/Entries @@ -0,0 +1,8 @@ +/aboot.conf/1.1/Thu Feb 19 15:19:54 2004//TIPCOP_v1_4_0 +/install-message/1.3.2.1/Sat Feb 5 21:14:54 2005//TIPCOP_v1_4_0 +/kernel.config.alpha/1.5.2.21/Sat Jan 14 16:35:15 2006//TIPCOP_v1_4_0 +/kernel.config.i386/1.12.2.23/Sat Jan 14 16:35:15 2006//TIPCOP_v1_4_0 +/kernel.config.i386.installer/1.1.2.13/Sat Jan 14 16:35:15 2006//TIPCOP_v1_4_0 +/kernel.config.i386.smp/1.1.2.16/Sat Jan 14 16:35:15 2006//TIPCOP_v1_4_0 +/syslinux.cfg/1.4.2.4/Sat Feb 5 21:14:54 2005//TIPCOP_v1_4_0 +D diff --git a/config/kernel/CVS/Repository b/config/kernel/CVS/Repository new file mode 100644 index 0000000000..8cedb3a8df --- /dev/null +++ b/config/kernel/CVS/Repository @@ -0,0 +1 @@ +ipcop/config/kernel diff --git a/config/kernel/CVS/Root b/config/kernel/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/kernel/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/kernel/CVS/Tag b/config/kernel/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/kernel/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/kernel/aboot.conf b/config/kernel/aboot.conf new file mode 100644 index 0000000000..9235cdb658 --- /dev/null +++ b/config/kernel/aboot.conf @@ -0,0 +1,4 @@ +0:vmlinuz ide=nodma initrd=instroot.gz root=/dev/ram0 rw +1:vmlinuz ide=nodma initrd=instroot.gz root=/dev/ram0 rw nopcmcia +2:vmlinuz ide=nodma initrd=instroot.gz root=/dev/ram0 rw nousb +3:vmlinuz ide=nodma initrd=instroot.gz root=/dev/ram0 rw nopcmcia nousb diff --git a/config/kernel/install-message b/config/kernel/install-message new file mode 100644 index 0000000000..9dd5868efc --- /dev/null +++ b/config/kernel/install-message @@ -0,0 +1,21 @@ + + Welcome to IPFire, Licensed under GNU GPL version 2. + + PLEASE BEWARE! This installation process will kill all + existing partitions on your PC or server. Please be aware + of this before continuing this installation. + + -------------------------------------------------- + ---- ---- + ---- ALL YOUR EXISTING DATA WILL BE DESTROYED ---- + ---- ---- + -------------------------------------------------- + + Press RETURN to boot IPFire default installation. + + Or, if you are having trouble you can try these options.... + Type: nopcmcia to disable PCMCIA detection + nousb to disable USB detection + nousborpcmcia to disable both PCMCIA & USB detection + dma to enable ide dma (SiS chipset workaround) + diff --git a/config/kernel/kernel.config.alpha b/config/kernel/kernel.config.alpha new file mode 100644 index 0000000000..1f2bc6610a --- /dev/null +++ b/config/kernel/kernel.config.alpha @@ -0,0 +1,1373 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ALPHA=y +# CONFIG_UID16 is not set +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# General setup +# +CONFIG_ALPHA_GENERIC=y +# CONFIG_ALPHA_ALCOR is not set +# CONFIG_ALPHA_XL is not set +# CONFIG_ALPHA_BOOK1 is not set +# CONFIG_ALPHA_AVANTI is not set +# CONFIG_ALPHA_CABRIOLET is not set +# CONFIG_ALPHA_DP264 is not set +# CONFIG_ALPHA_EB164 is not set +# CONFIG_ALPHA_EB64P is not set +# CONFIG_ALPHA_EB66 is not set +# CONFIG_ALPHA_EB66P is not set +# CONFIG_ALPHA_EIGER is not set +# CONFIG_ALPHA_JENSEN is not set +# CONFIG_ALPHA_LX164 is not set +# CONFIG_ALPHA_LYNX is not set +# CONFIG_ALPHA_MARVEL is not set +# CONFIG_ALPHA_MIATA is not set +# CONFIG_ALPHA_MIKASA is not set +# CONFIG_ALPHA_NAUTILUS is not set +# CONFIG_ALPHA_NONAME is not set +# CONFIG_ALPHA_NORITAKE is not set +# CONFIG_ALPHA_PC164 is not set +# CONFIG_ALPHA_P2K is not set +# CONFIG_ALPHA_RAWHIDE is not set +# CONFIG_ALPHA_RUFFIAN is not set +# CONFIG_ALPHA_RX164 is not set +# CONFIG_ALPHA_SX164 is not set +# CONFIG_ALPHA_SABLE is not set +# CONFIG_ALPHA_SHARK is not set +# CONFIG_ALPHA_TAKARA is not set +# CONFIG_ALPHA_TITAN is not set +# CONFIG_ALPHA_WILDFIRE is not set +CONFIG_ISA=y +CONFIG_EISA=y +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_PCI=y +CONFIG_VERBOSE_MCHECK=y +CONFIG_ALPHA_BROKEN_IRQ_MASK=y +# CONFIG_SMP is not set +CONFIG_EARLY_PRINTK=y +# CONFIG_DISCONTIGMEM is not set +# CONFIG_ALPHA_LARGE_VMALLOC is not set +# CONFIG_PCI_NAMES is not set +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +CONFIG_CARDBUS=y +CONFIG_TCIC=y +CONFIG_I82092=y +CONFIG_I82365=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_SRM_ENV is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_BINFMT_EM86 is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Plug and Play configuration +# +CONFIG_PNP=m +CONFIG_ISAPNP=m + +# +# Block devices +# +CONFIG_BLK_DEV_FD=y +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_CISS_MONITOR_THREAD is not set +CONFIG_BLK_DEV_DAC960=m +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=14336 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_STATS is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_FWMARK is not set +CONFIG_IP_ROUTE_NAT=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_TOS=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +CONFIG_SYN_COOKIES=y + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_CT_PROTO_GRE=m +CONFIG_IP_NF_PPTP=m +# CONFIG_IP_NF_PPTP_DEBUG is not set +CONFIG_IP_NF_H323=m +# CONFIG_IP_NF_AMANDA is not set +CONFIG_IP_NF_TFTP=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_QUAKE3=m +CONFIG_IP_NF_RTSP=m +CONFIG_IP_NF_MMS=m +CONFIG_IP_NF_CUSEEME=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_SET=m +CONFIG_IP_NF_SET_MAX=256 +CONFIG_IP_NF_SET_HASHSIZE=1024 +CONFIG_IP_NF_MATCH_SET=m +CONFIG_IP_NF_TARGET_SET=m +CONFIG_IP_NF_SET_IPMAP=m +CONFIG_IP_NF_SET_PORTMAP=m +CONFIG_IP_NF_SET_MACIPMAP=m +CONFIG_IP_NF_SET_IPHASH=m +CONFIG_IP_NF_SET_NETHASH=m +CONFIG_IP_NF_SET_IPPORTHASH=m +CONFIG_IP_NF_SET_IPTREE=m +CONFIG_IP_NF_MATCH_QUOTA=m +CONFIG_IP_NF_POOL=m +CONFIG_IP_POOL_STATISTICS=y +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_DSTLIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_MPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_TIME=m +CONFIG_IP_NF_MATCH_RANDOM=m +CONFIG_IP_NF_MATCH_PSD=m +CONFIG_IP_NF_MATCH_OSF=m +CONFIG_IP_NF_MATCH_NTH=m +CONFIG_IP_NF_MATCH_IPV4OPTIONS=m +CONFIG_IP_NF_MATCH_FUZZY=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_U32=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_REALM=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_CONNLIMIT=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_UNCLEAN=m +CONFIG_IP_NF_MATCH_STRING=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_NETLINK=m +CONFIG_IP_NF_TARGET_IPV4OPTSSTRIP=m +CONFIG_IP_NF_TARGET_MIRROR=m +CONFIG_IP_NF_TARGET_TARPIT=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_NAT_H323=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_NAT_PROTO_GRE=m +# CONFIG_IP_NF_NAT_SNMP_BASIC is not set +CONFIG_IP_NF_NAT_RTSP=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_QUAKE3=m +CONFIG_IP_NF_NAT_MMS=m +CONFIG_IP_NF_NAT_CUSEEME=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_TARGET_NOTRACK=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set + +# +# IP: Virtual Server Configuration +# +# CONFIG_IP_VS is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +CONFIG_ATM_CLIP_NO_ICMP=y +# CONFIG_ATM_LANE is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_VLAN_8021Q=m + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_CSZ=m +CONFIG_NET_SCH_HFSC=m +# CONFIG_NET_SCH_ATM is not set +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +# CONFIG_NET_SCH_NETEM is not set +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_QOS=y +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_CLS=y +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_POLICE=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +CONFIG_IPSEC=m + +# +# IPSec options (FreeS/WAN) +# +CONFIG_IPSEC_IPIP=y +CONFIG_IPSEC_AH=y +CONFIG_IPSEC_AUTH_HMAC_MD5=y +CONFIG_IPSEC_AUTH_HMAC_SHA1=y +CONFIG_IPSEC_ESP=y +CONFIG_IPSEC_ENC_3DES=y +CONFIG_IPSEC_ALG=y +CONFIG_IPSEC_ALG_MD5=m +CONFIG_IPSEC_ALG_SHA1=m +CONFIG_IPSEC_ALG_SHA2=m +CONFIG_IPSEC_ALG_3DES=m +CONFIG_IPSEC_ALG_AES=m +CONFIG_IPSEC_ALG_BLOWFISH=m +CONFIG_IPSEC_ALG_TWOFISH=m +CONFIG_IPSEC_ALG_SERPENT=m +CONFIG_IPSEC_ALG_CAST=m +# CONFIG_IPSEC_ALG_NULL is not set +# CONFIG_IPSEC_ALG_CRYPTOAPI is not set +# CONFIG_IPSEC_ALG_1DES is not set +CONFIG_IPSEC_IPCOMP=y +CONFIG_IPSEC_DEBUG=y +CONFIG_IPSEC_NAT_TRAVERSAL=y + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y +MAX_HWIFS=4 + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_DELKIN=m +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_BLK_DEV_CMD640=y +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +CONFIG_BLK_DEV_ADMA100=y +CONFIG_BLK_DEV_AEC62XX=y +CONFIG_BLK_DEV_ALI15X3=y +# CONFIG_WDC_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +CONFIG_AMD74XX_OVERRIDE=y +CONFIG_BLK_DEV_ATIIXP=y +CONFIG_BLK_DEV_CMD64X=y +CONFIG_BLK_DEV_TRIFLEX=y +CONFIG_BLK_DEV_CY82C693=y +CONFIG_BLK_DEV_CS5530=y +CONFIG_BLK_DEV_HPT34X=y +# CONFIG_HPT34X_AUTODMA is not set +CONFIG_BLK_DEV_HPT366=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_BLK_DEV_NS87415=y +CONFIG_BLK_DEV_OPTI621=y +CONFIG_BLK_DEV_PDC202XX_OLD=y +# CONFIG_PDC202XX_BURST is not set +CONFIG_BLK_DEV_PDC202XX_NEW=y +# CONFIG_PDC202XX_FORCE is not set +CONFIG_BLK_DEV_RZ1000=y +CONFIG_BLK_DEV_SC1200=y +CONFIG_BLK_DEV_SVWKS=y +CONFIG_BLK_DEV_SIIMAGE=y +CONFIG_BLK_DEV_SIS5513=y +CONFIG_BLK_DEV_SLC90E66=y +CONFIG_BLK_DEV_TRM290=y +CONFIG_BLK_DEV_VIA82CXXX=y +# CONFIG_IDE_CHIPSETS is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +CONFIG_BLK_DEV_PDC202XX=y +CONFIG_BLK_DEV_ATARAID=m +CONFIG_BLK_DEV_ATARAID_PDC=m +CONFIG_BLK_DEV_ATARAID_HPT=m +CONFIG_BLK_DEV_ATARAID_MEDLEY=m +CONFIG_BLK_DEV_ATARAID_SII=m + +# +# SCSI support +# +CONFIG_SCSI=m + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_SD_EXTRA_DEVS=8 +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=m + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AHA1740=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_PROBE_EISA_VL=y +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_BUILD_FIRMWARE is not set +CONFIG_AIC79XX_ENABLE_RD_STRM=y +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_MEGARAID=m +CONFIG_SCSI_MEGARAID2=m +CONFIG_SCSI_SATA=y +CONFIG_SCSI_SATA_AHCI=m +CONFIG_SCSI_SATA_SVW=m +CONFIG_SCSI_ATA_PIIX=m +CONFIG_SCSI_SATA_NV=m +CONFIG_SCSI_SATA_QSTOR=m +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_SX4=m +CONFIG_SCSI_SATA_SIL=m +CONFIG_SCSI_SATA_SIS=m +CONFIG_SCSI_SATA_ULI=m +CONFIG_SCSI_SATA_VIA=m +CONFIG_SCSI_SATA_VITESSE=m +CONFIG_SCSI_BUSLOGIC=m +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +CONFIG_SCSI_CPQFCTS=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_DMA=m +CONFIG_SCSI_EATA_PIO=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_G_NCR5380_PORT=y +# CONFIG_SCSI_G_NCR5380_MEM is not set +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_NCR53C7xx=m +CONFIG_SCSI_NCR53C7xx_sync=y +CONFIG_SCSI_NCR53C7xx_FAST=y +CONFIG_SCSI_NCR53C7xx_DISCONNECT=y +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX=m +CONFIG_SCSI_SYM53C8XX=m +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=4 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX_PQS_PDS=y +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PCI2000=m +CONFIG_SCSI_PCI2220I=m +CONFIG_SCSI_PSI240I=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_ISP=m +CONFIG_SCSI_QLOGIC_FC=m +# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SIM710=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC390T=m +# CONFIG_SCSI_DC390T_NOGENSUPP is not set +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +CONFIG_SCSI_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m + +# +# Fusion MPT device support +# +CONFIG_FUSION=m +# CONFIG_FUSION_BOOT is not set +CONFIG_FUSION_MAX_SGE=40 +# CONFIG_FUSION_ISENSE is not set +# CONFIG_FUSION_CTL is not set +CONFIG_FUSION_LAN=m +CONFIG_NET_FC=y + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL1=m +CONFIG_EL2=m +CONFIG_ELPLUS=m +CONFIG_EL16=m +CONFIG_EL3=m +CONFIG_3C515=m +# CONFIG_ELMC is not set +# CONFIG_ELMC_II is not set +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +# CONFIG_ULTRAMCA is not set +CONFIG_ULTRA=m +CONFIG_ULTRA32=m +CONFIG_SMC9194=m +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NI5010=m +CONFIG_NI52=m +CONFIG_NI65=m +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m +CONFIG_NET_ISA=y +CONFIG_E2100=m +CONFIG_EWRK3=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPLAN=m +CONFIG_LP486E=m +CONFIG_ETH16I=m +CONFIG_NE2000=m +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +# CONFIG_AMD8111_ETH is not set +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_CS89x0=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_DE4X5=m +CONFIG_DGRS=m +CONFIG_DM9102=m +# CONFIG_EEPRO100 is not set +# CONFIG_EEPRO100_PIO is not set +CONFIG_E100=m +CONFIG_LNE390=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_FORCEDETH=m +CONFIG_NE3210=m +CONFIG_ES3210=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +CONFIG_8139TOO_TUNE_TWISTER=y +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_WINBOND_840=m +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +# CONFIG_E1000_NAPI is not set +# CONFIG_MYRI_SBUS is not set +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_WAVELAN is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_AIRO is not set +# CONFIG_HERMES is not set +# CONFIG_PLX_HERMES is not set +# CONFIG_TMD_HERMES is not set +# CONFIG_PCI_HERMES is not set + +# +# Wireless Pcmcia cards support +# +# CONFIG_PCMCIA_HERMES is not set +CONFIG_AIRO_CS=m +# CONFIG_PCMCIA_ATMEL is not set + +# +# Prism54 PCI/PCMCIA GT/Duette Driver - 802.11(a/b/g) +# +CONFIG_PRISM54=m +CONFIG_FW_LOADER=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +CONFIG_NET_FC=y +# CONFIG_IPHASE5526 is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCMCIA_XIRTULIP=m +CONFIG_NET_PCMCIA_RADIO=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_WAVELAN=m +# CONFIG_AIRONET4500_CS is not set + +# +# ATM drivers +# +CONFIG_ATM_TCP=m +# CONFIG_ATM_LANAI is not set +# CONFIG_ATM_ENI is not set +# CONFIG_ATM_FIRESTREAM is not set +# CONFIG_ATM_ZATM is not set +# CONFIG_ATM_NICSTAR is not set +# CONFIG_ATM_IDT77252 is not set +# CONFIG_ATM_AMBASSADOR is not set +# CONFIG_ATM_HORIZON is not set +# CONFIG_ATM_IA is not set +# CONFIG_ATM_FORE200E_MAYBE is not set +# CONFIG_ATM_HE is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# ISDN subsystem +# +CONFIG_ISDN=m +CONFIG_ISDN_BOOL=y +CONFIG_ISDN_PPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +# CONFIG_ISDN_AUDIO is not set + +# +# ISDN feature submodules +# +# CONFIG_ISDN_DRV_LOOP is not set +# CONFIG_ISDN_DIVERSION is not set + +# +# low-level hardware drivers +# + +# +# Passive ISDN cards +# +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_HISAX=y + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +CONFIG_HISAX_NO_SENDCOMPLETE=y +CONFIG_HISAX_NO_LLC=y +CONFIG_HISAX_NO_KEYPAD=y +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_MIC=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +# CONFIG_HISAX_DEBUG is not set +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_FRITZ_PCIPNP=m +# CONFIG_USB_AUERISDN is not set + +# +# Active ISDN cards +# +# CONFIG_ISDN_DRV_ICN is not set +# CONFIG_ISDN_DRV_PCBIT is not set +# CONFIG_ISDN_DRV_SC is not set +# CONFIG_ISDN_DRV_ACT2000 is not set +# CONFIG_ISDN_DRV_EICON is not set +# CONFIG_ISDN_DRV_TPAM is not set +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m +# CONFIG_ISDN_DRV_AVMB1_B1ISA is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCI is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set +# CONFIG_ISDN_DRV_AVMB1_T1ISA is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCMCIA is not set +# CONFIG_ISDN_DRV_AVMB1_AVM_CS is not set +# CONFIG_ISDN_DRV_AVMB1_T1PCI is not set +# CONFIG_ISDN_DRV_AVMB1_C4 is not set +# CONFIG_HYSDN is not set +# CONFIG_HYSDN_CAPI is not set + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +# CONFIG_CD_NO_IDESCSI is not set + +# +# Input core support +# +CONFIG_INPUT=m +CONFIG_INPUT_KEYBDEV=m +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_FRANDOM=y +CONFIG_SERIAL_EXTENDED=y +CONFIG_SERIAL_MANY_PORTS=y +CONFIG_SERIAL_SHARE_IRQ=y +# CONFIG_SERIAL_DETECT_IRQ is not set +# CONFIG_SERIAL_MULTIPORT is not set +# CONFIG_HUB6 is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +CONFIG_N_HDLC=m +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_IPMI_PANIC_EVENT is not set +# CONFIG_IPMI_DEVICE_INTERFACE is not set +# CONFIG_IPMI_KCS is not set +# CONFIG_IPMI_WATCHDOG is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_SCx200 is not set +# CONFIG_SCx200_GPIO is not set +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +CONFIG_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set + +# +# Direct Rendering Manager (XFree86 DRI support) +# +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=m +CONFIG_SYNCLINK_CS=m + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_XFS_FS is not set +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_TRACE is not set +# CONFIG_XFS_DEBUG is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_DIRECTIO is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_NFSD_TCP is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_OSF_PARTITION=y +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="cp437" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_VGA_CONSOLE=y + +# +# Frame-buffer support +# +# CONFIG_FB is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_UHCI=m +CONFIG_USB_UHCI_ALT=m +CONFIG_USB_OHCI=m + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +CONFIG_USB_ACM=m +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT=y +CONFIG_USB_HIDDEV=y +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_KAWETH=m +CONFIG_USB_CATC=m +CONFIG_USB_CDCETHER=m +CONFIG_USB_USBNET=m + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set +CONFIG_USB_SPEEDTOUCH=m + +# +# Support for USB gadgets +# +# CONFIG_USB_GADGET is not set + +# +# Bluetooth support +# +# CONFIG_BLUEZ is not set + +# +# Kernel hacking +# +# CONFIG_ALPHA_LEGACY_START_ADDRESS is not set +# CONFIG_DEBUG_KERNEL is not set +CONFIG_MATHEMU=y +CONFIG_LOG_BUF_SHIFT=0 + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_SHA1 is not set +CONFIG_CRYPTO_SHA256=y +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m +CONFIG_FW_LOADER=m diff --git a/config/kernel/kernel.config.i386 b/config/kernel/kernel.config.i386 new file mode 100644 index 0000000000..379e9c80e2 --- /dev/null +++ b/config/kernel/kernel.config.i386 @@ -0,0 +1,1493 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_X86=y +# CONFIG_SBUS is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type and features +# +CONFIG_M386=y +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MELAN is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_X86_CMPXCHG is not set +# CONFIG_X86_XADD is not set +CONFIG_X86_L1_CACHE_SHIFT=4 +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +CONFIG_X86_PPRO_FENCE=y +# CONFIG_X86_F00F_WORKS_OK is not set +CONFIG_X86_MCE=y +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +# CONFIG_EDD is not set +# CONFIG_NOHIGHMEM is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_HIGHMEM=y +# CONFIG_HIGHIO is not set +CONFIG_MATH_EMULATION=y +# CONFIG_MTRR is not set +# CONFIG_SMP is not set +# CONFIG_X86_UP_APIC is not set +# CONFIG_X86_UP_IOAPIC is not set +# CONFIG_X86_TSC_DISABLE is not set + +# +# General setup +# +CONFIG_NET=y +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_ISA=y +# CONFIG_PCI_NAMES is not set +CONFIG_EISA=y +CONFIG_MCA=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +CONFIG_CARDBUS=y +CONFIG_TCIC=y +CONFIG_I82092=y +CONFIG_I82365=y + +# +# PCI Hotplug Support +# +# CONFIG_HOTPLUG_PCI is not set +# CONFIG_HOTPLUG_PCI_COMPAQ is not set +# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set +# CONFIG_HOTPLUG_PCI_ACPI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set +# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set +# CONFIG_HOTPLUG_PCI_PCIE is not set +# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_OOM_KILLER is not set +CONFIG_PM=y +CONFIG_APM=m +CONFIG_APM_IGNORE_USER_SUSPEND=y +# CONFIG_APM_DO_ENABLE is not set +# CONFIG_APM_CPU_IDLE is not set +# CONFIG_APM_DISPLAY_BLANK is not set +CONFIG_APM_RTC_IS_GMT=y +# CONFIG_APM_ALLOW_INTS is not set +# CONFIG_APM_REAL_MODE_POWER_OFF is not set + +# +# ACPI Support +# +CONFIG_ACPI=y +CONFIG_ACPI_BOOT=y +CONFIG_ACPI_BUS=y +CONFIG_ACPI_INTERPRETER=y +CONFIG_ACPI_EC=y +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PCI=y +CONFIG_ACPI_MMCONFIG=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_SYSTEM=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_THERMAL=m +# CONFIG_ACPI_ASUS is not set +# CONFIG_ACPI_TOSHIBA is not set +# CONFIG_ACPI_DEBUG is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_CML1=m +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_SUPERIO=y +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_PARPORT_PC_PCMCIA is not set +# CONFIG_PARPORT_AMIGA is not set +# CONFIG_PARPORT_MFC3 is not set +# CONFIG_PARPORT_ATARI is not set +# CONFIG_PARPORT_GSC is not set +# CONFIG_PARPORT_SUNBPP is not set +# CONFIG_PARPORT_IP22 is not set +CONFIG_PARPORT_OTHER=y +# CONFIG_PARPORT_1284 is not set +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_TIPAR=m +# CONFIG_SCSI_IZIP_SLOW_CTR is not set + +# +# Plug and Play configuration +# +CONFIG_PNP=m +CONFIG_ISAPNP=m + +# +# Block devices +# +CONFIG_BLK_DEV_FD=y +CONFIG_BLK_DEV_PS2=y +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_CISS_MONITOR_THREAD is not set +CONFIG_BLK_DEV_DAC960=m +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=5120 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_STATS is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_FWMARK is not set +CONFIG_IP_ROUTE_NAT=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_TOS=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +CONFIG_SYN_COOKIES=y + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_CT_PROTO_GRE=m +CONFIG_IP_NF_PPTP=m +# CONFIG_IP_NF_PPTP_DEBUG is not set +CONFIG_IP_NF_H323=m +# CONFIG_IP_NF_AMANDA is not set +CONFIG_IP_NF_TFTP=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_QUAKE3=m +CONFIG_IP_NF_RTSP=m +CONFIG_IP_NF_MMS=m +CONFIG_IP_NF_CUSEEME=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_IPP2P=m +CONFIG_IP_NF_SET=m +CONFIG_IP_NF_SET_MAX=256 +CONFIG_IP_NF_SET_HASHSIZE=1024 +CONFIG_IP_NF_MATCH_SET=m +CONFIG_IP_NF_TARGET_SET=m +CONFIG_IP_NF_SET_IPMAP=m +CONFIG_IP_NF_SET_PORTMAP=m +CONFIG_IP_NF_SET_MACIPMAP=m +CONFIG_IP_NF_SET_IPHASH=m +CONFIG_IP_NF_SET_NETHASH=m +CONFIG_IP_NF_SET_IPPORTHASH=m +CONFIG_IP_NF_SET_IPTREE=m +CONFIG_IP_NF_MATCH_QUOTA=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_TIME=m +CONFIG_IP_NF_MATCH_RANDOM=m +CONFIG_IP_NF_MATCH_PSD=m +CONFIG_IP_NF_MATCH_OSF=m +CONFIG_IP_NF_MATCH_NTH=m +CONFIG_IP_NF_MATCH_IPV4OPTIONS=m +CONFIG_IP_NF_MATCH_FUZZY=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_U32=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_COMMENT=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_CONNLIMIT=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_UNCLEAN=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_LAYER7=m +# CONFIG_IP_NF_MATCH_LAYER7_DEBUG is not set +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_NETLINK=m +CONFIG_IP_NF_TARGET_IPV4OPTSSTRIP=m +CONFIG_IP_NF_TARGET_MIRROR=m +CONFIG_IP_NF_TARGET_TARPIT=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_NAT_PROTO_GRE=m +CONFIG_IP_NF_NAT_H323=m +CONFIG_IP_NF_TARGET_NETMAP=m +# CONFIG_IP_NF_NAT_SNMP_BASIC is not set +CONFIG_IP_NF_NAT_RTSP=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_QUAKE3=m +CONFIG_IP_NF_NAT_MMS=m +CONFIG_IP_NF_NAT_CUSEEME=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_IMQ=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +CONFIG_IMQ=m + +# +# IP: Virtual Server Configuration +# +# CONFIG_IP_VS is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +CONFIG_ATM_CLIP_NO_ICMP=y +# CONFIG_ATM_LANE is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_VLAN_8021Q=m + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_CSZ=m +CONFIG_NET_SCH_HFSC=m +# CONFIG_NET_SCH_ATM is not set +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +# CONFIG_NET_SCH_NETEM is not set +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_QOS=y +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_CLS=y +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_POLICE=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +CONFIG_IPSEC=m + +# +# IPSec options (FreeS/WAN) +# +CONFIG_IPSEC_IPIP=y +CONFIG_IPSEC_AH=y +CONFIG_IPSEC_AUTH_HMAC_MD5=y +CONFIG_IPSEC_AUTH_HMAC_SHA1=y +CONFIG_IPSEC_ESP=y +CONFIG_IPSEC_ENC_3DES=y +CONFIG_IPSEC_ALG=y +CONFIG_IPSEC_ALG_MD5=m +CONFIG_IPSEC_ALG_SHA1=m +CONFIG_IPSEC_ALG_SHA2=m +CONFIG_IPSEC_ALG_3DES=m +CONFIG_IPSEC_ALG_AES=m +CONFIG_IPSEC_ALG_BLOWFISH=m +CONFIG_IPSEC_ALG_TWOFISH=m +CONFIG_IPSEC_ALG_SERPENT=m +CONFIG_IPSEC_ALG_CAST=m +# CONFIG_IPSEC_ALG_NULL is not set +# CONFIG_IPSEC_ALG_CRYPTOAPI is not set +# CONFIG_IPSEC_ALG_1DES is not set +CONFIG_IPSEC_IPCOMP=y +CONFIG_IPSEC_DEBUG=y +CONFIG_IPSEC_NAT_TRAVERSAL=y + +# +# Telephony Support +# +# CONFIG_PHONE is not set +# CONFIG_PHONE_IXJ is not set +# CONFIG_PHONE_IXJ_PCMCIA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_DELKIN=m +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_BLK_DEV_CMD640=y +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +CONFIG_BLK_DEV_ADMA100=y +CONFIG_BLK_DEV_AEC62XX=y +CONFIG_BLK_DEV_ALI15X3=y +# CONFIG_WDC_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +CONFIG_AMD74XX_OVERRIDE=y +CONFIG_BLK_DEV_ATIIXP=y +CONFIG_BLK_DEV_CMD64X=y +CONFIG_BLK_DEV_TRIFLEX=y +CONFIG_BLK_DEV_CY82C693=y +CONFIG_BLK_DEV_CS5530=y +CONFIG_BLK_DEV_HPT34X=y +# CONFIG_HPT34X_AUTODMA is not set +CONFIG_BLK_DEV_HPT366=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_BLK_DEV_NS87415=y +CONFIG_BLK_DEV_OPTI621=y +CONFIG_BLK_DEV_PDC202XX_OLD=y +# CONFIG_PDC202XX_BURST is not set +CONFIG_BLK_DEV_PDC202XX_NEW=y +# CONFIG_PDC202XX_FORCE is not set +CONFIG_BLK_DEV_RZ1000=y +CONFIG_BLK_DEV_SC1200=y +CONFIG_BLK_DEV_SVWKS=y +CONFIG_BLK_DEV_SIIMAGE=y +CONFIG_BLK_DEV_SIS5513=y +CONFIG_BLK_DEV_SLC90E66=y +CONFIG_BLK_DEV_TRM290=y +CONFIG_BLK_DEV_VIA82CXXX=y +# CONFIG_IDE_CHIPSETS is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +CONFIG_BLK_DEV_PDC202XX=y +CONFIG_BLK_DEV_ATARAID=m +CONFIG_BLK_DEV_ATARAID_PDC=m +CONFIG_BLK_DEV_ATARAID_HPT=m +CONFIG_BLK_DEV_ATARAID_MEDLEY=m +CONFIG_BLK_DEV_ATARAID_SII=m + +# +# SCSI support +# +CONFIG_SCSI=m + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_SD_EXTRA_DEVS=8 +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=m + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AHA1740=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_PROBE_EISA_VL=y +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_BUILD_FIRMWARE is not set +CONFIG_AIC79XX_ENABLE_RD_STRM=y +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_MEGARAID=m +CONFIG_SCSI_MEGARAID2=m +CONFIG_SCSI_SATA=y +CONFIG_SCSI_SATA_AHCI=m +CONFIG_SCSI_SATA_SVW=m +CONFIG_SCSI_ATA_PIIX=m +CONFIG_SCSI_SATA_NV=m +CONFIG_SCSI_SATA_QSTOR=m +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_SX4=m +CONFIG_SCSI_SATA_SIL=m +CONFIG_SCSI_SATA_SIS=m +CONFIG_SCSI_SATA_ULI=m +CONFIG_SCSI_SATA_VIA=m +CONFIG_SCSI_SATA_VITESSE=m +CONFIG_SCSI_BUSLOGIC=m +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +CONFIG_SCSI_CPQFCTS=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_DMA=m +CONFIG_SCSI_EATA_PIO=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_FD_MCS=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_G_NCR5380_PORT=y +# CONFIG_SCSI_G_NCR5380_MEM is not set +CONFIG_SCSI_IBMMCA=m +CONFIG_IBMMCA_SCSI_ORDER_STANDARD=y +CONFIG_IBMMCA_SCSI_DEV_RESET=y +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_NCR_D700=m +CONFIG_53C700_IO_MAPPED=y +CONFIG_SCSI_NCR53C7xx=m +CONFIG_SCSI_NCR53C7xx_sync=y +CONFIG_SCSI_NCR53C7xx_FAST=y +CONFIG_SCSI_NCR53C7xx_DISCONNECT=y +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX=m +CONFIG_SCSI_SYM53C8XX=m +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=4 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX_PQS_PDS=y +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +CONFIG_SCSI_MCA_53C9X=m +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PCI2000=m +CONFIG_SCSI_PCI2220I=m +CONFIG_SCSI_PSI240I=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_ISP=m +CONFIG_SCSI_QLOGIC_FC=m +# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SEAGATE=m +CONFIG_SCSI_SIM710=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC390T=m +# CONFIG_SCSI_DC390T_NOGENSUPP is not set +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_NSP32=m +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +CONFIG_SCSI_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m + +# +# Fusion MPT device support +# +CONFIG_FUSION=m +# CONFIG_FUSION_BOOT is not set +CONFIG_FUSION_MAX_SGE=40 +# CONFIG_FUSION_ISENSE is not set +# CONFIG_FUSION_CTL is not set +CONFIG_FUSION_LAN=m +CONFIG_NET_FC=y + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_PCI is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL1=m +CONFIG_EL2=m +CONFIG_ELPLUS=m +CONFIG_EL16=m +CONFIG_EL3=m +CONFIG_3C515=m +CONFIG_ELMC=m +CONFIG_ELMC_II=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +CONFIG_ULTRAMCA=m +CONFIG_ULTRA=m +CONFIG_ULTRA32=m +CONFIG_SMC9194=m +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NI5010=m +CONFIG_NI52=m +CONFIG_NI65=m +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m +CONFIG_NET_ISA=y +CONFIG_E2100=m +CONFIG_EWRK3=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPLAN=m +CONFIG_LP486E=m +CONFIG_ETH16I=m +CONFIG_NE2000=m +CONFIG_SKMC=m +CONFIG_NE2_MCA=m +CONFIG_IBMLANA=m +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_CS89x0=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_DE4X5=m +CONFIG_DGRS=m +CONFIG_DM9102=m +# CONFIG_EEPRO100 is not set +# CONFIG_EEPRO100_PIO is not set +CONFIG_E100=m +CONFIG_LNE390=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_FORCEDETH=m +CONFIG_NE3210=m +CONFIG_ES3210=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +CONFIG_8139TOO_TUNE_TWISTER=y +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_WINBOND_840=m +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +# CONFIG_E1000_NAPI is not set +# CONFIG_MYRI_SBUS is not set +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +CONFIG_WAVELAN=m +CONFIG_ARLAN=m +CONFIG_AIRONET4500=m +CONFIG_AIRONET4500_NONCS=m +CONFIG_AIRONET4500_PNP=y +CONFIG_AIRONET4500_PCI=y +CONFIG_AIRONET4500_ISA=y +CONFIG_AIRONET4500_I365=y +# CONFIG_AIRONET4500_PROC is not set +CONFIG_AIRO=m +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_PCI_HERMES=m + +# +# Wireless Pcmcia cards support +# +CONFIG_PCMCIA_HERMES=m +CONFIG_AIRO_CS=m +# CONFIG_PCMCIA_ATMEL is not set + +# +# Prism54 PCI/PCMCIA GT/Duette Driver - 802.11(a/b/g) +# +CONFIG_PRISM54=m +CONFIG_FW_LOADER=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +CONFIG_NET_FC=y +# CONFIG_IPHASE5526 is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCMCIA_XIRTULIP=m +CONFIG_NET_PCMCIA_RADIO=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_WAVELAN=m +# CONFIG_AIRONET4500_CS is not set + +# +# ATM drivers +# +CONFIG_ATM_TCP=m +# CONFIG_ATM_LANAI is not set +# CONFIG_ATM_ENI is not set +# CONFIG_ATM_FIRESTREAM is not set +# CONFIG_ATM_ZATM is not set +# CONFIG_ATM_NICSTAR is not set +# CONFIG_ATM_IDT77252 is not set +# CONFIG_ATM_AMBASSADOR is not set +# CONFIG_ATM_HORIZON is not set +# CONFIG_ATM_IA is not set +# CONFIG_ATM_FORE200E_MAYBE is not set +# CONFIG_ATM_HE is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ISDN subsystem +# +CONFIG_ISDN=m +CONFIG_ISDN_BOOL=y +CONFIG_ISDN_PPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_AUDIO=y +# CONFIG_ISDN_TTY_FAX is not set + +# +# ISDN feature submodules +# +# CONFIG_ISDN_DRV_LOOP is not set +# CONFIG_ISDN_DIVERSION is not set + +# +# low-level hardware drivers +# + +# +# Passive ISDN cards +# +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_HISAX=y + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +CONFIG_HISAX_NO_SENDCOMPLETE=y +CONFIG_HISAX_NO_LLC=y +CONFIG_HISAX_NO_KEYPAD=y +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_MIC=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +# CONFIG_HISAX_DEBUG is not set +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_FRITZ_PCIPNP=m +# CONFIG_USB_AUERISDN is not set + +# +# Active ISDN cards +# +# CONFIG_ISDN_DRV_ICN is not set +# CONFIG_ISDN_DRV_PCBIT is not set +# CONFIG_ISDN_DRV_SC is not set +# CONFIG_ISDN_DRV_ACT2000 is not set +# CONFIG_ISDN_DRV_EICON is not set +# CONFIG_ISDN_DRV_TPAM is not set +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m +# CONFIG_ISDN_DRV_AVMB1_B1ISA is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCI is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set +# CONFIG_ISDN_DRV_AVMB1_T1ISA is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCMCIA is not set +# CONFIG_ISDN_DRV_AVMB1_AVM_CS is not set +# CONFIG_ISDN_DRV_AVMB1_T1PCI is not set +# CONFIG_ISDN_DRV_AVMB1_C4 is not set +# CONFIG_HYSDN is not set +# CONFIG_HYSDN_CAPI is not set + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +# CONFIG_CD_NO_IDESCSI is not set + +# +# Input core support +# +CONFIG_INPUT=m +CONFIG_INPUT_KEYBDEV=m +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_FRANDOM=y +CONFIG_SERIAL_EXTENDED=y +CONFIG_SERIAL_MANY_PORTS=y +CONFIG_SERIAL_SHARE_IRQ=y +# CONFIG_SERIAL_DETECT_IRQ is not set +# CONFIG_SERIAL_MULTIPORT is not set +# CONFIG_HUB6 is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +CONFIG_N_HDLC=m +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_IPMI_PANIC_EVENT is not set +# CONFIG_IPMI_DEVICE_INTERFACE is not set +# CONFIG_IPMI_KCS is not set +# CONFIG_IPMI_WATCHDOG is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_SCx200 is not set +# CONFIG_SCx200_GPIO is not set +# CONFIG_AMD_RNG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +CONFIG_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set + +# +# Direct Rendering Manager (XFree86 DRI support) +# +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=m +CONFIG_SYNCLINK_CS=m +# CONFIG_MWAVE is not set +# CONFIG_OBMOUSE is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_XFS_FS is not set +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_TRACE is not set +# CONFIG_XFS_DEBUG is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_DIRECTIO is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_NFSD_TCP is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="cp437" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_VGA_CONSOLE=y +CONFIG_VIDEO_SELECT=y +# CONFIG_MDA_CONSOLE is not set + +# +# Frame-buffer support +# +# CONFIG_FB is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_UHCI=m +CONFIG_USB_UHCI_ALT=m +CONFIG_USB_OHCI=m +# CONFIG_USB_SL811HS_ALT is not set +# CONFIG_USB_SL811HS is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT=y +CONFIG_USB_HIDDEV=y +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_KAWETH=m +CONFIG_USB_CATC=m +CONFIG_USB_CDCETHER=m +CONFIG_USB_USBNET=m + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set +CONFIG_USB_SPEEDTOUCH=m + +# +# Support for USB gadgets +# +# CONFIG_USB_GADGET is not set + +# +# Bluetooth support +# +# CONFIG_BLUEZ is not set + +# +# Kernel hacking +# +# CONFIG_DEBUG_KERNEL is not set +CONFIG_LOG_BUF_SHIFT=0 + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_SHA1 is not set +CONFIG_CRYPTO_SHA256=y +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m +CONFIG_FW_LOADER=m diff --git a/config/kernel/kernel.config.i386.installer b/config/kernel/kernel.config.i386.installer new file mode 100644 index 0000000000..7c0ea66ead --- /dev/null +++ b/config/kernel/kernel.config.i386.installer @@ -0,0 +1,1456 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_X86=y +# CONFIG_SBUS is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type and features +# +CONFIG_M386=y +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MELAN is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_X86_CMPXCHG is not set +# CONFIG_X86_XADD is not set +CONFIG_X86_L1_CACHE_SHIFT=4 +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +CONFIG_X86_PPRO_FENCE=y +# CONFIG_X86_F00F_WORKS_OK is not set +CONFIG_X86_MCE=y +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +# CONFIG_EDD is not set +# CONFIG_NOHIGHMEM is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_HIGHMEM=y +# CONFIG_HIGHIO is not set +CONFIG_MATH_EMULATION=y +# CONFIG_MTRR is not set +# CONFIG_SMP is not set +# CONFIG_X86_UP_APIC is not set +# CONFIG_X86_UP_IOAPIC is not set +# CONFIG_X86_TSC_DISABLE is not set + +# +# General setup +# +CONFIG_NET=y +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_ISA=y +# CONFIG_PCI_NAMES is not set +CONFIG_EISA=y +CONFIG_MCA=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +CONFIG_CARDBUS=y +CONFIG_TCIC=y +CONFIG_I82092=y +CONFIG_I82365=y + +# +# PCI Hotplug Support +# +# CONFIG_HOTPLUG_PCI is not set +# CONFIG_HOTPLUG_PCI_COMPAQ is not set +# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set +# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set +# CONFIG_HOTPLUG_PCI_SHPC_PHPRM_LEGACY is not set +# CONFIG_HOTPLUG_PCI_PCIE is not set +# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_OOM_KILLER is not set +CONFIG_PM=y +CONFIG_APM=m +CONFIG_APM_IGNORE_USER_SUSPEND=y +# CONFIG_APM_DO_ENABLE is not set +# CONFIG_APM_CPU_IDLE is not set +# CONFIG_APM_DISPLAY_BLANK is not set +CONFIG_APM_RTC_IS_GMT=y +# CONFIG_APM_ALLOW_INTS is not set +# CONFIG_APM_REAL_MODE_POWER_OFF is not set + +# +# ACPI Support +# +# CONFIG_ACPI is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Plug and Play configuration +# +CONFIG_PNP=m +CONFIG_ISAPNP=m + +# +# Block devices +# +CONFIG_BLK_DEV_FD=y +CONFIG_BLK_DEV_PS2=y +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_CISS_MONITOR_THREAD is not set +CONFIG_BLK_DEV_DAC960=m +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=5120 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_STATS is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_FWMARK is not set +CONFIG_IP_ROUTE_NAT=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_TOS=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +CONFIG_SYN_COOKIES=y + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_CT_PROTO_GRE=m +CONFIG_IP_NF_PPTP=m +# CONFIG_IP_NF_PPTP_DEBUG is not set +CONFIG_IP_NF_H323=m +# CONFIG_IP_NF_AMANDA is not set +CONFIG_IP_NF_TFTP=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_QUAKE3=m +CONFIG_IP_NF_RTSP=m +CONFIG_IP_NF_MMS=m +CONFIG_IP_NF_CUSEEME=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_SET=m +CONFIG_IP_NF_SET_MAX=256 +CONFIG_IP_NF_SET_HASHSIZE=1024 +CONFIG_IP_NF_MATCH_SET=m +CONFIG_IP_NF_TARGET_SET=m +CONFIG_IP_NF_SET_IPMAP=m +CONFIG_IP_NF_SET_PORTMAP=m +CONFIG_IP_NF_SET_MACIPMAP=m +CONFIG_IP_NF_SET_IPHASH=m +CONFIG_IP_NF_SET_NETHASH=m +CONFIG_IP_NF_SET_IPPORTHASH=m +CONFIG_IP_NF_SET_IPTREE=m +CONFIG_IP_NF_MATCH_QUOTA=m +CONFIG_IP_NF_POOL=m +CONFIG_IP_POOL_STATISTICS=y +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_DSTLIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_MPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_TIME=m +CONFIG_IP_NF_MATCH_RANDOM=m +CONFIG_IP_NF_MATCH_PSD=m +CONFIG_IP_NF_MATCH_OSF=m +CONFIG_IP_NF_MATCH_NTH=m +CONFIG_IP_NF_MATCH_IPV4OPTIONS=m +CONFIG_IP_NF_MATCH_FUZZY=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_U32=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_REALM=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_CONNLIMIT=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_UNCLEAN=m +CONFIG_IP_NF_MATCH_STRING=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_NETLINK=m +CONFIG_IP_NF_TARGET_IPV4OPTSSTRIP=m +CONFIG_IP_NF_TARGET_MIRROR=m +CONFIG_IP_NF_TARGET_TARPIT=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_NAT_H323=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_NAT_PROTO_GRE=m +# CONFIG_IP_NF_NAT_SNMP_BASIC is not set +CONFIG_IP_NF_NAT_RTSP=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_QUAKE3=m +CONFIG_IP_NF_NAT_MMS=m +CONFIG_IP_NF_NAT_CUSEEME=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_TARGET_NOTRACK=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set + +# +# IP: Virtual Server Configuration +# +# CONFIG_IP_VS is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +CONFIG_ATM_CLIP_NO_ICMP=y +# CONFIG_ATM_LANE is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_VLAN_8021Q=m + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_CSZ=m +CONFIG_NET_SCH_HFSC=m +# CONFIG_NET_SCH_ATM is not set +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_QOS=y +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_CLS=y +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_POLICE=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +CONFIG_IPSEC=m + +# +# IPSec options (FreeS/WAN) +# +CONFIG_IPSEC_IPIP=y +CONFIG_IPSEC_AH=y +CONFIG_IPSEC_AUTH_HMAC_MD5=y +CONFIG_IPSEC_AUTH_HMAC_SHA1=y +CONFIG_IPSEC_ESP=y +CONFIG_IPSEC_ENC_3DES=y +CONFIG_IPSEC_ALG=y +CONFIG_IPSEC_ALG_MD5=m +CONFIG_IPSEC_ALG_SHA1=m +CONFIG_IPSEC_ALG_SHA2=m +CONFIG_IPSEC_ALG_3DES=m +CONFIG_IPSEC_ALG_AES=m +CONFIG_IPSEC_ALG_BLOWFISH=m +CONFIG_IPSEC_ALG_TWOFISH=m +CONFIG_IPSEC_ALG_SERPENT=m +CONFIG_IPSEC_ALG_CAST=m +# CONFIG_IPSEC_ALG_NULL is not set +# CONFIG_IPSEC_ALG_CRYPTOAPI is not set +# CONFIG_IPSEC_ALG_1DES is not set +CONFIG_IPSEC_IPCOMP=y +CONFIG_IPSEC_DEBUG=y +CONFIG_IPSEC_NAT_TRAVERSAL=y + +# +# Telephony Support +# +# CONFIG_PHONE is not set +# CONFIG_PHONE_IXJ is not set +# CONFIG_PHONE_IXJ_PCMCIA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_DELKIN=m +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_BLK_DEV_CMD640=y +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +CONFIG_BLK_DEV_ADMA100=y +CONFIG_BLK_DEV_AEC62XX=y +CONFIG_BLK_DEV_ALI15X3=y +# CONFIG_WDC_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +CONFIG_AMD74XX_OVERRIDE=y +CONFIG_BLK_DEV_ATIIXP=y +CONFIG_BLK_DEV_CMD64X=y +CONFIG_BLK_DEV_TRIFLEX=y +CONFIG_BLK_DEV_CY82C693=y +CONFIG_BLK_DEV_CS5530=y +CONFIG_BLK_DEV_HPT34X=y +# CONFIG_HPT34X_AUTODMA is not set +CONFIG_BLK_DEV_HPT366=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_BLK_DEV_NS87415=y +CONFIG_BLK_DEV_OPTI621=y +CONFIG_BLK_DEV_PDC202XX_OLD=y +# CONFIG_PDC202XX_BURST is not set +CONFIG_BLK_DEV_PDC202XX_NEW=y +# CONFIG_PDC202XX_FORCE is not set +CONFIG_BLK_DEV_RZ1000=y +CONFIG_BLK_DEV_SC1200=y +CONFIG_BLK_DEV_SVWKS=y +CONFIG_BLK_DEV_SIIMAGE=y +CONFIG_BLK_DEV_SIS5513=y +CONFIG_BLK_DEV_SLC90E66=y +CONFIG_BLK_DEV_TRM290=y +CONFIG_BLK_DEV_VIA82CXXX=y +# CONFIG_IDE_CHIPSETS is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +CONFIG_BLK_DEV_PDC202XX=y +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set +# CONFIG_BLK_DEV_ATARAID_MEDLEY is not set +# CONFIG_BLK_DEV_ATARAID_SII is not set + +# +# SCSI support +# +CONFIG_SCSI=m + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_SD_EXTRA_DEVS=8 +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=m + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AHA1740=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_PROBE_EISA_VL=y +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_BUILD_FIRMWARE is not set +CONFIG_AIC79XX_ENABLE_RD_STRM=y +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_MEGARAID=m +CONFIG_SCSI_MEGARAID2=m +CONFIG_SCSI_SATA=y +CONFIG_SCSI_SATA_AHCI=m +CONFIG_SCSI_SATA_SVW=m +CONFIG_SCSI_ATA_PIIX=m +CONFIG_SCSI_SATA_NV=m +CONFIG_SCSI_SATA_QSTOR=m +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_SX4=m +CONFIG_SCSI_SATA_SIL=m +CONFIG_SCSI_SATA_SIS=m +CONFIG_SCSI_SATA_ULI=m +CONFIG_SCSI_SATA_VIA=m +CONFIG_SCSI_SATA_VITESSE=m +CONFIG_SCSI_BUSLOGIC=m +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +CONFIG_SCSI_CPQFCTS=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_DMA=m +CONFIG_SCSI_EATA_PIO=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_FD_MCS=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_G_NCR5380_PORT=y +# CONFIG_SCSI_G_NCR5380_MEM is not set +CONFIG_SCSI_IBMMCA=m +CONFIG_IBMMCA_SCSI_ORDER_STANDARD=y +CONFIG_IBMMCA_SCSI_DEV_RESET=y +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_NCR_D700=m +CONFIG_53C700_IO_MAPPED=y +CONFIG_SCSI_NCR53C7xx=m +CONFIG_SCSI_NCR53C7xx_sync=y +CONFIG_SCSI_NCR53C7xx_FAST=y +CONFIG_SCSI_NCR53C7xx_DISCONNECT=y +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX=m +CONFIG_SCSI_SYM53C8XX=m +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=4 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX_PQS_PDS=y +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +CONFIG_SCSI_MCA_53C9X=m +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PCI2000=m +CONFIG_SCSI_PCI2220I=m +CONFIG_SCSI_PSI240I=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_ISP=m +CONFIG_SCSI_QLOGIC_FC=m +# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SEAGATE=m +CONFIG_SCSI_SIM710=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC390T=m +# CONFIG_SCSI_DC390T_NOGENSUPP is not set +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_NSP32=m +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +CONFIG_SCSI_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m + +# +# Fusion MPT device support +# +CONFIG_FUSION=m +# CONFIG_FUSION_BOOT is not set +CONFIG_FUSION_MAX_SGE=40 +# CONFIG_FUSION_ISENSE is not set +# CONFIG_FUSION_CTL is not set +CONFIG_FUSION_LAN=m +CONFIG_NET_FC=y + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_PCI is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL1=m +CONFIG_EL2=m +CONFIG_ELPLUS=m +CONFIG_EL16=m +CONFIG_EL3=m +CONFIG_3C515=m +CONFIG_ELMC=m +CONFIG_ELMC_II=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +CONFIG_ULTRAMCA=m +CONFIG_ULTRA=m +CONFIG_ULTRA32=m +CONFIG_SMC9194=m +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NI5010=m +CONFIG_NI52=m +CONFIG_NI65=m +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m +CONFIG_NET_ISA=y +CONFIG_E2100=m +CONFIG_EWRK3=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPLAN=m +CONFIG_LP486E=m +CONFIG_ETH16I=m +CONFIG_NE2000=m +CONFIG_SKMC=m +CONFIG_NE2_MCA=m +CONFIG_IBMLANA=m +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_CS89x0=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_DE4X5=m +CONFIG_DGRS=m +CONFIG_DM9102=m +# CONFIG_EEPRO100 is not set +# CONFIG_EEPRO100_PIO is not set +CONFIG_E100=m +CONFIG_LNE390=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_FORCEDETH=m +CONFIG_NE3210=m +CONFIG_ES3210=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +CONFIG_8139TOO_TUNE_TWISTER=y +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_WINBOND_840=m +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +# CONFIG_E1000_NAPI is not set +# CONFIG_MYRI_SBUS is not set +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +CONFIG_WAVELAN=m +CONFIG_ARLAN=m +CONFIG_AIRONET4500=m +CONFIG_AIRONET4500_NONCS=m +CONFIG_AIRONET4500_PNP=y +CONFIG_AIRONET4500_PCI=y +CONFIG_AIRONET4500_ISA=y +CONFIG_AIRONET4500_I365=y +# CONFIG_AIRONET4500_PROC is not set +CONFIG_AIRO=m +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_PCI_HERMES=m + +# +# Wireless Pcmcia cards support +# +CONFIG_PCMCIA_HERMES=m +CONFIG_AIRO_CS=m +# CONFIG_PCMCIA_ATMEL is not set + +# +# Prism54 PCI/PCMCIA GT/Duette Driver - 802.11(a/b/g) +# +CONFIG_PRISM54=m +CONFIG_FW_LOADER=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +CONFIG_NET_FC=y +# CONFIG_IPHASE5526 is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCMCIA_XIRTULIP=m +CONFIG_NET_PCMCIA_RADIO=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_WAVELAN=m +# CONFIG_AIRONET4500_CS is not set + +# +# ATM drivers +# +CONFIG_ATM_TCP=m +# CONFIG_ATM_LANAI is not set +# CONFIG_ATM_ENI is not set +# CONFIG_ATM_FIRESTREAM is not set +# CONFIG_ATM_ZATM is not set +# CONFIG_ATM_NICSTAR is not set +# CONFIG_ATM_IDT77252 is not set +# CONFIG_ATM_AMBASSADOR is not set +# CONFIG_ATM_HORIZON is not set +# CONFIG_ATM_IA is not set +# CONFIG_ATM_FORE200E_MAYBE is not set +# CONFIG_ATM_HE is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ISDN subsystem +# +CONFIG_ISDN=m +CONFIG_ISDN_BOOL=y +CONFIG_ISDN_PPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +# CONFIG_ISDN_AUDIO is not set + +# +# ISDN feature submodules +# +# CONFIG_ISDN_DRV_LOOP is not set +# CONFIG_ISDN_DIVERSION is not set + +# +# low-level hardware drivers +# + +# +# Passive ISDN cards +# +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_HISAX=y + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +CONFIG_HISAX_NO_SENDCOMPLETE=y +CONFIG_HISAX_NO_LLC=y +CONFIG_HISAX_NO_KEYPAD=y +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_MIC=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +# CONFIG_HISAX_DEBUG is not set +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_FRITZ_PCIPNP=m +# CONFIG_USB_AUERISDN is not set + +# +# Active ISDN cards +# +# CONFIG_ISDN_DRV_ICN is not set +# CONFIG_ISDN_DRV_PCBIT is not set +# CONFIG_ISDN_DRV_SC is not set +# CONFIG_ISDN_DRV_ACT2000 is not set +# CONFIG_ISDN_DRV_EICON is not set +# CONFIG_ISDN_DRV_TPAM is not set +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m +# CONFIG_ISDN_DRV_AVMB1_B1ISA is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCI is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set +# CONFIG_ISDN_DRV_AVMB1_T1ISA is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCMCIA is not set +# CONFIG_ISDN_DRV_AVMB1_AVM_CS is not set +# CONFIG_ISDN_DRV_AVMB1_T1PCI is not set +# CONFIG_ISDN_DRV_AVMB1_C4 is not set +# CONFIG_HYSDN is not set +# CONFIG_HYSDN_CAPI is not set + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +# CONFIG_CD_NO_IDESCSI is not set + +# +# Input core support +# +CONFIG_INPUT=m +CONFIG_INPUT_KEYBDEV=m +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_FRANDOM=y +CONFIG_SERIAL_EXTENDED=y +CONFIG_SERIAL_MANY_PORTS=y +CONFIG_SERIAL_SHARE_IRQ=y +# CONFIG_SERIAL_DETECT_IRQ is not set +# CONFIG_SERIAL_MULTIPORT is not set +# CONFIG_HUB6 is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +CONFIG_N_HDLC=m +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_IPMI_PANIC_EVENT is not set +# CONFIG_IPMI_DEVICE_INTERFACE is not set +# CONFIG_IPMI_KCS is not set +# CONFIG_IPMI_WATCHDOG is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_SCx200 is not set +# CONFIG_SCx200_GPIO is not set +# CONFIG_AMD_RNG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +CONFIG_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set + +# +# Direct Rendering Manager (XFree86 DRI support) +# +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=m +CONFIG_SYNCLINK_CS=m +# CONFIG_MWAVE is not set +# CONFIG_OBMOUSE is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_XFS_FS is not set +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_TRACE is not set +# CONFIG_XFS_DEBUG is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_DIRECTIO is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_NFSD_TCP is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="cp437" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_VGA_CONSOLE=y +CONFIG_VIDEO_SELECT=y +# CONFIG_MDA_CONSOLE is not set + +# +# Frame-buffer support +# +# CONFIG_FB is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_UHCI=m +CONFIG_USB_UHCI_ALT=m +CONFIG_USB_OHCI=m +# CONFIG_USB_SL811HS_ALT is not set +# CONFIG_USB_SL811HS is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +CONFIG_USB_ACM=m +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT=y +CONFIG_USB_HIDDEV=y +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_KAWETH=m +CONFIG_USB_CATC=m +CONFIG_USB_CDCETHER=m +CONFIG_USB_USBNET=m + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set +CONFIG_USB_SPEEDTOUCH=m + +# +# Support for USB gadgets +# +# CONFIG_USB_GADGET is not set + +# +# Bluetooth support +# +# CONFIG_BLUEZ is not set + +# +# Kernel hacking +# +# CONFIG_DEBUG_KERNEL is not set +CONFIG_LOG_BUF_SHIFT=0 + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_SHA1 is not set +CONFIG_CRYPTO_SHA256=y +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m +CONFIG_FW_LOADER=m diff --git a/config/kernel/kernel.config.i386.original b/config/kernel/kernel.config.i386.original new file mode 100644 index 0000000000..52ec1b2158 --- /dev/null +++ b/config/kernel/kernel.config.i386.original @@ -0,0 +1,1474 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_X86=y +# CONFIG_SBUS is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type and features +# +CONFIG_M386=y +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MELAN is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_X86_CMPXCHG is not set +# CONFIG_X86_XADD is not set +CONFIG_X86_L1_CACHE_SHIFT=4 +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +CONFIG_X86_PPRO_FENCE=y +# CONFIG_X86_F00F_WORKS_OK is not set +CONFIG_X86_MCE=y +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +# CONFIG_EDD is not set +# CONFIG_NOHIGHMEM is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_HIGHMEM=y +# CONFIG_HIGHIO is not set +CONFIG_MATH_EMULATION=y +# CONFIG_MTRR is not set +# CONFIG_SMP is not set +# CONFIG_X86_UP_APIC is not set +# CONFIG_X86_UP_IOAPIC is not set +# CONFIG_X86_TSC_DISABLE is not set + +# +# General setup +# +CONFIG_NET=y +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_ISA=y +# CONFIG_PCI_NAMES is not set +CONFIG_EISA=y +CONFIG_MCA=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +CONFIG_CARDBUS=y +CONFIG_TCIC=y +CONFIG_I82092=y +CONFIG_I82365=y + +# +# PCI Hotplug Support +# +# CONFIG_HOTPLUG_PCI is not set +# CONFIG_HOTPLUG_PCI_COMPAQ is not set +# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set +# CONFIG_HOTPLUG_PCI_ACPI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set +# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set +# CONFIG_HOTPLUG_PCI_PCIE is not set +# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_OOM_KILLER is not set +CONFIG_PM=y +CONFIG_APM=m +CONFIG_APM_IGNORE_USER_SUSPEND=y +# CONFIG_APM_DO_ENABLE is not set +# CONFIG_APM_CPU_IDLE is not set +# CONFIG_APM_DISPLAY_BLANK is not set +CONFIG_APM_RTC_IS_GMT=y +# CONFIG_APM_ALLOW_INTS is not set +# CONFIG_APM_REAL_MODE_POWER_OFF is not set + +# +# ACPI Support +# +CONFIG_ACPI=y +CONFIG_ACPI_BOOT=y +CONFIG_ACPI_BUS=y +CONFIG_ACPI_INTERPRETER=y +CONFIG_ACPI_EC=y +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PCI=y +CONFIG_ACPI_MMCONFIG=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_SYSTEM=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_THERMAL=m +# CONFIG_ACPI_ASUS is not set +# CONFIG_ACPI_TOSHIBA is not set +# CONFIG_ACPI_DEBUG is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Plug and Play configuration +# +CONFIG_PNP=m +CONFIG_ISAPNP=m + +# +# Block devices +# +CONFIG_BLK_DEV_FD=y +CONFIG_BLK_DEV_PS2=y +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +# CONFIG_CISS_SCSI_TAPE is not set +# CONFIG_CISS_MONITOR_THREAD is not set +CONFIG_BLK_DEV_DAC960=m +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=5120 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_STATS is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_FWMARK is not set +CONFIG_IP_ROUTE_NAT=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_TOS=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +CONFIG_SYN_COOKIES=y + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_CT_PROTO_GRE=m +CONFIG_IP_NF_PPTP=m +# CONFIG_IP_NF_PPTP_DEBUG is not set +CONFIG_IP_NF_H323=m +# CONFIG_IP_NF_AMANDA is not set +CONFIG_IP_NF_TFTP=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_QUAKE3=m +CONFIG_IP_NF_RTSP=m +CONFIG_IP_NF_MMS=m +CONFIG_IP_NF_CUSEEME=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_SET=m +CONFIG_IP_NF_SET_MAX=256 +CONFIG_IP_NF_SET_HASHSIZE=1024 +CONFIG_IP_NF_MATCH_SET=m +CONFIG_IP_NF_TARGET_SET=m +CONFIG_IP_NF_SET_IPMAP=m +CONFIG_IP_NF_SET_PORTMAP=m +CONFIG_IP_NF_SET_MACIPMAP=m +CONFIG_IP_NF_SET_IPHASH=m +CONFIG_IP_NF_SET_NETHASH=m +CONFIG_IP_NF_SET_IPPORTHASH=m +CONFIG_IP_NF_SET_IPTREE=m +CONFIG_IP_NF_MATCH_QUOTA=m +CONFIG_IP_NF_POOL=m +CONFIG_IP_POOL_STATISTICS=y +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_DSTLIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_MPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_TIME=m +CONFIG_IP_NF_MATCH_RANDOM=m +CONFIG_IP_NF_MATCH_PSD=m +CONFIG_IP_NF_MATCH_OSF=m +CONFIG_IP_NF_MATCH_NTH=m +CONFIG_IP_NF_MATCH_IPV4OPTIONS=m +CONFIG_IP_NF_MATCH_FUZZY=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_U32=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_REALM=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_CONNLIMIT=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_UNCLEAN=m +CONFIG_IP_NF_MATCH_STRING=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_NETLINK=m +CONFIG_IP_NF_TARGET_IPV4OPTSSTRIP=m +CONFIG_IP_NF_TARGET_MIRROR=m +CONFIG_IP_NF_TARGET_TARPIT=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_NAT_H323=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_NAT_PROTO_GRE=m +# CONFIG_IP_NF_NAT_SNMP_BASIC is not set +CONFIG_IP_NF_NAT_RTSP=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_QUAKE3=m +CONFIG_IP_NF_NAT_MMS=m +CONFIG_IP_NF_NAT_CUSEEME=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_TARGET_NOTRACK=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set + +# +# IP: Virtual Server Configuration +# +# CONFIG_IP_VS is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +CONFIG_ATM_CLIP_NO_ICMP=y +# CONFIG_ATM_LANE is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_VLAN_8021Q=m + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_CSZ=m +CONFIG_NET_SCH_HFSC=m +# CONFIG_NET_SCH_ATM is not set +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +# CONFIG_NET_SCH_NETEM is not set +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_QOS=y +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_CLS=y +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_POLICE=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +CONFIG_IPSEC=m + +# +# IPSec options (FreeS/WAN) +# +CONFIG_IPSEC_IPIP=y +CONFIG_IPSEC_AH=y +CONFIG_IPSEC_AUTH_HMAC_MD5=y +CONFIG_IPSEC_AUTH_HMAC_SHA1=y +CONFIG_IPSEC_ESP=y +CONFIG_IPSEC_ENC_3DES=y +CONFIG_IPSEC_ALG=y +CONFIG_IPSEC_ALG_MD5=m +CONFIG_IPSEC_ALG_SHA1=m +CONFIG_IPSEC_ALG_SHA2=m +CONFIG_IPSEC_ALG_3DES=m +CONFIG_IPSEC_ALG_AES=m +CONFIG_IPSEC_ALG_BLOWFISH=m +CONFIG_IPSEC_ALG_TWOFISH=m +CONFIG_IPSEC_ALG_SERPENT=m +CONFIG_IPSEC_ALG_CAST=m +# CONFIG_IPSEC_ALG_NULL is not set +# CONFIG_IPSEC_ALG_CRYPTOAPI is not set +# CONFIG_IPSEC_ALG_1DES is not set +CONFIG_IPSEC_IPCOMP=y +CONFIG_IPSEC_DEBUG=y +CONFIG_IPSEC_NAT_TRAVERSAL=y + +# +# Telephony Support +# +# CONFIG_PHONE is not set +# CONFIG_PHONE_IXJ is not set +# CONFIG_PHONE_IXJ_PCMCIA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_DELKIN=m +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_BLK_DEV_CMD640=y +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +CONFIG_BLK_DEV_ADMA100=y +CONFIG_BLK_DEV_AEC62XX=y +CONFIG_BLK_DEV_ALI15X3=y +# CONFIG_WDC_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +CONFIG_AMD74XX_OVERRIDE=y +CONFIG_BLK_DEV_ATIIXP=y +CONFIG_BLK_DEV_CMD64X=y +CONFIG_BLK_DEV_TRIFLEX=y +CONFIG_BLK_DEV_CY82C693=y +CONFIG_BLK_DEV_CS5530=y +CONFIG_BLK_DEV_HPT34X=y +# CONFIG_HPT34X_AUTODMA is not set +CONFIG_BLK_DEV_HPT366=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_BLK_DEV_NS87415=y +CONFIG_BLK_DEV_OPTI621=y +CONFIG_BLK_DEV_PDC202XX_OLD=y +# CONFIG_PDC202XX_BURST is not set +CONFIG_BLK_DEV_PDC202XX_NEW=y +# CONFIG_PDC202XX_FORCE is not set +CONFIG_BLK_DEV_RZ1000=y +CONFIG_BLK_DEV_SC1200=y +CONFIG_BLK_DEV_SVWKS=y +CONFIG_BLK_DEV_SIIMAGE=y +CONFIG_BLK_DEV_SIS5513=y +CONFIG_BLK_DEV_SLC90E66=y +CONFIG_BLK_DEV_TRM290=y +CONFIG_BLK_DEV_VIA82CXXX=y +# CONFIG_IDE_CHIPSETS is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +CONFIG_BLK_DEV_PDC202XX=y +CONFIG_BLK_DEV_ATARAID=m +CONFIG_BLK_DEV_ATARAID_PDC=m +CONFIG_BLK_DEV_ATARAID_HPT=m +CONFIG_BLK_DEV_ATARAID_MEDLEY=m +CONFIG_BLK_DEV_ATARAID_SII=m + +# +# SCSI support +# +CONFIG_SCSI=m + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_SD_EXTRA_DEVS=8 +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=m + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AHA1740=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_PROBE_EISA_VL=y +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_BUILD_FIRMWARE is not set +CONFIG_AIC79XX_ENABLE_RD_STRM=y +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_MEGARAID=m +CONFIG_SCSI_MEGARAID2=m +CONFIG_SCSI_SATA=y +CONFIG_SCSI_SATA_AHCI=m +CONFIG_SCSI_SATA_SVW=m +CONFIG_SCSI_ATA_PIIX=m +CONFIG_SCSI_SATA_NV=m +CONFIG_SCSI_SATA_QSTOR=m +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_SX4=m +CONFIG_SCSI_SATA_SIL=m +CONFIG_SCSI_SATA_SIS=m +CONFIG_SCSI_SATA_ULI=m +CONFIG_SCSI_SATA_VIA=m +CONFIG_SCSI_SATA_VITESSE=m +CONFIG_SCSI_BUSLOGIC=m +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +CONFIG_SCSI_CPQFCTS=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_DMA=m +CONFIG_SCSI_EATA_PIO=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_FD_MCS=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_G_NCR5380_PORT=y +# CONFIG_SCSI_G_NCR5380_MEM is not set +CONFIG_SCSI_IBMMCA=m +CONFIG_IBMMCA_SCSI_ORDER_STANDARD=y +CONFIG_IBMMCA_SCSI_DEV_RESET=y +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_NCR_D700=m +CONFIG_53C700_IO_MAPPED=y +CONFIG_SCSI_NCR53C7xx=m +CONFIG_SCSI_NCR53C7xx_sync=y +CONFIG_SCSI_NCR53C7xx_FAST=y +CONFIG_SCSI_NCR53C7xx_DISCONNECT=y +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX=m +CONFIG_SCSI_SYM53C8XX=m +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=4 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX_PQS_PDS=y +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +CONFIG_SCSI_MCA_53C9X=m +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PCI2000=m +CONFIG_SCSI_PCI2220I=m +CONFIG_SCSI_PSI240I=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_ISP=m +CONFIG_SCSI_QLOGIC_FC=m +# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SEAGATE=m +CONFIG_SCSI_SIM710=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC390T=m +# CONFIG_SCSI_DC390T_NOGENSUPP is not set +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_NSP32=m +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +CONFIG_SCSI_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m + +# +# Fusion MPT device support +# +CONFIG_FUSION=m +# CONFIG_FUSION_BOOT is not set +CONFIG_FUSION_MAX_SGE=40 +# CONFIG_FUSION_ISENSE is not set +# CONFIG_FUSION_CTL is not set +CONFIG_FUSION_LAN=m +CONFIG_NET_FC=y + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_PCI is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL1=m +CONFIG_EL2=m +CONFIG_ELPLUS=m +CONFIG_EL16=m +CONFIG_EL3=m +CONFIG_3C515=m +CONFIG_ELMC=m +CONFIG_ELMC_II=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +CONFIG_ULTRAMCA=m +CONFIG_ULTRA=m +CONFIG_ULTRA32=m +CONFIG_SMC9194=m +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NI5010=m +CONFIG_NI52=m +CONFIG_NI65=m +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m +CONFIG_NET_ISA=y +CONFIG_E2100=m +CONFIG_EWRK3=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPLAN=m +CONFIG_LP486E=m +CONFIG_ETH16I=m +CONFIG_NE2000=m +CONFIG_SKMC=m +CONFIG_NE2_MCA=m +CONFIG_IBMLANA=m +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_CS89x0=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_DE4X5=m +CONFIG_DGRS=m +CONFIG_DM9102=m +# CONFIG_EEPRO100 is not set +# CONFIG_EEPRO100_PIO is not set +CONFIG_E100=m +CONFIG_LNE390=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_FORCEDETH=m +CONFIG_NE3210=m +CONFIG_ES3210=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +CONFIG_8139TOO_TUNE_TWISTER=y +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_WINBOND_840=m +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +# CONFIG_E1000_NAPI is not set +# CONFIG_MYRI_SBUS is not set +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +CONFIG_WAVELAN=m +CONFIG_ARLAN=m +CONFIG_AIRONET4500=m +CONFIG_AIRONET4500_NONCS=m +CONFIG_AIRONET4500_PNP=y +CONFIG_AIRONET4500_PCI=y +CONFIG_AIRONET4500_ISA=y +CONFIG_AIRONET4500_I365=y +# CONFIG_AIRONET4500_PROC is not set +CONFIG_AIRO=m +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_PCI_HERMES=m + +# +# Wireless Pcmcia cards support +# +CONFIG_PCMCIA_HERMES=m +CONFIG_AIRO_CS=m +# CONFIG_PCMCIA_ATMEL is not set + +# +# Prism54 PCI/PCMCIA GT/Duette Driver - 802.11(a/b/g) +# +CONFIG_PRISM54=m +CONFIG_FW_LOADER=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +CONFIG_NET_FC=y +# CONFIG_IPHASE5526 is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCMCIA_XIRTULIP=m +CONFIG_NET_PCMCIA_RADIO=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_WAVELAN=m +# CONFIG_AIRONET4500_CS is not set + +# +# ATM drivers +# +CONFIG_ATM_TCP=m +# CONFIG_ATM_LANAI is not set +# CONFIG_ATM_ENI is not set +# CONFIG_ATM_FIRESTREAM is not set +# CONFIG_ATM_ZATM is not set +# CONFIG_ATM_NICSTAR is not set +# CONFIG_ATM_IDT77252 is not set +# CONFIG_ATM_AMBASSADOR is not set +# CONFIG_ATM_HORIZON is not set +# CONFIG_ATM_IA is not set +# CONFIG_ATM_FORE200E_MAYBE is not set +# CONFIG_ATM_HE is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ISDN subsystem +# +CONFIG_ISDN=m +CONFIG_ISDN_BOOL=y +CONFIG_ISDN_PPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +# CONFIG_ISDN_AUDIO is not set + +# +# ISDN feature submodules +# +# CONFIG_ISDN_DRV_LOOP is not set +# CONFIG_ISDN_DIVERSION is not set + +# +# low-level hardware drivers +# + +# +# Passive ISDN cards +# +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_HISAX=y + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +CONFIG_HISAX_NO_SENDCOMPLETE=y +CONFIG_HISAX_NO_LLC=y +CONFIG_HISAX_NO_KEYPAD=y +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_MIC=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +# CONFIG_HISAX_DEBUG is not set +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_FRITZ_PCIPNP=m +# CONFIG_USB_AUERISDN is not set + +# +# Active ISDN cards +# +# CONFIG_ISDN_DRV_ICN is not set +# CONFIG_ISDN_DRV_PCBIT is not set +# CONFIG_ISDN_DRV_SC is not set +# CONFIG_ISDN_DRV_ACT2000 is not set +# CONFIG_ISDN_DRV_EICON is not set +# CONFIG_ISDN_DRV_TPAM is not set +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m +# CONFIG_ISDN_DRV_AVMB1_B1ISA is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCI is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set +# CONFIG_ISDN_DRV_AVMB1_T1ISA is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCMCIA is not set +# CONFIG_ISDN_DRV_AVMB1_AVM_CS is not set +# CONFIG_ISDN_DRV_AVMB1_T1PCI is not set +# CONFIG_ISDN_DRV_AVMB1_C4 is not set +# CONFIG_HYSDN is not set +# CONFIG_HYSDN_CAPI is not set + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +# CONFIG_CD_NO_IDESCSI is not set + +# +# Input core support +# +CONFIG_INPUT=m +CONFIG_INPUT_KEYBDEV=m +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_FRANDOM=y +CONFIG_SERIAL_EXTENDED=y +CONFIG_SERIAL_MANY_PORTS=y +CONFIG_SERIAL_SHARE_IRQ=y +# CONFIG_SERIAL_DETECT_IRQ is not set +# CONFIG_SERIAL_MULTIPORT is not set +# CONFIG_HUB6 is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +CONFIG_N_HDLC=m +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_IPMI_PANIC_EVENT is not set +# CONFIG_IPMI_DEVICE_INTERFACE is not set +# CONFIG_IPMI_KCS is not set +# CONFIG_IPMI_WATCHDOG is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_SCx200 is not set +# CONFIG_SCx200_GPIO is not set +# CONFIG_AMD_RNG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +CONFIG_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set + +# +# Direct Rendering Manager (XFree86 DRI support) +# +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=m +CONFIG_SYNCLINK_CS=m +# CONFIG_MWAVE is not set +# CONFIG_OBMOUSE is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_XFS_FS is not set +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_TRACE is not set +# CONFIG_XFS_DEBUG is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_DIRECTIO is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_NFSD_TCP is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="cp437" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_VGA_CONSOLE=y +CONFIG_VIDEO_SELECT=y +# CONFIG_MDA_CONSOLE is not set + +# +# Frame-buffer support +# +# CONFIG_FB is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_UHCI=m +CONFIG_USB_UHCI_ALT=m +CONFIG_USB_OHCI=m +# CONFIG_USB_SL811HS_ALT is not set +# CONFIG_USB_SL811HS is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +CONFIG_USB_ACM=m +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT=y +CONFIG_USB_HIDDEV=y +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_KAWETH=m +CONFIG_USB_CATC=m +CONFIG_USB_CDCETHER=m +CONFIG_USB_USBNET=m + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set +CONFIG_USB_SPEEDTOUCH=m + +# +# Support for USB gadgets +# +# CONFIG_USB_GADGET is not set + +# +# Bluetooth support +# +# CONFIG_BLUEZ is not set + +# +# Kernel hacking +# +# CONFIG_DEBUG_KERNEL is not set +CONFIG_LOG_BUF_SHIFT=0 + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_SHA1 is not set +CONFIG_CRYPTO_SHA256=y +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m +CONFIG_FW_LOADER=m diff --git a/config/kernel/kernel.config.i386.smp b/config/kernel/kernel.config.i386.smp new file mode 100644 index 0000000000..b40d420528 --- /dev/null +++ b/config/kernel/kernel.config.i386.smp @@ -0,0 +1,1478 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_X86=y +# CONFIG_SBUS is not set +CONFIG_UID16=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y + +# +# Processor type and features +# +CONFIG_M386=y +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MELAN is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_X86_CMPXCHG is not set +# CONFIG_X86_XADD is not set +CONFIG_X86_L1_CACHE_SHIFT=4 +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +CONFIG_X86_PPRO_FENCE=y +# CONFIG_X86_F00F_WORKS_OK is not set +CONFIG_X86_MCE=y +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +# CONFIG_EDD is not set +# CONFIG_NOHIGHMEM is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_HIGHMEM=y +# CONFIG_HIGHIO is not set +CONFIG_MATH_EMULATION=y +# CONFIG_MTRR is not set +CONFIG_SMP=y +CONFIG_NR_CPUS=32 +# CONFIG_X86_NUMA is not set +# CONFIG_X86_TSC_DISABLE is not set + +# +# General setup +# +CONFIG_NET=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_ISA=y +# CONFIG_PCI_NAMES is not set +CONFIG_EISA=y +CONFIG_MCA=y +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +CONFIG_CARDBUS=y +CONFIG_TCIC=y +CONFIG_I82092=y +CONFIG_I82365=y + +# +# PCI Hotplug Support +# +# CONFIG_HOTPLUG_PCI is not set +# CONFIG_HOTPLUG_PCI_COMPAQ is not set +# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set +# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set +# CONFIG_HOTPLUG_PCI_SHPC_PHPRM_LEGACY is not set +# CONFIG_HOTPLUG_PCI_PCIE is not set +# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +# CONFIG_HOTPLUG_PCI_IBM is not set +# CONFIG_HOTPLUG_PCI_ACPI is not set +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_OOM_KILLER is not set +CONFIG_PM=y +CONFIG_APM=m +CONFIG_APM_IGNORE_USER_SUSPEND=y +# CONFIG_APM_DO_ENABLE is not set +# CONFIG_APM_CPU_IDLE is not set +# CONFIG_APM_DISPLAY_BLANK is not set +CONFIG_APM_RTC_IS_GMT=y +# CONFIG_APM_ALLOW_INTS is not set +# CONFIG_APM_REAL_MODE_POWER_OFF is not set + +# +# ACPI Support +# +CONFIG_ACPI=y +CONFIG_ACPI_BOOT=y +CONFIG_ACPI_BUS=y +CONFIG_ACPI_INTERPRETER=y +CONFIG_ACPI_EC=y +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PCI=y +CONFIG_ACPI_MMCONFIG=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_SYSTEM=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_THERMAL=m +# CONFIG_ACPI_ASUS is not set +# CONFIG_ACPI_TOSHIBA is not set +# CONFIG_ACPI_DEBUG is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Plug and Play configuration +# +CONFIG_PNP=m +CONFIG_ISAPNP=m + +# +# Block devices +# +CONFIG_BLK_DEV_FD=y +CONFIG_BLK_DEV_PS2=y +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_CISS_SCSI_TAPE=n +CONFIG_CISS_MONITOR_THREAD=n +CONFIG_BLK_DEV_DAC960=m +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=5120 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_STATS is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +# CONFIG_NETLINK_DEV is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_FWMARK is not set +CONFIG_IP_ROUTE_NAT=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_TOS=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +CONFIG_SYN_COOKIES=y + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_CT_PROTO_GRE=m +CONFIG_IP_NF_PPTP=m +# CONFIG_IP_NF_PPTP_DEBUG is not set +CONFIG_IP_NF_H323=m +# CONFIG_IP_NF_AMANDA is not set +CONFIG_IP_NF_TFTP=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_QUAKE3=m +CONFIG_IP_NF_RTSP=m +CONFIG_IP_NF_MMS=m +CONFIG_IP_NF_CUSEEME=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_SET=m +CONFIG_IP_NF_SET_MAX=256 +CONFIG_IP_NF_SET_HASHSIZE=1024 +CONFIG_IP_NF_MATCH_SET=m +CONFIG_IP_NF_TARGET_SET=m +CONFIG_IP_NF_SET_IPMAP=m +CONFIG_IP_NF_SET_PORTMAP=m +CONFIG_IP_NF_SET_MACIPMAP=m +CONFIG_IP_NF_SET_IPHASH=m +CONFIG_IP_NF_SET_NETHASH=m +CONFIG_IP_NF_SET_IPPORTHASH=m +CONFIG_IP_NF_SET_IPTREE=m +CONFIG_IP_NF_MATCH_QUOTA=m +CONFIG_IP_NF_POOL=m +CONFIG_IP_POOL_STATISTICS=y +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_DSTLIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_MPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_TIME=m +CONFIG_IP_NF_MATCH_RANDOM=m +CONFIG_IP_NF_MATCH_PSD=m +CONFIG_IP_NF_MATCH_OSF=m +CONFIG_IP_NF_MATCH_NTH=m +CONFIG_IP_NF_MATCH_IPV4OPTIONS=m +CONFIG_IP_NF_MATCH_FUZZY=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_U32=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_REALM=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_CONNLIMIT=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_UNCLEAN=m +CONFIG_IP_NF_MATCH_STRING=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_NETLINK=m +CONFIG_IP_NF_TARGET_IPV4OPTSSTRIP=m +CONFIG_IP_NF_TARGET_MIRROR=m +CONFIG_IP_NF_TARGET_TARPIT=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_NAT_H323=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_NAT_PROTO_GRE=m +# CONFIG_IP_NF_NAT_SNMP_BASIC is not set +CONFIG_IP_NF_NAT_RTSP=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_QUAKE3=m +CONFIG_IP_NF_NAT_MMS=m +CONFIG_IP_NF_NAT_CUSEEME=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_TARGET_NOTRACK=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set + +# +# IP: Virtual Server Configuration +# +# CONFIG_IP_VS is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +CONFIG_ATM_CLIP_NO_ICMP=y +# CONFIG_ATM_LANE is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_VLAN_8021Q=m + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set + +# +# Appletalk devices +# +# CONFIG_DEV_APPLETALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_CSZ=m +CONFIG_NET_SCH_HFSC=m +# CONFIG_NET_SCH_ATM is not set +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +# CONFIG_NET_SCH_NETEM is not set +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_QOS=y +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_CLS=y +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_POLICE=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +CONFIG_IPSEC=m + +# +# IPSec options (FreeS/WAN) +# +CONFIG_IPSEC_IPIP=y +CONFIG_IPSEC_AH=y +CONFIG_IPSEC_AUTH_HMAC_MD5=y +CONFIG_IPSEC_AUTH_HMAC_SHA1=y +CONFIG_IPSEC_ESP=y +CONFIG_IPSEC_ENC_3DES=y +CONFIG_IPSEC_ALG=y +CONFIG_IPSEC_ALG_MD5=m +CONFIG_IPSEC_ALG_SHA1=m +CONFIG_IPSEC_ALG_SHA2=m +CONFIG_IPSEC_ALG_3DES=m +CONFIG_IPSEC_ALG_AES=m +CONFIG_IPSEC_ALG_BLOWFISH=m +CONFIG_IPSEC_ALG_TWOFISH=m +CONFIG_IPSEC_ALG_SERPENT=m +CONFIG_IPSEC_ALG_CAST=m +# CONFIG_IPSEC_ALG_NULL is not set +# CONFIG_IPSEC_ALG_CRYPTOAPI is not set +# CONFIG_IPSEC_ALG_1DES is not set +CONFIG_IPSEC_IPCOMP=y +CONFIG_IPSEC_DEBUG=y +CONFIG_IPSEC_NAT_TRAVERSAL=y + +# +# Telephony Support +# +# CONFIG_PHONE is not set +# CONFIG_PHONE_IXJ is not set +# CONFIG_PHONE_IXJ_PCMCIA is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_IDEDISK_STROKE is not set +# CONFIG_BLK_DEV_IDECS is not set +CONFIG_BLK_DEV_DELKIN=m +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_BLK_DEV_CMD640=y +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_PCI_WIP is not set +CONFIG_BLK_DEV_ADMA100=y +CONFIG_BLK_DEV_AEC62XX=y +CONFIG_BLK_DEV_ALI15X3=y +# CONFIG_WDC_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +CONFIG_AMD74XX_OVERRIDE=y +CONFIG_BLK_DEV_ATIIXP=y +CONFIG_BLK_DEV_CMD64X=y +CONFIG_BLK_DEV_TRIFLEX=y +CONFIG_BLK_DEV_CY82C693=y +CONFIG_BLK_DEV_CS5530=y +CONFIG_BLK_DEV_HPT34X=y +# CONFIG_HPT34X_AUTODMA is not set +CONFIG_BLK_DEV_HPT366=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_BLK_DEV_NS87415=y +CONFIG_BLK_DEV_OPTI621=y +CONFIG_BLK_DEV_PDC202XX_OLD=y +# CONFIG_PDC202XX_BURST is not set +CONFIG_BLK_DEV_PDC202XX_NEW=y +# CONFIG_PDC202XX_FORCE is not set +CONFIG_BLK_DEV_RZ1000=y +CONFIG_BLK_DEV_SC1200=y +CONFIG_BLK_DEV_SVWKS=y +CONFIG_BLK_DEV_SIIMAGE=y +CONFIG_BLK_DEV_SIS5513=y +CONFIG_BLK_DEV_SLC90E66=y +CONFIG_BLK_DEV_TRM290=y +CONFIG_BLK_DEV_VIA82CXXX=y +# CONFIG_IDE_CHIPSETS is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_DMA_NONPCI is not set +CONFIG_BLK_DEV_PDC202XX=y +CONFIG_BLK_DEV_ATARAID=m +CONFIG_BLK_DEV_ATARAID_PDC=m +CONFIG_BLK_DEV_ATARAID_HPT=m +CONFIG_BLK_DEV_ATARAID_MEDLEY=m +CONFIG_BLK_DEV_ATARAID_SII=m + +# +# SCSI support +# +CONFIG_SCSI=m + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_SD_EXTRA_DEVS=8 +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_SR_EXTRA_DEVS=2 +CONFIG_CHR_DEV_SG=m + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AHA1740=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_PROBE_EISA_VL=y +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_BUILD_FIRMWARE is not set +CONFIG_AIC79XX_ENABLE_RD_STRM=y +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_MEGARAID=m +CONFIG_SCSI_MEGARAID2=m +CONFIG_SCSI_SATA=y +CONFIG_SCSI_SATA_AHCI=m +CONFIG_SCSI_SATA_SVW=m +CONFIG_SCSI_ATA_PIIX=m +CONFIG_SCSI_SATA_NV=m +CONFIG_SCSI_SATA_QSTOR=m +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_SX4=m +CONFIG_SCSI_SATA_SIL=m +CONFIG_SCSI_SATA_SIS=m +CONFIG_SCSI_SATA_ULI=m +CONFIG_SCSI_SATA_VIA=m +CONFIG_SCSI_SATA_VITESSE=m +CONFIG_SCSI_BUSLOGIC=m +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +CONFIG_SCSI_CPQFCTS=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_DMA=m +CONFIG_SCSI_EATA_PIO=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_FD_MCS=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_G_NCR5380_PORT=y +# CONFIG_SCSI_G_NCR5380_MEM is not set +CONFIG_SCSI_IBMMCA=m +CONFIG_IBMMCA_SCSI_ORDER_STANDARD=y +CONFIG_IBMMCA_SCSI_DEV_RESET=y +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_NCR_D700=m +CONFIG_53C700_IO_MAPPED=y +CONFIG_SCSI_NCR53C7xx=m +CONFIG_SCSI_NCR53C7xx_sync=y +CONFIG_SCSI_NCR53C7xx_FAST=y +CONFIG_SCSI_NCR53C7xx_DISCONNECT=y +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX=m +CONFIG_SCSI_SYM53C8XX=m +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=4 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set +CONFIG_SCSI_NCR53C8XX_PQS_PDS=y +# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set +CONFIG_SCSI_MCA_53C9X=m +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PCI2000=m +CONFIG_SCSI_PCI2220I=m +CONFIG_SCSI_PSI240I=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_ISP=m +CONFIG_SCSI_QLOGIC_FC=m +# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_SEAGATE=m +CONFIG_SCSI_SIM710=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC390T=m +# CONFIG_SCSI_DC390T_NOGENSUPP is not set +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_NSP32=m +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +CONFIG_SCSI_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m + +# +# Fusion MPT device support +# +CONFIG_FUSION=m +# CONFIG_FUSION_BOOT is not set +CONFIG_FUSION_MAX_SGE=40 +# CONFIG_FUSION_ISENSE is not set +# CONFIG_FUSION_CTL is not set +CONFIG_FUSION_LAN=m +CONFIG_NET_FC=y + +# +# IEEE 1394 (FireWire) support (EXPERIMENTAL) +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_PCI is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +# CONFIG_ETHERTAP is not set +# CONFIG_NET_SB1000 is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_SUNLANCE is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL1=m +CONFIG_EL2=m +CONFIG_ELPLUS=m +CONFIG_EL16=m +CONFIG_EL3=m +CONFIG_3C515=m +CONFIG_ELMC=m +CONFIG_ELMC_II=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +CONFIG_ULTRAMCA=m +CONFIG_ULTRA=m +CONFIG_ULTRA32=m +CONFIG_SMC9194=m +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NI5010=m +CONFIG_NI52=m +CONFIG_NI65=m +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m +CONFIG_NET_ISA=y +CONFIG_E2100=m +CONFIG_EWRK3=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPLAN=m +CONFIG_LP486E=m +CONFIG_ETH16I=m +CONFIG_NE2000=m +CONFIG_SKMC=m +CONFIG_NE2_MCA=m +CONFIG_IBMLANA=m +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_CS89x0=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_DE4X5=m +CONFIG_DGRS=m +CONFIG_DM9102=m +# CONFIG_EEPRO100 is not set +# CONFIG_EEPRO100_PIO is not set +CONFIG_E100=m +CONFIG_LNE390=m +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_FORCEDETH=m +CONFIG_NE3210=m +CONFIG_ES3210=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +CONFIG_8139TOO_TUNE_TWISTER=y +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_WINBOND_840=m +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +# CONFIG_E1000_NAPI is not set +# CONFIG_MYRI_SBUS is not set +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +CONFIG_WAVELAN=m +CONFIG_ARLAN=m +CONFIG_AIRONET4500=m +CONFIG_AIRONET4500_NONCS=m +CONFIG_AIRONET4500_PNP=y +CONFIG_AIRONET4500_PCI=y +CONFIG_AIRONET4500_ISA=y +CONFIG_AIRONET4500_I365=y +# CONFIG_AIRONET4500_PROC is not set +CONFIG_AIRO=m +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_PCI_HERMES=m + +# +# Wireless Pcmcia cards support +# +CONFIG_PCMCIA_HERMES=m +CONFIG_AIRO_CS=m +# CONFIG_PCMCIA_ATMEL is not set + +# +# Prism54 PCI/PCMCIA GT/Duette Driver - 802.11(a/b/g) +# +CONFIG_PRISM54=m +CONFIG_FW_LOADER=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +CONFIG_NET_FC=y +# CONFIG_IPHASE5526 is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_AXNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCMCIA_XIRTULIP=m +CONFIG_NET_PCMCIA_RADIO=y +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_WAVELAN=m +# CONFIG_AIRONET4500_CS is not set + +# +# ATM drivers +# +CONFIG_ATM_TCP=m +# CONFIG_ATM_LANAI is not set +# CONFIG_ATM_ENI is not set +# CONFIG_ATM_FIRESTREAM is not set +# CONFIG_ATM_ZATM is not set +# CONFIG_ATM_NICSTAR is not set +# CONFIG_ATM_IDT77252 is not set +# CONFIG_ATM_AMBASSADOR is not set +# CONFIG_ATM_HORIZON is not set +# CONFIG_ATM_IA is not set +# CONFIG_ATM_FORE200E_MAYBE is not set +# CONFIG_ATM_HE is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +# CONFIG_IRDA is not set + +# +# ISDN subsystem +# +CONFIG_ISDN=m +CONFIG_ISDN_BOOL=y +CONFIG_ISDN_PPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_AUDIO=y + +# +# ISDN feature submodules +# +# CONFIG_ISDN_DRV_LOOP is not set +# CONFIG_ISDN_DIVERSION is not set + +# +# low-level hardware drivers +# + +# +# Passive ISDN cards +# +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_HISAX=y + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +CONFIG_HISAX_NO_SENDCOMPLETE=y +CONFIG_HISAX_NO_LLC=y +CONFIG_HISAX_NO_KEYPAD=y +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_MIC=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +# CONFIG_HISAX_DEBUG is not set +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_FRITZ_PCIPNP=m +# CONFIG_USB_AUERISDN is not set + +# +# Active ISDN cards +# +# CONFIG_ISDN_DRV_ICN is not set +# CONFIG_ISDN_DRV_PCBIT is not set +# CONFIG_ISDN_DRV_SC is not set +# CONFIG_ISDN_DRV_ACT2000 is not set +# CONFIG_ISDN_DRV_EICON is not set +# CONFIG_ISDN_DRV_TPAM is not set +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m +# CONFIG_ISDN_DRV_AVMB1_B1ISA is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCI is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCIV4 is not set +# CONFIG_ISDN_DRV_AVMB1_T1ISA is not set +# CONFIG_ISDN_DRV_AVMB1_B1PCMCIA is not set +# CONFIG_ISDN_DRV_AVMB1_AVM_CS is not set +# CONFIG_ISDN_DRV_AVMB1_T1PCI is not set +# CONFIG_ISDN_DRV_AVMB1_C4 is not set +# CONFIG_HYSDN is not set +# CONFIG_HYSDN_CAPI is not set + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +# CONFIG_CD_NO_IDESCSI is not set + +# +# Input core support +# +CONFIG_INPUT=m +CONFIG_INPUT_KEYBDEV=m +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_FRANDOM=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_SERIAL_EXTENDED=y +CONFIG_SERIAL_MANY_PORTS=y +CONFIG_SERIAL_SHARE_IRQ=y +# CONFIG_SERIAL_DETECT_IRQ is not set +# CONFIG_SERIAL_MULTIPORT is not set +# CONFIG_HUB6 is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_DIGI is not set +# CONFIG_ESPSERIAL is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINK is not set +# CONFIG_SYNCLINKMP is not set +CONFIG_N_HDLC=m +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_IPMI_PANIC_EVENT is not set +# CONFIG_IPMI_DEVICE_INTERFACE is not set +# CONFIG_IPMI_KCS is not set +# CONFIG_IPMI_WATCHDOG is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_SCx200 is not set +# CONFIG_SCx200_GPIO is not set +# CONFIG_AMD_RNG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_AMD_PM768 is not set +# CONFIG_NVRAM is not set +CONFIG_RTC=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set + +# +# Direct Rendering Manager (XFree86 DRI support) +# +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=m +CONFIG_SYNCLINK_CS=m +# CONFIG_MWAVE is not set +# CONFIG_OBMOUSE is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_QFMT_V2 is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BEFS_DEBUG is not set +# CONFIG_BFS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=m +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=m +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_TMPFS is not set +CONFIG_RAMFS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_XFS_FS is not set +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_TRACE is not set +# CONFIG_XFS_DEBUG is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +# CONFIG_NFS_FS is not set +# CONFIG_NFS_V3 is not set +# CONFIG_NFS_DIRECTIO is not set +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +# CONFIG_NFSD_TCP is not set +# CONFIG_SUNRPC is not set +# CONFIG_LOCKD is not set +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="cp437" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Console drivers +# +CONFIG_VGA_CONSOLE=y +CONFIG_VIDEO_SELECT=y +# CONFIG_MDA_CONSOLE is not set + +# +# Frame-buffer support +# +# CONFIG_FB is not set + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_UHCI=m +CONFIG_USB_UHCI_ALT=m +CONFIG_USB_OHCI=m +# CONFIG_USB_SL811HS_ALT is not set +# CONFIG_USB_SL811HS is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_BLUETOOTH is not set +# CONFIG_USB_MIDI is not set +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +CONFIG_USB_ACM=m +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT=y +CONFIG_USB_HIDDEV=y +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_KAWETH=m +CONFIG_USB_CATC=m +CONFIG_USB_CDCETHER=m +CONFIG_USB_USBNET=m + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_TIGL is not set +# CONFIG_USB_BRLVGER is not set +# CONFIG_USB_LCD is not set +CONFIG_USB_SPEEDTOUCH=m + +# +# Support for USB gadgets +# +# CONFIG_USB_GADGET is not set + +# +# Bluetooth support +# +# CONFIG_BLUEZ is not set + +# +# Kernel hacking +# +# CONFIG_DEBUG_KERNEL is not set +CONFIG_LOG_BUF_SHIFT=0 + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_SHA1 is not set +CONFIG_CRYPTO_SHA256=y +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Library routines +# +# CONFIG_CRC32 is not set +CONFIG_ZLIB_INFLATE=m +CONFIG_ZLIB_DEFLATE=m +CONFIG_FW_LOADER=m diff --git a/config/kernel/syslinux.cfg b/config/kernel/syslinux.cfg new file mode 100644 index 0000000000..87282f4f4f --- /dev/null +++ b/config/kernel/syslinux.cfg @@ -0,0 +1,17 @@ +TIMEOUT 5000 +DISPLAY message +PROMPT 1 +DEFAULT vmlinuz +APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 rw +LABEL nopcmcia + KERNEL vmlinuz + APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 rw nopcmcia +LABEL nousb + KERNEL vmlinuz + APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 rw nousb +LABEL nousborpcmcia + KERNEL vmlinuz + APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 rw nousb nopcmcia +LABEL dma + KERNEL vmlinuz + APPEND initrd=instroot.gz root=/dev/ram0 rw diff --git a/config/snort/CVS/Entries b/config/snort/CVS/Entries new file mode 100644 index 0000000000..f206f9cce2 --- /dev/null +++ b/config/snort/CVS/Entries @@ -0,0 +1,2 @@ +/snort.conf/1.6.2.1/Thu Apr 28 18:38:49 2005//TIPCOP_v1_4_0 +D diff --git a/config/snort/CVS/Repository b/config/snort/CVS/Repository new file mode 100644 index 0000000000..9a9c45e4d2 --- /dev/null +++ b/config/snort/CVS/Repository @@ -0,0 +1 @@ +ipcop/config/snort diff --git a/config/snort/CVS/Root b/config/snort/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/snort/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/snort/CVS/Tag b/config/snort/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/snort/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/snort/snort.conf b/config/snort/snort.conf new file mode 100644 index 0000000000..382ded8634 --- /dev/null +++ b/config/snort/snort.conf @@ -0,0 +1,123 @@ +################################################### +# +# This file contains the default snort configuration. +# for all IPCop Versions +# Unless you are totally happy with this file,please +# only change whats needed +# +# 1) Set the network variables for your network +# 2) Configure preprocessors +# 3) Configure output plugins +# 4) Customize your rule set +# +# $Id: snort.conf,v 1.6.2.1 2005/04/28 18:38:49 gespinasse Exp $ +# +################################################### +# Only area a user needs to edit +include /etc/snort/vars +var EXTERNAL_NET !$HOME_NET +var SMTP_SERVERS $HOME_NET +var HTTP_SERVERS $HOME_NET +var SQL_SERVERS $HOME_NET +var TELNET_SERVERS $HOME_NET +var HTTP_PORTS 80 +var SHELLCODE_PORTS !80 +var ORACLE_PORTS 1521 +var AIM_SERVERS [64.12.24.0/24,64.12.25.0/24,64.12.26.14/24,64.12.28.0/24,64.12.29.0/24,64.12.161.0/24,64.12.163.0/24,205.188.5.0/24,205.188.9.0/24] +var RULE_PATH /etc/snort + +################################################### +# Do NOT Edit past this line +################################################### +config detection: search-method lowmem +preprocessor flow: memcap 2097152, stats_interval 0, hash 2 +preprocessor frag2: memcap 2097152 +preprocessor stream4: memcap 2097152, detect_scans, disable_evasion_alerts +preprocessor stream4_reassemble: noalerts +preprocessor http_inspect: global iis_unicode_map unicode.map 1252 +preprocessor http_inspect_server: server default profile all ports { 80 8080 } +preprocessor rpc_decode: 111 32771 +preprocessor bo +preprocessor telnet_decode +preprocessor flow-portscan: \ + scoreboard-memcap-talker 1048576 \ + scoreboard-rows-talker 10000 \ + talker-sliding-scale-factor 0.50 \ + talker-fixed-threshold 30 \ + talker-sliding-threshold 30 \ + talker-sliding-window 20 \ + talker-fixed-window 30 \ + scoreboard-memcap-scanner 1048576 \ + scoreboard-rows-scanner 10000 \ + scanner-sliding-window 20 \ + scanner-sliding-scale-factor 0.50 \ + scanner-fixed-threshold 15 \ + scanner-sliding-threshold 40 \ + scanner-fixed-window 15 \ + unique-memcap 1048576 \ + unique-rows 10000 \ + server-memcap 1048576 \ + server-rows 10000 \ + server-watchnet $HOME_NET \ + server-ignore-limit 100 \ + server-learning-time 3600 \ + server-scanner-limit 4 \ + alert-mode once \ + output-mode msg \ + tcp-penalties on +preprocessor xlink2state: ports { 25 691 } +#========================================= +include $RULE_PATH/classification.config +include $RULE_PATH/reference.config +#========================================= +include $RULE_PATH/bad-traffic.rules +include $RULE_PATH/exploit.rules +include $RULE_PATH/scan.rules +include $RULE_PATH/finger.rules +include $RULE_PATH/ftp.rules +include $RULE_PATH/telnet.rules +include $RULE_PATH/rpc.rules +include $RULE_PATH/rservices.rules +include $RULE_PATH/dos.rules +include $RULE_PATH/ddos.rules +include $RULE_PATH/dns.rules +include $RULE_PATH/tftp.rules + +include $RULE_PATH/web-cgi.rules +include $RULE_PATH/web-coldfusion.rules +include $RULE_PATH/web-iis.rules +include $RULE_PATH/web-frontpage.rules +include $RULE_PATH/web-misc.rules +include $RULE_PATH/web-client.rules +include $RULE_PATH/web-php.rules + +include $RULE_PATH/sql.rules +include $RULE_PATH/x11.rules +include $RULE_PATH/icmp.rules +include $RULE_PATH/netbios.rules +include $RULE_PATH/misc.rules +include $RULE_PATH/attack-responses.rules +include $RULE_PATH/oracle.rules +include $RULE_PATH/mysql.rules +include $RULE_PATH/snmp.rules + +include $RULE_PATH/smtp.rules +include $RULE_PATH/imap.rules +include $RULE_PATH/pop2.rules +include $RULE_PATH/pop3.rules + +include $RULE_PATH/nntp.rules +include $RULE_PATH/other-ids.rules +# include $RULE_PATH/web-attacks.rules +# include $RULE_PATH/backdoor.rules +# include $RULE_PATH/shellcode.rules +# include $RULE_PATH/policy.rules +# include $RULE_PATH/porn.rules +# include $RULE_PATH/info.rules +# include $RULE_PATH/icmp-info.rules +# include $RULE_PATH/virus.rules +# include $RULE_PATH/chat.rules +# include $RULE_PATH/multimedia.rules +# include $RULE_PATH/p2p.rules +# include $RULE_PATH/experimental.rules +include $RULE_PATH/local.rules diff --git a/config/ssl/CVS/Entries b/config/ssl/CVS/Entries new file mode 100644 index 0000000000..389703dc48 --- /dev/null +++ b/config/ssl/CVS/Entries @@ -0,0 +1,2 @@ +/openssl.cnf/1.2.2.4/Thu Dec 22 13:41:37 2005//TIPCOP_v1_4_0 +D diff --git a/config/ssl/CVS/Repository b/config/ssl/CVS/Repository new file mode 100644 index 0000000000..540fb47608 --- /dev/null +++ b/config/ssl/CVS/Repository @@ -0,0 +1 @@ +ipcop/config/ssl diff --git a/config/ssl/CVS/Root b/config/ssl/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/config/ssl/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/config/ssl/CVS/Tag b/config/ssl/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/config/ssl/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/config/ssl/openssl.cnf b/config/ssl/openssl.cnf new file mode 100644 index 0000000000..2bca6c08ee --- /dev/null +++ b/config/ssl/openssl.cnf @@ -0,0 +1,94 @@ +HOME = . +RANDFILE = /var/tmp/.rnd +oid_section = new_oids + +[ new_oids ] + +[ ca ] +default_ca = IPCop + +[ IPCop ] +dir = /var/ipcop +certs = $dir/certs +crl_dir = $dir/crls +database = $dir/certs/index.txt +new_certs_dir = $dir/certs +certificate = $dir/ca/cacert.pem +serial = $dir/certs/serial +crl = $dir/crls/cacrl.pem +private_key = $dir/private/cakey.pem +RANDFILE = $dir/tmp/.rand +x509_extensions = usr_cert +default_days = 999999 +default_crl_days= 30 +default_md = md5 +preserve = no +policy = policy_match +email_in_dn = no + +[ policy_match ] +countryName = optional +stateOrProvinceName = optional +organizationName = optional +organizationalUnitName = optional +commonName = supplied +emailAddress = optional + +[ req ] +default_bits = 1024 +default_keyfile = privkey.pem +distinguished_name = req_distinguished_name +attributes = req_attributes +x509_extensions = v3_ca +string_mask = nombstr + +[ req_distinguished_name ] +countryName = Country Name (2 letter code) +countryName_default = GB +countryName_min = 2 +countryName_max = 2 + +stateOrProvinceName = State or Province Name (full name) +stateOrProvinceName_default = + +localityName = Locality Name (eg, city) +#localityName_default = + +0.organizationName = Organization Name (eg, company) +0.organizationName_default = My Company Ltd + +organizationalUnitName = Organizational Unit Name (eg, section) +#organizationalUnitName_default = + +commonName = Common Name (eg, your name or your server\'s hostname) +commonName_max = 64 + +emailAddress = Email Address +emailAddress_max = 40 + +[ req_attributes ] +challengePassword = A challenge password +challengePassword_min = 4 +challengePassword_max = 20 +unstructuredName = An optional company name + +[ usr_cert ] +basicConstraints=CA:FALSE +nsComment = "OpenSSL Generated Certificate" +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid,issuer:always + +[ v3_req ] +basicConstraints = CA:FALSE +keyUsage = nonRepudiation, digitalSignature, keyEncipherment + +[ v3_ca ] +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid:always,issuer:always +basicConstraints = CA:true + +[ crl_ext ] +authorityKeyIdentifier=keyid:always,issuer:always + +[ engine ] +default = openssl diff --git a/doc/.cvsignore b/doc/.cvsignore new file mode 100644 index 0000000000..2211df63dd --- /dev/null +++ b/doc/.cvsignore @@ -0,0 +1 @@ +*.txt diff --git a/doc/COPYING b/doc/COPYING new file mode 100644 index 0000000000..d60c31a97a --- /dev/null +++ b/doc/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/doc/CVS/Entries b/doc/CVS/Entries new file mode 100644 index 0000000000..7d0a8148f6 --- /dev/null +++ b/doc/CVS/Entries @@ -0,0 +1,7 @@ +/.cvsignore/1.1.2.1/Sat Jan 1 16:34:26 2005//TIPCOP_v1_4_0 +/COPYING/1.1.1.1/Tue Nov 27 08:07:58 2001//TIPCOP_v1_4_0 +/ChangeLog/1.1.2.25/Mon Nov 7 01:33:16 2005//TIPCOP_v1_4_0 +/How-to-make-update/1.1.2.7/Sun Nov 6 00:11:41 2005//TIPCOP_v1_4_0 +/README/1.4/Thu Dec 11 10:57:33 2003//TIPCOP_v1_4_0 +/make.sh-usage/1.2.2.2/Mon Jan 16 17:10:59 2006//TIPCOP_v1_4_0 +D diff --git a/doc/CVS/Repository b/doc/CVS/Repository new file mode 100644 index 0000000000..277eadccb8 --- /dev/null +++ b/doc/CVS/Repository @@ -0,0 +1 @@ +ipcop/doc diff --git a/doc/CVS/Root b/doc/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/doc/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/doc/CVS/Tag b/doc/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/doc/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/doc/ChangeLog b/doc/ChangeLog new file mode 100644 index 0000000000..b2fe3673f6 --- /dev/null +++ b/doc/ChangeLog @@ -0,0 +1,6749 @@ +2005-11-07 01:29 gespinasse + + * updates/1.4.10/fixbackups.sh: Fix web backup set present on disk + - remove from backup sets files wich should have been exclude but + exclude was broken in 1.4.9 - add hardware settings in backup + since it should have been inside + +2005-11-06 00:11 gespinasse + + * doc/How-to-make-update: Update the doc to not forget anything on + update + +2005-11-05 15:58 eoberlander + + * updates/1.4.10/information: Tweak information text. + +2005-11-05 15:46 gespinasse + + * updates/1.4.10/information: Fix a few wrong tag error detected by + 'xhtml transitional' compliance test In netstatus : - better + close font color than apply a new color again wich will not be + closed properly later - $colour is unnecessary - font color is + inserted multiple times with interfaces names + + Now each interface did use not the color define in + Header::colour{blue|green|orange|red} but the one corresponding + to the name. This only change red color as the code was wrong + for the others and the color corresponding to the name was used. + +2005-11-05 09:22 gespinasse + + * updates/1.4.10/setup: Restrict backup.key access to root only (SF + 1344032) + +2005-11-03 23:08 gespinasse + + * html/cgi-bin/backup.cgi: Display which files are include in web + backup + +2005-11-03 21:34 gespinasse + + * src/misc-progs/ipcopbkcfg.c: ipcopbkcfg - as leading / don't work + to exclude files during a restore from install, add relative + path support to make backup work without leading / in + (in|ex)clude files - don't use exclude.hardware during backup, it + should only be used optionnaly on restore (found by Darren + Critchley) - use atexit to manage cleanup in every wrong cases - + replace chmod external call by C chmod call - don't use tar -v + when stdout redirected to /dev/null - split very long lines code + in multiples lines - remove function cfgexists not used - send to + stdout a list of include files made with tar -ztf at the end - + add a optional verbose mode to help understand what/how + include/exclude files are used (no web interface mainly for + developper) + +2005-11-01 19:20 gespinasse + + * config/cfgroot/backup-exclude: We don't need to include empty + directories in backup. So we can directly exclude whole + directories. + + This is only to be be more simple. Result is the same + +2005-11-01 02:11 franck78 + + * src/misc-progs/: ipcopbkcfg.c, ipcoprscfg.c: sf#1344047 + suggestion of moving chmod latter. But the solution is to not + having unencrypted backup sets. + +2005-11-01 01:23 franck78 + + * updates/1.4.10/setup: Backup update (sf#1344032) + +2005-11-01 01:15 franck78 + + * html/cgi-bin/backup.cgi, src/misc-progs/ipcopbkcfg.c, + src/misc-progs/ipcoprscfg.c: Start fixing bug sf #1344032: + introduce 'chmod 400' backup.key and make backup.cgi ask the + helper if key exists. 'root' owns backup.key + +2005-10-30 23:25 franck78 + + * src/install+setup/libsmooth/: libsmooth.h, main.c: Add a function + returning the real version of IPCop. VERSION => get_version() + when appropriate. + +2005-10-30 18:19 gespinasse + + * lfs/boot.img: Add $VERSION to initial install boot menu + +2005-10-25 23:58 gespinasse + + * updates/1.4.10/setup: Remove snort asci logging during update + +2005-10-24 23:05 franck78 + + * html/cgi-bin/shutdown.cgi, src/misc-progs/ipcopreboot.c: Add + choice between reboot or shutdown for scheduled the action. + +2005-10-22 10:19 gespinasse + + * lfs/tcpdump, updates/1.4.10/information, updates/1.4.10/setup: + More documentation reference for tcpdump and squid patches + + Include squid patched in update ntlm_auth and wb_ntlmauth may + have not been patched but since their md5 change at every + compilation, it's hard to check, so include them. + + restart httpd the same way as setreservedports + +2005-10-21 06:19 gespinasse + + * updates/1.4.10/information: Update rootfiles for replacement of + ipcopdeath and ipcoprebirth with ipcopreboot + +2005-10-20 22:00 franck78 + + * updates/1.4.10/setup: Setup patch 1.4.10 adds missing adv options + to reflect what ipsec is using as default algorythms. Add + 'cast128' & modp6144 modp8192 Correct a SHA1 to SHA label. close + sf bug #1314801 + +2005-10-20 21:19 eoberlander + + * updates/1.4.10/information: Fix typos. + +2005-10-20 21:06 gespinasse + + * updates/1.4.10/: information, setup: Upgrade apache to + apache_1.3.34 mod_ssl-2.8.25-1.3.34 mm-1.4.0 + + Upgrade openssl to openssl-0.9.7i (CAN-2005-2969) + +2005-10-20 11:43 franck78 + + * html/cgi-bin/base.cgi: Fix default sort order (sf bug #1280492) + +2005-10-19 23:33 franck78 + + * html/cgi-bin/shutdown.cgi, src/misc-progs/Makefile, + src/misc-progs/ipcopreboot.c, src/misc-progs/reboot.c[DEAD]: + Rename reboot prog to ipcopreboot + +2005-10-19 14:45 franck78 + + * html/cgi-bin/shutdown.cgi, src/misc-progs/Makefile, + src/misc-progs/reboot.c, updates/1.4.10/information, + updates/1.4.10/setup: RFE 1298996: add scheduled reboot + capability to IPCop (within shutdown.cgi page) + +2005-10-18 21:30 gespinasse + + * lfs/file: Upgrade file-4.14 to 4.16 + + Fix logwatch-6.1.2 url since 7.0 release + +2005-10-18 17:05 franck78 + + * src/misc-progs/setdmzholes.c, updates/1.4.10/information: Allow + dmzholes to use ip/mask instead of ip. Simplify blue->green holes + management. From request/patch in ipcop-devel list (Tapani + Tarvainen) + +2005-10-17 21:15 gespinasse + + * lfs/sysklogd: Fix sysklogd url with new lfs-5.1.1 repository + +2005-10-16 12:34 rkerr + + * config/etc/logrotate.conf, src/misc-progs/restartsnort.c: Make + snort use binary logging (faster, less prone to DoS, works around + snort 2.3 TCP SACK vulnerability) + +2005-10-15 07:23 gespinasse + + * lfs/man-pages: Fix lfs specific packages not found + + Use a more recent man-pages for compilation as 2.03 is no more + available + +2005-10-13 20:04 eoberlander + + * updates/1.4.10/: ROOTFILES.alpha-1.4.10, ROOTFILES.i386-1.4.10: + Update Greek from Language Database. + +2005-10-12 07:59 eoberlander + + * updates/1.4.10/: ROOTFILES.alpha-1.4.10, ROOTFILES.i386-1.4.10: + Include lang.pl in update in case an earlier backup failed to + include it. + +2005-10-11 20:13 eoberlander + + * langs/pl/install/lang_pl.c, + updates/1.4.10/ROOTFILES.alpha-1.4.10, + updates/1.4.10/ROOTFILES.i386-1.4.10: Update Polish from Language + Database. + +2005-10-07 16:35 eoberlander + + * updates/1.4.10/: ROOTFILES.alpha-1.4.10, ROOTFILES.i386-1.4.10: + Updates from Language Database. + +2005-10-06 18:32 franck78 + + * updates/1.4.10/: ROOTFILES.alpha-1.4.10, ROOTFILES.i386-1.4.10, + setup: /home/fbourdonnec/tmp/XX + +2005-10-06 15:48 eoberlander + + * langs/lt/cgi-bin/lt.pl: Add new Translator for Lithuanian. + +2005-10-06 14:56 eoberlander + + * updates/1.4.10/: ROOTFILES.alpha-1.4.10, ROOTFILES.i386-1.4.10: + Add Swedish updates from Language Database. Thanks. + +2005-10-05 19:57 eoberlander + + * langs/lt/cgi-bin/lt.pl, updates/1.4.10/ROOTFILES.alpha-1.4.10, + updates/1.4.10/ROOTFILES.i386-1.4.10: Updates from Language + Database. + +2005-10-04 20:38 eoberlander + + * langs/es/install/lang_es.c, langs/nl/install/lang_nl.c, + updates/1.4.10/ROOTFILES.alpha-1.4.10, + updates/1.4.10/ROOTFILES.i386-1.4.10: Update languages from + Database, and add new Translators to credits page. + +2005-10-04 16:39 gespinasse + + * doc/How-to-make-update: Adapt make.sh and lfs/cdrom to produce + new files names. + + Remove md5 calculation in ./make.sh dist It could be made after + update signature with just one instruction. + + Update doc/How-to-make-update accordingly + +2005-10-04 11:48 gespinasse + + * updates/1.4.10/: .cvsignore, ROOTFILES.alpha-1.4.10, + ROOTFILES.i386-1.4.10, information, setup: Bump version. Fix + VERSION expansion in newupdate + +2005-10-03 22:49 gespinasse + + * lfs/: gcc, sysklogd, unzip, util-linux: Remove double quote from + information as it broke display. + + Original lfs-5.1.1 repository no more exist for some lfs + packages. Replace lfs location with original supplier when + available. + + If a package look unreachable, google 'package-name ipcop' will + discover good mirrors. + +2005-10-03 20:49 gespinasse + + * doc/How-to-make-update, src/scripts/updatesetup: A few cleanup to + prepare the next version. + +2005-10-03 20:01 gespinasse + + * updates/1.4.9/information: Fix a few issues from 1.4.9 test1 - + remove # from cvs header.pl fro optionsfw.cgi - rebuild cache + lang on update setup - add a warning for VPN users for the wrong + setting of Dead Peer Detection in 1.4.7 update + +2005-10-03 01:04 gespinasse + + * src/misc-progs/setfilters.c: Add missing helper for optionsfw.cgi + +2005-10-03 00:34 gespinasse + + * src/misc-progs/Makefile, updates/1.4.9/setup: Add again + optionsfw.cgi with minimal settings only for ping actually + +2005-10-02 07:22 gespinasse + + * updates/1.4.9/setup: restart squid in update only if a conf file + exist to avoid a warning when not used + +2005-10-01 14:48 eoberlander + + * updates/1.4.9/information: Tweak description text. + +2005-10-01 13:44 gespinasse + + * lfs/util-linux, + src/patches/util-linux-2.12a-umount_CAN-2005-2876.patch, + updates/1.4.9/information, updates/1.4.9/setup: Fix umount for + CAN-2005-2876 + + Other cleanup in preparation of update + +2005-09-30 12:29 gespinasse + + * src/patches/eciadsl-usermode-0.10-semaphore-leak.patch[DEAD]: + Remove patch integrated + +2005-09-30 12:26 gespinasse + + * lfs/eciadsl-nortek[DEAD]: Minor upgrade from 0.11beta1 to 0.11 + for eciadsl + + Remove eciadsl-nortek script since it is no more used + + It would be nice if packages in ROOTFILES.machine-1.4.x are + classified by alphabetical order. + +2005-09-29 18:35 eoberlander + + * src/misc-progs/ipcopbackup.c: Add Darren Critchley's patch to + check floppy disk before attempting a backup. + +2005-09-25 19:57 gespinasse + + * config/cfgroot/backup-exclude, src/misc-progs/ipcoprscfg.c, + updates/1.4.9/information: Fix system files wrongly included in + backup (and so erasing new files on restore) This was the case of + lang.pl in 1.4.7 As exclude.system is always up to date during + installation, use it to exclude those files. + + Sorry for have been so long. + +2005-09-17 23:34 gespinasse + + * updates/1.4.9/: header.pl.patch, information, setup: Update + header.pl with a separate patch It is easier to read than + inclusion in setup made for 1.4.7. + + Minor update in comment for the last squid patch name. + +2005-09-16 07:23 eoberlander + + * updates/1.4.9/information: Rearrange text. + +2005-09-16 00:05 gespinasse + + * updates/1.4.9/information: Information update + +2005-09-16 00:00 gespinasse + + * updates/1.4.9/setup: Patch 3 'major' bugs (crashes) in squid wich + would be fixed on next STABLE11 version. One 'medium' bug was + fixed too to allow unchanged patches application. + +2005-09-15 19:44 rkerr + + * lfs/logwatch: Modify logwatch not to alert on requests for + null.gif, this resulted in scary warnings like: + + !!!! 1 possible successful probes .. /images/null.gif HTTP + Response 200 + +2005-09-10 17:22 rkerr + + * lfs/pcre, src/patches/pcre-4.5-CAN-2005-2491.patch: Backported + fix for CAN-2005-2491 from fedora core 3 + +2005-09-10 10:06 gespinasse + + * updates/1.4.9/.cvsignore: Add .cvsignore in update directory Do + it manually this time, in ./make.sh newupdate for next versions + +2005-09-09 20:26 eoberlander + + * updates/1.4.9/information: Update information. + +2005-09-09 13:58 eoberlander + + * updates/1.4.9/: ROOTFILES.alpha-1.4.9, ROOTFILES.i386-1.4.9: Fix + for SF Bug 1284569: lang.pl is missing in backup-exclude. + +2005-09-09 13:44 eoberlander + + * config/cfgroot/backup-exclude, + updates/1.4.9/ROOTFILES.alpha-1.4.9, + updates/1.4.9/ROOTFILES.i386-1.4.9: Part fix for SF Bug 1284569: + lang.pl is missing in backup-exclude. + +2005-09-08 21:09 eoberlander + + * langs/zt/cgi-bin/zt.pl: Updates from Language Database. + +2005-09-08 08:03 eoberlander + + * updates/1.4.9/setup: Bump version number. + +2005-09-08 07:29 eoberlander + + * langs/zt/cgi-bin/zt.pl: Update ZT from Language Database. + +2005-09-07 21:38 eoberlander + + * src/scripts/setreservedports, + updates/1.4.9/ROOTFILES.alpha-1.4.9, + updates/1.4.9/ROOTFILES.i386-1.4.9: Fix conditional test for port + range. + +2005-09-07 19:52 eoberlander + + * langs/list, langs/zt/cgi-bin/zt.pl, + updates/1.4.9/ROOTFILES.alpha-1.4.9, + updates/1.4.9/ROOTFILES.i386-1.4.9: Add Traditional Chinese to + webgui interface. + +2005-09-07 18:21 rkerr + + * updates/1.4.9/setup: Fix security issue with addon-langs + permissions in upgraded installs, SF bug 1283323 + +2005-09-04 20:13 gespinasse + + * lfs/oinkmaster: Go back to the standard URL for sourceforge like + with v1.5: - telia was changed directly on Config for all files + +2005-08-29 15:13 eoberlander + + * updates/1.4.9/: ROOTFILES.alpha-1.4.9, ROOTFILES.i386-1.4.9: Add + Italian phrase from Language Database. + +2005-08-28 20:47 eoberlander + + * updates/1.4.9/setup: Fix for SF Bug 1275075. Thanks to John + Edwards for spotting this. + +2005-08-28 11:21 eoberlander + + * updates/1.4.9/: ROOTFILES.alpha-1.4.9, ROOTFILES.i386-1.4.9: Fix + for SF Bug 1275075. Replace uptime command. Bug only affects + upgraded systems, not clean installs from 1.4.8.iso + +2005-08-27 08:46 eoberlander + + * updates/1.4.9/: ROOTFILES.alpha-1.4.9, ROOTFILES.i386-1.4.9: Fix + bug that breaks Upload button text for language strings with two + words (i.e. Norwegian, Swedish and Vietnamese). Add quotes around + text string. + +2005-08-27 06:05 eoberlander + + * updates/1.4.9/: ROOTFILES.alpha-1.4.9, ROOTFILES.i386-1.4.9: + Include updates from Language Database. Include Danish, missing + from previous update. + +2005-08-26 23:38 gespinasse + + * src/scripts/updatesetup, updates/1.4.9/ROOTFILES.alpha-1.4.9, + updates/1.4.9/ROOTFILES.i386-1.4.9, updates/1.4.9/information, + updates/1.4.9/setup: Add a newupdate option at make.sh to create + structure for updates files Add a typical setup script for update + in src/script/updatesetup + +2005-08-26 04:41 gespinasse + + * updates/1.4.8/information: More verbose in 1.4.8 information + +2005-08-25 21:06 gespinasse + + * src/scripts/setreservedports: Fix setreservedports Id + +2005-08-25 21:02 gespinasse + + * src/scripts/: httpscert, setreservedports: Add a httpcert script + to read issuer of the certificate or made a new cert. + + This is called in rc.sysinit and will produce a warning message + if certificate issuer name did not match fqdn + (hostname.domainname) + + This is not called actually after a change in setup following + Robert advice. A warning should be added in setup in next + version because a new text need to be added. + + I miss to commit setreservedports the last time. It is only a + temporary help, it need to be include in the GUI. + +2005-08-25 17:51 gespinasse + + * src/install+setup/setup/misc.c: setup - fix hostname command not + consistent with /etc/hosts when hostname is changed in setup + + domainname was not written in hostname command + +2005-08-24 18:44 gespinasse + + * src/misc-progs/setportfw.c: Fix trivial error in error message - + replace 'syslog settings'with 'ethernet settings' + +2005-08-22 20:51 eoberlander + + * src/misc-progs/installpackage.c: Fix spelling errors. + +2005-08-18 18:59 gespinasse + + * updates/1.4.8/: ROOTFILES.alpha-1.4.8, setup: Fix for scsi disk + during upgrade I find why '/ is busy' was displayed with help of + lsof and a hook in rc.halt -d now free the loop device + + Add ROOTFILES.alpha-1.4.8 missing + +2005-08-17 05:49 gespinasse + + * lfs/rrdtool: ./make.sh check does not understand answer like this + http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.0.49.tar.gz + + Thank to Teemu Mannermaa + +2005-08-16 22:55 gespinasse + + * updates/1.4.8/: information, setup: Attempt to make information + clearer with a bit of formating. + + Sync after erasing files (necessary on flash). Write may fail + because files are not yet really erased and no more space is + available. + +2005-08-16 20:19 gespinasse + + * updates/1.4.8/information: Fix fcdsl version displayed in + information update. + +2005-08-16 19:43 gespinasse + + * lfs/dhcp: Update dhcp source (thank to Eric) + +2005-08-16 19:37 gespinasse + + * updates/1.4.8/setup: The problem at shutdown was related to init + upgrade Fix it with telinit u + + Better way to fix modules.conf is more recent than... We don't + need to calculate modules.dep for the kernel used as it is made + after compilation, just touch it. + +2005-08-16 06:40 gespinasse + + * .cvsignore, updates/1.4.7/ROOTFILES.alpha-1.4.7-0[DEAD], + updates/1.4.7/ROOTFILES.alpha-1.4.7-1[DEAD], + updates/1.4.7/ROOTFILES.alpha-1.4.7-2[DEAD], + updates/1.4.7/ROOTFILES.i386-1.4.7-0[DEAD], + updates/1.4.7/ROOTFILES.i386-1.4.7-1[DEAD], + updates/1.4.7/information, updates/1.4.7/information-0[DEAD], + updates/1.4.7/information-1[DEAD], updates/1.4.7/setup-0[DEAD], + updates/1.4.7/setup-1[DEAD], updates/1.4.8/.cvsignore, + updates/1.4.8/ROOTFILES.i386-1.4.8, updates/1.4.8/information, + updates/1.4.8/setup: Go back to 2 patches as numbered in + 1.4.3/1.4.4 As 'someone' say :'nobody need more than 640 kB', I + would say we never will need more than two updates. + + alpha update should be far from operational, just less ugly. But + nobody look to care about, so... + +2005-08-16 05:39 gespinasse + + * config/cron/crontab, updates/1.4.7/setup-0: Slightly changes + comment in crontab + + Simplier crontab update Make possible to still use root.orig for + a next change as we don't loose it. + +2005-08-15 19:37 eoberlander + + * updates/1.4.7/: information-0, information-1: Remove references + to 1.4.6-p1 within text. + +2005-08-15 19:17 gespinasse + + * updates/1.4.7/ROOTFILES.i386-1.4.7-0: Add missing files found + after make dist + +2005-08-14 23:43 gespinasse + + * updates/1.4.7/ROOTFILES.i386-1.4.7-0: upload.cgi,updates/cgi As I + should be the recordman today of the number of updates applied + during my numerous installations, I find that files name nput + boxes are to small, so I set them a bit bigger than standard + size. + + There is still one small problem related at the application of + the first update. On the next reboot(and only this one), there + is a warning message init: got unimplemented init request and + some 'umount / is busy' later + +2005-08-14 23:16 gespinasse + + * updates/1.4.7/: ROOTFILES.i386-1.4.7-0, ROOTFILES.i386-1.4.7-1, + information-0, information-1, setup-0, setup-1: Rename patches + 1.4.7 and 1.4.8 I will later change make.sh and rename files as + it is more practical to keep names to track changes + + Make the first patch smaller or there is a problem with small + disk when fcdsl package is installed. + + Remove additional unused files {scsigrub.conf,grubbatch} from + /boot It remain only 83kB free on a flash disk when /boot size is + 5MB + + Fix etc/modules.conf is more recent than ...modules.dep on start + It is a bit late for 2.4.29 but better than never. + +2005-08-14 08:27 eoberlander + + * updates/1.4.7/information-0: Fix typo. Remove '-' from 1.4.6-p1 + +2005-08-14 08:03 eoberlander + + * updates/1.4.7/: ROOTFILES.alpha-1.4.7-0, ROOTFILES.i386-1.4.7-0: + Include fix for SF Bug 1256223 in update. Non-critical typo in + output from ifconfig. + +2005-08-14 00:31 gespinasse + + * updates/1.4.7/: ROOTFILES.i386-1.4.7-0, ROOTFILES.i386-1.4.7-1, + ROOTFILES.i386-1.4.7-2[DEAD], information-0, information-1, + information-2[DEAD], information-3[DEAD], setup-0, setup-1, + setup-2[DEAD], setup-3[DEAD]: Remade the update to be splitted in + 2 parts only Complete the upgrade to : - remove kernel 2.4.27 - + fully upgrade grub.conf to support the last and one old kernel + + Add again some files Franck drop in the split in 4 parts + concerning eagle-usb and eciadsl. + + Boot fail with 2.4.29-smp (scsi disk) but not with 2.4.29-smp + + acpi I don't know why. Others menu choices work. + + grub.conf for IDE use ro option when scsi.conf use rw The way the + menu is actually upgraded, there is a mix of rw (new) and ro + (old) for scsi disk. + + Not yet so tested with flash and small disk. Let some work for + tomorrow. + + I am not convinced it is superior to have 1.4.6p1 and 1.4.7 than + 1.4.7/1.4.8. + + Alpha code upgrade is still to do. I don't know if somebody is + interested. We would need to have a different upgrade for alpha + as smp is a i86 specialty. + +2005-08-13 15:23 eoberlander + + * langs/: bz/install/lang_bz.c, cs/install/lang_cs.c, + da/install/lang_da.c, de/install/lang_de.c, el/install/lang_el.c, + en/install/lang_en.c, es/install/lang_es.c, fi/install/lang_fi.c, + hu/install/lang_hu.c, la/install/lang_la.c, no/install/lang_no.c, + pl/install/lang_pl.c, pt/install/lang_pt.c, so/install/lang_so.c, + sv/install/lang_sv.c, tr/install/lang_tr.c, vi/install/lang_vi.c: + Update Language Database with new installer phrase. scsidrv -> + images/scsidrv + +2005-08-13 14:29 gespinasse + + * langs/en/install/lang_en.c: On floppy install boot with a scsi + disk, shift search of scscidrv- to + images/scscidrv-. This is far better when the iso is + mounted in a loop. When it is not the case, user should place + this file a step higher than ipcop-.tgz in an images + directory. + + Change of the corresponding text in the installer: - I add + images/ before scsidrv and remove the trailing / at the end. + + This / is not necessary since a long time. It work with and + without. The corresponding line in install/net.c while + (url[strlen(url)-1] == '/') { url[strlen(url)-1] = '\0'; } remove + this trailing / when it does exist to avoid duplicate // in + url/filename. + +2005-08-13 08:09 eoberlander + + * lfs/net-tools: Backport fix for SF Bug 1256223. Non-critical typo + in output from ifconfig. + +2005-08-06 18:45 eoberlander + + * updates/1.4.7/: information-0, information-2, information-3: Fix + some typos. + +2005-08-06 12:36 gespinasse + + * lfs/Compress-Zlib: Upgrade Compress-Zlib to 1.35 Even if we don't + use the include zlib sources to build but a separate zlib package + already upgraded, there is other minor fixes. + +2005-07-30 23:59 franck78 + + * updates/1.4.7/: setup-0, setup-1, setup-2, setup-3: Fix display + of correct IPCop version at end of patch execution. + +2005-07-30 14:15 franck78 + + * .cvsignore, doc/How-to-make-update, + src/misc-progs/installpackage.c, updates/1.4.7/information-0, + updates/1.4.7/information-1, updates/1.4.7/information-2: Add a + little more support to gpg usage when you don't have key Make.sh + produce a batch to help signing the updates + +2005-07-30 12:01 franck78 + + * updates/1.4.7/: information-0, information-1, information-2, + information-3: Ok the http link is added latter...Removed ! + Remove from 'available list' the patches already installed + because user may not (will not) update av-list after each patch. + Move button 'update patch list' inside a box block + +2005-07-30 00:48 franck78 + + * updates/1.4.7/: ROOTFILES.alpha-1.4.7-0, ROOTFILES.alpha-1.4.7-1, + ROOTFILES.alpha-1.4.7-2, ROOTFILES.i386-1.4.7-0, + ROOTFILES.i386-1.4.7-1, ROOTFILES.i386-1.4.7-2, information-0, + information-1, information-2, information-3, setup-0, setup-1, + setup-2, setup-3: Package the 1.4.6=>1.4.7 patch in four smaller + patches Bug: updates.cgi need to reload $general::version + variable while running... Tested ok on a fresh 1.4.6 (without + gpg signing) Add http link in information using page wiki sid=22 + on ipcop.org Old files no more needed + (information,ROOTFILES,setup) + +2005-07-29 21:32 franck78 + + * src/misc-progs/installpackage.c: Correct return code. Note that + -1 is displayed 255 (should change ret type) + +2005-07-29 02:14 franck78 + + * src/misc-progs/installpackage.c: Installpackage try using + /var/log partition first, then root partition (as before) for the + de-gnupg operation. Add 'clear squid cache' button on updates + screen. Also display disk usage to help user in deciding what to + do Do not need tree times the package size free on root ! + +2005-07-28 20:57 franck78 + + * updates/1.4.7/information: Add comment + +2005-07-28 07:01 gespinasse + + * lfs/eciadsl: Update - openswan to 1.0.10rc2 - eciadsl to + 0.11beta1 - eagle-usb to 2.3.2 + + I still need to include updates in 1.4.7 update, fix rc.eciadsl + due to unified driver bewteen std and nortek version and make a + few changes for eagle-usb But everybody could start compilation + now. + +2005-07-28 00:32 franck78 + + * lfs/sysvinit: Upgrade version + +2005-07-27 23:12 franck78 + + * lfs/gnupg: Update version + +2005-07-27 22:14 franck78 + + * lfs/iana-etc: Update version + +2005-07-26 23:28 franck78 + + * src/patches/openswan-1.0.9-restart.patch: Patch openswan 1.0.9 + until 1.0.10 is out (add dpd restart option) GILLES: in your + final 'linux' add the patch in third position with Np0 cd + $(DIR_SRC)/openswan-1.0.9 && patch -Np0 < + $(DIR_SRC)/src/patches/openswan-1.0.9-restart.patch + +2005-07-26 20:25 gespinasse + + * lfs/vlan: Add vlan userspace configuration program + +2005-07-26 10:59 franck78 + + * config/cfgroot/backup-exclude: not sure if exclude a simple 'dir' + is ok. Add '/*' + +2005-07-26 10:19 franck78 + + * config/cfgroot/backup-exclude: 'Backup' do not include addon + language files. Addon-writers should modify this file if they add + some 'big' data in it. + +2005-07-26 06:30 gespinasse + + * src/patches/zlib-1.2.2-inftrees.patch[DEAD]: Remove unnecessary + zlib-1.2.2 patch already include in 1.2.3 + +2005-07-26 06:27 gespinasse + + * lfs/zlib, src/patches/linux-2.4.28-usb-devio.patch[DEAD], + src/patches/patch-o-matic-ng-20040621_raw_2.4.28.patch[DEAD], + src/patches/patch-o-matic-ng-raw_2.4.31.patch: Upgrade kernel to + v2.4.31 (add VLAN and sata_qstor support) + + Upgrade zlib to v1.2.3 + + Update script is not yet ready It need to remove one old kernel + and fix smp bug seen in 1.4.4 + +2005-07-20 17:00 eoberlander + + * updates/1.4.7/information: Fix typo, ipstate -> iptstate + +2005-07-19 20:26 eoberlander + + * lfs/logwatch: Fix spelling. transfered -> transferred + +2005-07-18 20:40 gespinasse + + * lfs/gzip, src/patches/gzip-1.3.5-perm.patch: Only fix comment in + update and patch : fix for CAN-2005-0988 is already applied. + + Nothing is changed to the code. + +2005-07-16 19:02 gespinasse + + * lfs/dhcpcd, src/patches/dhcpcd-1.3.22-pl4_corrupt-packet.patch, + updates/1.4.7/information: Patch dhcpcd-1.3.22-pl4 against + CAN-2005-1896 + +2005-07-15 08:13 alanh + + * lfs/bzip2: Do it in /tools as well + +2005-07-14 19:01 alanh + + * lfs/bzip2: move up one + +2005-07-13 17:27 alanh + + * lfs/bzip2: allow bzip2 to reinstall + +2005-07-12 12:02 alanh + + * lfs/bzip2: fix bustage + +2005-07-11 18:38 franck78 + + * src/rc.d/rc.network: Undo previous change because the 'for' loop + orders driver loading ! + +2005-07-11 16:07 franck78 + + * src/install+setup/setup/main.c: Fix bug 1193391, ('issue' exists + when 'setup' is launched from 'installer') + +2005-07-11 14:14 franck78 + + * src/rc.d/rc.network: fix bug1153902. I have used it since march, + no problem seen. + +2005-07-11 10:56 franck78 + + * src/misc-progs/: rebuildhosts.c, restartwireless.c: Add cvs Id + tag + +2005-07-10 16:01 franck78 + + * lfs/procps: Update procps 3.2.1=>3.2.5 (kill, ps, top,...) + +2005-07-10 14:12 franck78 + + * lfs/arping: Update source from 2.03 to 2.05 + +2005-07-09 08:19 eoberlander + + * lfs/logwatch: Patch logwatch.conf to comment out a line which + refers to an unused/unavailable Service. + +2005-07-08 17:35 rkerr + + * lfs/zlib, src/patches/zlib-1.2.2-inftrees.patch: SF bug #1234830, + CAN-2005-2096 + +2005-07-08 17:11 franck78 + + * src/install+setup/setup/misc.c: Suppress a warn in apache/ssl log + [warn] Init: (..) RSA server certificate CommonName .... does NOT + match server name!? + +2005-07-08 16:51 eoberlander + + * html/cgi-bin/optionsfw.cgi: Updates from Language Database. + +2005-07-08 15:19 gespinasse + + * lfs/logwatch: Logwatch : upgrade logwatch to 6.1.2 For a better + control of what is include, directories are commented and files + individually slected You could give advice of what filter + include/exclude + + Some unnecessary previous filters include by mistake are removed + in setup. + + As Disk usage part is now terminated, add the corresponding text + and remove the trick to close the last box. + + Update Add : - missing pulsar module in i386 rootfile - link for + zcat and bzcat I terminate setup with an operation wich will + always success (the echo ). + + During tests, when installing v1.4.6 update on a fresh installed + v1.4.5, update warn of failure to install because the last + operation in 1.4.6 update (rm /var/log/dynupdate.log) find no + file to erase. + + Fix some errors in ROOTFILES.alpha : perl file are located in + alpha-linux and not i386-linux + + There is other very suspect i386 on other lines, but it should be + for unused files. + + As none of v1.4 maintainer can compile on alpha, I don't know of + the state of alpha version sources. I would be happy to have + feedback from people using it. + +2005-07-08 09:11 eoberlander + + * html/cgi-bin/optionsfw.cgi: Add Achim's suggested hint. + +2005-07-08 00:03 franck78 + + * lfs/Net_SSLeay: Added SSLeay support to Perl (for https) May also + be used for x509 certificat in vpnmain.cgi ... + +2005-07-07 22:31 gespinasse + + * lfs/: Compress-Zlib, HTML-Parser, HTML-Tagset, URI, libwww-perl: + Minor scripts cleanup + +2005-07-07 20:11 franck78 + + * src/rc.d/: rc.3cp4218usbadsl, rc.amedynusbadsl, rc.bewanadsl, + rc.conexantusbadsl, rc.flash.up, rc.halt, rc.isdn, + rc.netaddress.down, rc.network, rc.pulsardsl: Add "Id cvs tag" + +2005-07-07 19:14 franck78 + + * lfs/iptstate: Add "iptstate" command line utility RFE 1167726 + +2005-07-06 09:21 franck78 + + * config/cfgroot/lang.pl: Simplify the code by removing usage of + variable $settings['LANGUAGE']. + +2005-07-06 00:24 franck78 + + * config/cfgroot/lang.pl: Completed lang.pl to build all cachelang + files. Move initial build into 'install' prog. Call not tested, + can't compile :-( + +2005-07-05 20:39 eoberlander + + * langs/so/cgi-bin/so.pl: Remove colon (:) + +2005-07-05 20:37 eoberlander + + * langs/it/install/lang_it.c: Update Italiano from Language + Database. + +2005-07-05 15:10 gespinasse + + * lfs/: hdparm, man, pcmcia-cs: pcmcia-cs - upgrade to 3.2.8 - + don't need to compile twice (-smp and non smp) as modules from + the kernel are used - add missing netextra.conf and + isdnextra.conf in .iso - rootfiles.alpha had twice the files + + hdparm - upgrade to 6.1 - new feature --security-freeze could be + used but is not supported by all ATA disk This feature allow to + lock disk password setting until next reboot. If no password is + set, a malicious program could set it unless changing password + is frozen. + + pulsar dsl - upgrade to 4.0.19 + + man - upgrade to 1.5p as the old one is no more available + +2005-07-05 14:46 gespinasse + + * lfs/file: Upgrade file to 4.14 as the 4.12 is no more available + +2005-07-02 09:12 franck78 + + * config/cron/crontab: Add comment + +2005-06-29 19:28 rkerr + + * lfs/Compress-Zlib, lfs/HTML-Parser, lfs/HTML-Tagset, lfs/URI, + lfs/libwww-perl, src/scripts/updatelists.pl: Use libwww-perl for + HTTP downloads from CGIs, this should resolve the issues some + users are having with IDS rule updates. Also should fix the + inability to download update lists when an upstream proxy + requires user/pass (bug 1205470) + +2005-06-22 22:32 gespinasse + + * lfs/speedycgi: Fix speedycgi download location We don't use it + actually + +2005-06-22 20:00 rkerr + + * lfs/busybox, src/patches/busybox-0.60.5-insmod_gpl_symbols.patch: + Fix libata EXPORT_SYMBOL_GPL problems in the installer, should + fix intel SATA support + +2005-06-21 20:10 gespinasse + + * lfs/ethtool: Add ethtool. It may replace mii-tool in the next + version. + + This is helpfull for those who want to let IPCop sleep when not + used. ethtool is used to configure the network card + /usr/sbin/ethtool -s eth0 wol g This could be added in rc.local + + You could wake up the IPCop machine by sending the magic-packet + to the MAC address. This could only work with some limit on + IPCop side : - you can't use dhcp on green since the PC sending + the magic-packet already has an IP - you can't have an orange + interface + + Thank to wintermute wich create the WakeOnLAN topic on the german + forum. + +2005-06-20 06:14 gespinasse + + * lfs/man-pages: Because man-pages-1.66 is no more available, + upgrade the package to the last available version. As it is not + include in the ISO, version is not important. + +2005-06-19 21:36 franck78 + + * src/misc-progs/rebuildhosts.c: Close open file before exiting. + +2005-06-16 13:53 rkerr + + * src/misc-progs/setportfw.c: Change SNAT behaviour for port + forwards to only apply when required, the idea is similar to the + patch provided by Dennis Freise: + + + http://marc.theaimsgroup.com/?l=ipcop-devel&m=110944498906579&w=2 + + The implementation is my own and slightly different - it also + expands the SNAT to work for orange to orange connections (before + it only applied to blue and green) + +2005-06-14 11:25 eoberlander + + * langs/la/install/lang_la.c: Remove forward slash escape + character, which is not required in Installer strings. + +2005-06-13 13:36 franck78 + + * html/cgi-bin/logs.cgi/config.dat: Add option to choose number of + lines per page of log (viewsize) + +2005-06-13 11:13 gespinasse + + * src/patches/bzip2-1.0.2-chmod.patch: Add missing bzip2 chmod + patch + +2005-06-13 11:11 gespinasse + + * lfs/bzip2, updates/1.4.7/information: Upgrade : -squid to + 2.5.STABLE10 -bzip2 to 1.0.3 plus patch against CAN-2005-1260 + + Patch tcpdump for CAN-2005-1267 + +2005-06-11 06:15 gespinasse + + * src/patches/tcpdump-3.8.2-bgp-dos-2.patch: Fix last tcpdump patch + +2005-06-10 22:06 gespinasse + + * src/patches/tcpdump-3.8.2-bgp-dos-2.patch, lfs/tcpdump: patch + tcpdump against CAN-2005-1267 + +2005-06-10 22:03 gespinasse + + * updates/1.4.7/.cvsignore: Add a .cvsignore for 1.4.7 patch.tar.gz + +2005-06-08 13:01 eoberlander + + * langs/no/install/lang_no.c: Fix some typos in Language Databse + spotted by Alan. + +2005-06-07 19:43 franck78 + + * html/cgi-bin/optionsfw.cgi: Sync between Eric's changes and + rc.firewall + +2005-06-07 19:14 franck78 + + * html/cgi-bin/optionsfw.cgi: Allow empty ports list & allow space + around commas + +2005-06-06 20:58 eoberlander + + * html/cgi-bin/optionsfw.cgi: Rearrange interface layout. Further + functional modifications pending, so don't forward this to v1.5 + just yet. + +2005-06-06 16:13 eoberlander + + * updates/1.4.7/information: Repair file format. The bars (|) are + separators. There are four fields per record; + number|name|description|date. + +2005-06-06 15:55 franck78 + + * updates/1.4.7/information: add description + +2005-06-05 21:00 eoberlander + + * updates/1.4.7/information: Update information. + +2005-06-03 23:31 franck78 + + * updates/1.4.7/setup: Add new provider dynserv.ca (org|net|com) + Place a link on each provider name (need freedns-afraid.org + renaming to real name freedns.afraid.org), move colorization + syncstate to columns host&domains + +2005-05-29 17:11 franck78 + + * updates/1.4.7/setup: Update or replace the crontab file for new + minimize ddns call + +2005-05-29 09:59 rkerr + + * updates/1.4.7/setup: Change maximum on traffic graph RRDs to + support 100 MBit links, fixes bug 1118124 + +2005-05-28 21:35 franck78 + + * config/cron/crontab: Fix rfe1093108: updates to dyndns service + are done only if gethostbyname returns different address. A cron + call once/month force updates (-f -m options) to avoid loosing + account on particular stable lines. This has to be enabled in + GUI. + +2005-05-28 16:00 eoberlander + + * updates/1.4.7/setup: Different approach to patching header.pl + +2005-05-27 17:29 franck78 + + * updates/1.4.7/setup: Prepare script patch for header.pl before it + got lost... Dont't forget to include diff result with actual + header.pl ! + +2005-05-27 13:50 franck78 + + * config/cfgroot/lang.pl: Insert Achim comment 'howto using this' + Use perl grep construction (Achim script) Change owner = root for + cachefile, Achim again ;-) + +2005-05-26 21:06 franck78 + + * config/cfgroot/lang.pl: Permits a partial foreign traduction + + english version for an addon. Previous version supposed if + foreign file was present, it was complete (no english needed). + +2005-05-23 18:17 eoberlander + + * updates/1.4.7/: ROOTFILES.alpha-1.4.7, ROOTFILES.i386-1.4.7: + Include some recent changes in list of files to be updated. + +2005-05-22 17:26 eoberlander + + * updates/1.4.7/: ROOTFILES.alpha-1.4.7, ROOTFILES.i386-1.4.7: Add + Norwegian phrases from Language Database. + +2005-05-22 17:13 franck78 + + * config/ssl/openssl.cnf, updates/1.4.7/ROOTFILES.alpha-1.4.7, + updates/1.4.7/ROOTFILES.i386-1.4.7: Problems raised by Ufuk + Altinkaynak 1)random state file: fix a writable location for it + and added some 'seed' to certs generation with '-rand option' + + 2)serial number: problem or not probem?? anyway, a replacement + procedure for cleanssldatabase is included if someone prefer + serialized certs (Ufuk !). + +2005-05-21 08:07 eoberlander + + * html/html/images/addblue.gif: Add device icon. + +2005-05-18 23:25 franck78 + + * config/cfgroot/lang.pl, updates/1.4.7/setup: Suppress use of + intermediate file containing list of addon to load. Now, + everything is recalculated, but only if no cachefile exists. + Only root can build the cache file. + +2005-05-17 10:45 eoberlander + + * langs/sl/cgi-bin/sl.pl: Additions to Slovenian from Language + Database. + +2005-05-15 12:58 rkerr + + * updates/1.4.7/: ROOTFILES.alpha-1.4.7, ROOTFILES.i386-1.4.7: Fix + a stack based buffer overflow in ipsecctrl + +2005-05-14 22:29 franck78 + + * updates/1.4.7/setup: Correct directory permissions. + +2005-05-14 07:25 eoberlander + + * langs/list, langs/sl/cgi-bin/sl.pl, + updates/1.4.7/ROOTFILES.alpha-1.4.7, + updates/1.4.7/ROOTFILES.i386-1.4.7: Add Slovenian to web gui + interface. + +2005-05-14 03:15 franck78 + + * config/cfgroot/header-menu.pl: Just a simple (and sufficient?) + implementation of adding menus to ipcop without touching + header.pl Works: read a directory (/var/ipcop/addon-menu) looking + for filenames matching "menu.X.subMenu.Aname" X.submenu can be + 4.services,.... Each line in the file is a menu entry for + selected submenu. Format is "Label" , "link-to -page" , "Label" + exactly actual format of a menu entry in header.pl, including + $tr{'xxx'} if needed. + +2005-05-13 20:31 franck78 + + * config/cfgroot/lang.pl: Complete BuildAddonLangList with + construction of a cache file containing the resulting %tr() + array. %tr is final result of loading all relevant language + files. When $Lang::reload see it, it directly read-in only + necessary data. Maybe a checkbox in language selection can + disable this cache. Cache file is built on startup or language + switch + +2005-05-13 14:47 franck78 + + * config/cfgroot/lang.pl, updates/1.4.7/setup: Make languages files + dropped by addon installers in a specific dir to be read-in if + they match the active language of ipcop. Default always to + english version. No checking is made on file content. It must be + an associative array, %tr={'key' => 'value'}; (see + /var/ipcop/langs/en.pl). Do not breaks addons which can continue + editing ipcop language.pl files... + +2005-05-12 16:26 eoberlander + + * updates/1.4.7/: ROOTFILES.alpha-1.4.7, ROOTFILES.i386-1.4.7: + Change file format to unix. + +2005-05-12 15:25 franck78 + + * html/cgi-bin/base.cgi: New files based on this are Ipcop ... + +2005-05-12 09:11 franck78 + + * html/cgi-bin/base.cgi: Complete Gilles's tag error discovered in + dhcp.cgi + +2005-05-12 07:17 eoberlander + + * updates/1.4.7/: ROOTFILES.alpha-1.4.7, ROOTFILES.i386-1.4.7: + Updates from Language Database. + +2005-05-12 05:42 eoberlander + + * html/cgi-bin/optionsfw.cgi, updates/1.4.7/ROOTFILES.alpha-1.4.7, + updates/1.4.7/ROOTFILES.i386-1.4.7: Add phrases used in + optionsfw.cgi to Language Database. Change some variables to + lowercase. There is one string I'm not sure about... + +2005-05-08 15:52 franck78 + + * html/cgi-bin/optionsfw.cgi, src/rc.d/rc.firewall: Insert + 'optionsfw.cgi' setup page with to settings installed: -control + ping on red or all interfaces -add a list a ports that are + dropped just before the final "-j log", eliminating unneeded logs + information. + + Translations are not yet in the lang en.pl, until everybody is + OK. + +2005-05-08 15:21 franck78 + + * updates/1.4.7/: ROOTFILES.alpha-1.4.7, ROOTFILES.i386-1.4.7, + information, setup: Prepare next patch + +2005-05-07 17:40 gespinasse + + * updates/1.4.6/information: make dist show that we forgot some + files in update CGI - home/httpd/cgi-bin/hosts.cgi - + home/httpd/cgi-bin/ids.cgi - home/httpd/cgi-bin/logs.cgi/ids.dat + - home/httpd/cgi-bin/networks.cgi - + home/httpd/cgi-bin/services.cgi and pptp-1.6.0 + +2005-05-07 16:44 gespinasse + + * updates/1.4.6/information: Update Changelog and information + Release date should be the 10 if nohing wrong appear. + +2005-05-07 13:01 gespinasse + + * config/cfgroot/advoptions-list: dhcp.cgi - display IP and netmask + from ethernet settings - separate each interface with
- + better IP checking order for start and end address if netmask not + /24 - combine add and list box for add-option and fixed leases - + fix some XHTML errors (input hidden not in a cell, + disabled='disabled') + + advoption-list - remove duplicate options directly available in + the GUI - sort options in alphabetical order + +2005-05-07 12:46 rkerr + + * src/ibod/ibod.c: Security fixes for ibod, fixes a buffer overflow + as described in: + + + + Also fixes a separate issue where the DEVICE config paramater + could be overflowed. This is very low risk because an attacker + would have to be able to edit the config file, and the buffer + isn't on the stack. + +2005-05-06 21:56 gespinasse + + * lfs/tcpdump, src/patches/tcpdump-3.8.2-bgp-dos.patch, + src/patches/tcpdump-3.8.2-isis-dos.patch, + src/patches/tcpdump-3.8.2-ldp-dos.patch, + src/patches/tcpdump-3.8.2-rsvp-dos.patch: Patch tcpdump against + CAN-2005-12{78|79|80} + +2005-05-06 06:17 gespinasse + + * lfs/gzip, src/patches/gzip-1.3.3-window-size.patch, + src/patches/gzip-1.3.5-asm-execstack.patch, + src/patches/gzip-1.3.5-gunzip-dir.patch, + src/patches/gzip-1.3.5-perm.patch: Patch gzip against + CAN-2005-1228 (borrowed from fedora and include othe fixes) + +2005-05-05 16:24 gespinasse + + * lfs/oinkmaster: Backport from main Use $CONFIGROOT for + oinkmaster.conf + +2005-05-03 01:28 franck78 + + * src/rc.d/rc.halt: Make a call to rc.red stop (to properly + disconnect) and also a call to rc.red clear to unload modules. + Workaround for bug 1185833 + +2005-05-02 17:11 franck78 + + * config/cfgroot/oinkmaster.conf: Typo correction, mainly to check + cvs is ok at my home ;-) + +2005-05-02 07:49 eoberlander + + * langs/list: Change 'Latino' to 'Spanish Latino' as requested by + translator Fernando Diaz. Update his email address on Credits + page. + +2005-05-01 18:03 gespinasse + + * lfs/: arping, gnupg, unzip: Move dowload URL for gnupg arping + unzip + +2005-05-01 16:54 gespinasse + + * src/patches/linux-2.4.27-ssp-1.patch: Push + linux-2.4.27-ssp-1.patch on src/patches + +2005-05-01 01:10 franck78 + + * html/cgi-bin/optionsfw.cgi: Refine ping disabled granularity to + red or all itfs. Add a check box to choose to restart ipcop with + modified options. By default the gui records them and they are + taken into account a next reboot. Maybe usefull in the future to + set options without stopping networks services. The dynamically + reconfiguration (as port forwarding) is not really needed here. + +2005-05-01 00:06 franck78 + + * html/cgi-bin/base.cgi: Typo + +2005-04-30 11:37 rkerr + + * src/misc-progs/restartsnort.c: Backport alan's fix from HEAD, + don't close file handle twice + +2005-04-30 00:25 franck78 + + * html/cgi-bin/optionsfw.cgi: Add a new cgi page under firewall + tab, designed to receive future request about specificcaly + firewall options. Example: disable ping. This is only the GUI + part, nothing is done yet. (need to create + /var/ipcop/optionsfw/settings file to work) + +2005-04-29 23:37 franck78 + + * html/cgi-bin/: base.cgi, networks.cgi, services.cgi: Speedy is + removed ...? + +2005-04-28 19:34 gespinasse + + * lfs/dnsmasq: Upgrade dnsmasq to 2.22 to fix bugs introduced in + 2.21 + + Include dnsmasq-2.22, snort-2.3.3 and oinkmaster-1.2 in upgraded + files + +2005-04-28 18:38 gespinasse + + * config/cfgroot/oinkmaster.conf, config/snort/snort.conf, + lfs/oinkmaster: Upgrade snort to v2.3.3 + + Add oinkmaster to orderly update rules + + Reorder ids.cgi readhash can't be used before the ACTION=save or + nothing will be changed. So readhash is used after ACTION=save + block to have values not in the form. + + I still have a bit of code to add the new preprocessor in + snort.conf. + +2005-04-27 15:17 eoberlander + + * langs/nl/install/lang_nl.c: Add Danish and Dutch phrases from + Language Database. + +2005-04-26 17:59 franck78 + + * config/cron/crontab, updates/1.4.6/setup: Bug 1190249: because + setddns.pl close stderr & stdout nothing is outputed here! Remove + redirection. Output is done via General::log + +2005-04-26 17:10 eoberlander + + * config/cfgroot/advoptions-list: Fix typo, extra t in streettalk. + +2005-04-23 12:53 franck78 + + * updates/1.4.6/setup: Comment changed. + +2005-04-22 18:44 rkerr + + * src/misc-progs/restartsquid.c: Transparent on blue had a similar + problem to enable on blue - fix this too + +2005-04-21 14:37 rkerr + + * src/misc-progs/restartsquid.c: Fix bug #1144280 - start squid if + enabled on blue or green + +2005-04-18 15:37 eoberlander + + * langs/it/install/lang_it.c: Update Italian phrases from Language + Database. + +2005-04-16 11:40 rkerr + + * config/httpd/httpd.conf: Disable HTTP OPTIONS method as suggested + by Daniel Berlin + +2005-04-14 12:29 gespinasse + + * updates/1.4.6/setup: Update configroot include files This is only + to have doc up to date as /var/ipcop files are include I just + wanted to add /var/ipcop/ddns/settings As files were not sorten + in alphabetical order, the diff is not easy to read but it will + be better the next time. + + Create /var/ipcop/ddns/settings in update allow to remove the + touch in setddns.pl. + +2005-04-13 23:52 gespinasse + + * lfs/: bind, cdrtools, pptpclient, vim, wireless: rc.red : fix + SF1171610 - erase /var/ipcop/red/keepconnected during + configuration change It is for the rare case when the persistent + option was primary selected, but is now on manual and rc.red stop + never made beacause timeout is used. + + dhcp.cgi - include eric proposal but it still some more changes + + pppsetup.cgi - fix 'other countries' selection with eagle-usb + 'W'=>'WO' - warn that dial on demand can't be used with dynamic + dns - ajust some display layout + + bind upgrade to 9.2.5 cdrtools upgrade to 2.01 pppt client to 1.6 + vim upgrade to 6.3 plus a security patch wireless_tools upgrade + to 27 + +2005-04-11 05:29 eoberlander + + * updates/1.4.6/: ROOTFILES.alpha-1.4.6, ROOTFILES.i386-1.4.6: + Update German from Language Database. + +2005-04-10 19:54 eoberlander + + * updates/1.4.6/setup: Add fix for SF Bug 1174069 - unable to add + or edit fixed DHCP leases. + +2005-04-09 16:31 gespinasse + + * updates/1.4.6/: ROOTFILES.alpha-1.4.6, ROOTFILES.i386-1.4.6, + information: Put rc.red and setup in update + +2005-04-09 08:46 gespinasse + + * src/install+setup/setup/main.c, updates/1.4.6/.cvsignore: Modify + setup to fix SF1178604 A few language available in web interface + (zh,lt,ro,ru,th) are not supported by setup. Using english in + this case is better than aborting + + Add .cvsignore inside updates/1.4.6 + +2005-04-08 11:37 franck78 + + * updates/1.4.6/: ROOTFILES.alpha-1.4.6, ROOTFILES.i386-1.4.6: New + file in configroot for dhcpd + +2005-04-08 00:16 franck78 + + * html/cgi-bin/base.cgi: Reorder tag, start with colored line + (better view) the lists + +2005-04-08 00:11 franck78 + + * updates/1.4.6/setup: Added possibility to send 'options' with + dhcp server. + +2005-04-07 23:43 franck78 + + * config/cfgroot/advoptions-list: Contain options listing for dhcp + daemon + +2005-04-07 05:26 eoberlander + + * updates/1.4.6/: ROOTFILES.alpha-1.4.6, ROOTFILES.i386-1.4.6: + Update Danish from Language Database. + +2005-04-05 22:40 gespinasse + + * html/cgi-bin/ids.cgi, lfs/snort, + updates/1.4.6/ROOTFILES.alpha-1.4.6, + updates/1.4.6/ROOTFILES.i386-1.4.6, updates/1.4.6/setup: Upgrade + snort to 2.3.2 + + Fix the new file download with IO::Socket with new start/end + header mark and removing some intermediate data. This was + verified to work with 2.3, 2.2 and community rules But community + rules need adjustement in snort.conf wich are not for now + available from the web interface. So only 'user registred' or + 'user with subscription' download are supported. + + Fix a warning with the .rules regular expression - need to be + escaped or at the beginning/end + + Display date of last rule update Keeep track when the loaded file + is new or the same + + Make code layout uniform by replacing 4 spaces with tab + + Two very similar text 'installed updates:' and 'updates + installed' exist. The second will be removed in the futur. + +2005-04-04 19:41 rkerr + + * updates/1.4.6/: ROOTFILES.alpha-1.4.6, ROOTFILES.i386-1.4.6: + Seeing as sitefinder is long dead it's probably a good idea to + remove this, especially seeing as verisign are apparently using + the IP for something else (see + http://www.merit.edu/mail.archives/nanog/2004-10/msg00181.html) + +2005-04-02 09:24 eoberlander + + * updates/1.4.6/: ROOTFILES.alpha-1.4.6, ROOTFILES.i386-1.4.6: + Allow easydns and zoneedit to update without a HOSTNAME. + +2005-03-31 10:19 eoberlander + + * updates/1.4.6/: ROOTFILES.alpha-1.4.6, ROOTFILES.i386-1.4.6: + Update Brazilian, French and Italian from Language Database. + +2005-03-31 06:17 gespinasse + + * updates/1.4.6/: ROOTFILES.alpha-1.4.6, ROOTFILES.i386-1.4.6, + information, setup: Bump version number + +2005-03-29 23:31 gespinasse + + * lfs/snort, updates/1.4.5/information: Revert to snort-2.1.3 until + the new interface is ready. There is some problems to fix too in + the actual ids.cgi. Updates rules are never displayed in web + interface as it was intended. + + Update Changelog and information for v1.4.5 update + +2005-03-28 10:54 alanh + + * lfs/dnsmasq, updates/1.4.5/ROOTFILES.alpha-1.4.5, + updates/1.4.5/ROOTFILES.i386-1.4.5: update dnsmasq to 2.21 + +2005-03-26 22:18 eoberlander + + * updates/1.4.5/: ROOTFILES.alpha-1.4.5, ROOTFILES.i386-1.4.5: Fix + for SF Bug 1167658, misconfiguration of ipsec.conf + +2005-03-26 11:28 eoberlander + + * updates/1.4.5/: ROOTFILES.alpha-1.4.5, ROOTFILES.i386-1.4.5: + Cosmetic changes to portfw.cgi page. Experiment with link to + Online Help. + +2005-03-26 07:11 eoberlander + + * html/html/images/web-support.png: Add web-spport icon for future + use. This is a stock OOo icon, licensed under the LGPL by Ximian. + +2005-03-25 22:51 alanh + + * lfs/unzip: put md5 back, mine was a bad download + +2005-03-25 15:36 alanh + + * lfs/unzip: md5sum changed on unzip + +2005-03-22 21:25 eoberlander + + * updates/1.4.5/setup: Change filename, and fix typo in sed command + (missing /) + +2005-03-22 13:20 eoberlander + + * updates/1.4.5/setup: Fix typo in PrintActualLeases subroutine. + +2005-03-20 12:31 eoberlander + + * updates/1.4.5/: ROOTFILES.alpha-1.4.5, ROOTFILES.i386-1.4.5: + Bugfix for start address/end address string comparison. Change to + numeric operation. + +2005-03-19 09:28 eoberlander + + * config/etc/logrotate.conf, updates/1.4.5/ROOTFILES.alpha-1.4.5, + updates/1.4.5/ROOTFILES.i386-1.4.5: Include optional log files + now available with squid (user_agent.log and referer.log) in + logrotate.conf + +2005-03-19 06:54 eoberlander + + * lfs/snort: Update path for download. + +2005-03-18 20:05 gespinasse + + * lfs/snort: Upgrade snort to v2.3.2 + + Necessary changes in the GUI for signature update are still 'work + in progress' + +2005-03-17 19:54 eoberlander + + * updates/1.4.5/: ROOTFILES.alpha-1.4.5, ROOTFILES.i386-1.4.5: + Include setddns.pl in update, to catch version 1.4.2.14 + +2005-03-16 18:34 gespinasse + + * updates/1.4.5/: ROOTFILES.alpha-1.4.5, ROOTFILES.i386-1.4.5: Fix + pulsardsl by selecting correct gcc3 lib + +2005-03-16 12:47 eoberlander + + * html/cgi-bin/logs.cgi/ids.dat, + updates/1.4.5/ROOTFILES.alpha-1.4.5, + updates/1.4.5/ROOTFILES.i386-1.4.5: Update URL for Snort + Signature Database lookups from IDS log page. + +2005-03-16 07:45 gespinasse + + * updates/1.4.5/: .cvsignore, ROOTFILES.alpha-1.4.5, + ROOTFILES.i386-1.4.5, information, setup: Bump version and add + 1.4.5 update + +2005-03-15 23:36 gespinasse + + * doc/How-to-make-update: Update doc/How-to-make-update + +2005-03-15 22:09 gespinasse + + * updates/1.4.4/information: Put the right date on information(s) + files + +2005-03-15 21:52 gespinasse + + * updates/: 1.4.3/information, 1.4.4/information: Updates + informations files + +2005-03-15 20:48 gespinasse + + * lfs/dosfstools: Upgrade dosfstools (nothing include in the iso) + Update ROOTFILES.xxx Update Changelog + +2005-03-15 19:53 gespinasse + + * config/cfgroot/proxy-acl: Compile squid with + --enable-useragent-log --enable-referer-log and add a comment in + acl + +2005-03-15 18:00 gespinasse + + * lfs/shadow: Move shadow again to the alternate site + +2005-03-15 17:50 gespinasse + + * lfs/unzip: Upgrade unzip (nothing is include in the iso) + +2005-03-15 17:48 gespinasse + + * lfs/procinfo: Follow procinfo to the new directory + +2005-03-09 20:08 rkerr + + * src/misc-progs/setuid.h: . & : are also valid characters in + device names (as used by 802.1q vlans and aliases). SF bug + #1153908 thanks to Micheal Reitz. + +2005-03-07 21:28 eoberlander + + * html/cgi-bin/changepw.cgi: Cosmetic change to layout of tables. + Clarify 'admin' and 'dial' user names. + +2005-03-04 19:26 gespinasse + + * lfs/gd, updates/1.4.3/information: Go back to gd-2.0.20 to make + the graphs work again with ipacsum + + Start only setddsn.pl if some settings are configured + + Update makegraphs to compile with strict directive + +2005-03-03 20:52 gespinasse + + * src/rc.d/rc.updatered: Let time at dnsmasq to be killed before to + restart it sleep 1 solve 'address already in use' message + +2005-03-01 21:43 eoberlander + + * config/cfgroot/lang.pl: Fixes to logic to reinstate UTF-8 + character conversion. + +2005-03-01 07:38 riddles + + * lfs/apache: Update logo URL + +2005-03-01 06:06 gespinasse + + * updates/: 1.4.3/information, 1.4.4/information, 1.4.4/setup: + Update information from 1.4.3 and 1.4.4 + +2005-02-28 19:35 eoberlander + + * tools/check_strings.pl: Modify string name to insert 'Lang::' + +2005-02-27 23:18 gespinasse + + * updates/: 1.4.3/information, 1.4.4/.cvsignore, + 1.4.4/ROOTFILES.alpha-1.4.4, 1.4.4/ROOTFILES.i386-1.4.4, + 1.4.4/information, 1.4.4/setup: Split update in two pieces to + solve free space available on disk size less than (380 + swap) MB + + Add eciadsl-nortek to update + +2005-02-27 15:23 gespinasse + + * lfs/dnsmasq, lfs/gd, lfs/libpng, lfs/tar, lfs/zlib, + src/patches/libpng-1.2.8-link_to_proper_libs-1.patch, + src/patches/perl-5.8.5-tempfiles.patch: Remove speedy from ISO + + Upgrade dnsmasq to 2.20 + + Upgrade gd to 2.33 CAN-2004-0990 + + Upgrade libpng to 1.2.8 - big red warning on libpng page for + broken feature in 1.2.7 We probably not use this feature, but + just in case... + + Fix Eagle-usb-2.1.1 installation + + Another fix for perl-5.8.5 CAN-2005-0155,0156 I have to verify + the fix is in the files include in update + + Fix for tar 1.13.25 CAN-2002-0399 + + Replace zlib 1.2.1 patched version with V1.2.2 + +2005-02-26 20:13 gespinasse + + * lfs/: grep, logwatch: Move grep loading to http GNU + + Move logwatch URL (thank to Eric Boniface) + +2005-02-26 12:26 gespinasse + + * lfs/findutils: Move findutils URL to http GNU site + +2005-02-25 07:36 gespinasse + + * lfs/dhcp, src/patches/linux-2.4.27-frandom-2.patch: Upgrade squid + to STABLE9 (bugfix), dhcp to 3.0.2 (bugfix), eagle-usb to + 2.1.1(eagleIII support and isdn bug fix with CMV enabled) + +2005-02-24 07:44 gespinasse + + * html/cgi-bin/: status.cgi, logs.cgi/firewalllog.dat, + logs.cgi/ids.dat: Fix expansion of Header by using {} + + Fix accidental move of CA_NAME in vpnmain.cgi + +2005-02-22 22:21 gespinasse + + * html/cgi-bin/: backup.cgi, changepw.cgi, dial.cgi, graphs.cgi, + ids.cgi, ipinfo.cgi, modem.cgi, proxygraphs.cgi, remote.cgi, + shutdown.cgi, status.cgi, time.cgi, logs.cgi/config.dat, + logs.cgi/firewalllog.dat, logs.cgi/ids.dat, logs.cgi/summary.dat: + Replace /usr/bin/speedy with /usr/bin/perl as there is too much + warnings (when warnings enabled) + + Fix most of the warnings seed during a perfTest.sh run. + + Main problems seen : - undef hash element in a test (example + $cgiparams{'ACTION'}) - undef array element after split ( if + 'remark' field is empty, related element is undef) - opening a + file header may fail ( no VPN may be in use so + /proc/net/ipsec_eroute don't exist) - a function need the & with + speedy when it may be omitted with standard perl - remove + redondant 'my' at the same block level (vpnmain.cgi) + + Replace some spaces with tab and change indentation of a few + files (in particular backup.cgi) + + I add two commented out lines in every cgi: - '#use warnings' + enable more diagnostics in error_log - '#use CGI::Carp' if you + broke the page code and it does not compile, it display + directly the error message in replacement of error 500 , error + message is too in error_log + + Beware that if speedy is in use, the name of the faultly page is + not in the log + + If an error is related to concatenation at a line number with + print <) + +2005-02-04 20:09 rkerr + + * lfs/squid: More squid security issues. Things are a bit unclear + here, the vendor advisories are using CVE numbers that either + aren't in the mitre database or show as assigned but pending. + They also disagree on which vulnerabilities have been assigned + which number (compare the number for the LDAP vuln in the gentoo + and debian advisories) + + I'm not including the LDAP patch because we don't seem to compile + in the LDAP auth helper, and I can't find a patch for the ACL + issue that the debian advisory mentions. The way it's described + by debian I doubt the ACL problem is particularly serious but + we'll have to wait for mitre to update. + + Applied patches are: + + * squid-2.5.STABLE7-wccp_buffer_overflow.patch + Another WCCP problem, more dangerous than before but not too + much of an + issue seeing as we're not using WCCP + + * squid-2.5.STABLE7-response_splitting.patch + Could probably lead to some cache poisoning attacks from + malicious + servers, probably not too great an issue + + * squid-2.5.STABLE7-oversize_reply_headers.patch + A bit more serious, may allow a malicious server to + compromise squid - + the description is slightly unclear, would need to review the + patch + +2005-02-04 01:22 franck78 + + * config/cfgroot/general-functions.pl: Add features request + 1113435,1113440 (no-ip group and empty host-name) Add password + 'verify' Arrange screen layout Add two translations strings Used + model base.cgi + +2005-02-01 16:03 franck78 + + * html/cgi-bin/base.cgi: Include corrections from hosts/dhcp.cgi + (fixe scoping, remove warnings) + +2005-01-31 15:49 alanh + + * src/install+setup/install/pcmcia.c: Fix a build problem on Alpha + +2005-01-30 23:30 alanh + + * lfs/eciadsl-nortek: md5 changed + +2005-01-30 03:37 franck78 + + * html/cgi-bin/base.cgi: This file can be used as a starting base + for writing a new cgi with multiple-line edit It includes 'sort' + on top of columns. It can also be used to rewrite some cgi. Just + copy/past some code. If all cgi use the same 'flow' it's easier + to understand and correct. Create + /var/ipcop/XY/{settings,data,XY.conf} and chmod/chown before + test. + +2005-01-30 02:45 franck78 + + * src/misc-progs/rebuildhosts.c: Use the first field of hosts data + line as enable/disable The field was unused. Change 'break and + exit' to 'continue' in main loop => don't leave open the hosts + file Note: the cgi should catch syntax error. + +2005-01-28 19:02 eoberlander + + * html/cgi-bin/time.cgi: Tweak position of image. + +2005-01-28 13:11 riddles + + * src/misc-progs/restartshaping.c: Fix shaping ceiling + +2005-01-27 21:40 gespinasse + + * lfs/pciutils: Fix the stack smashing attack during lspci use + + The fix was found on Gentoo ebuild + +2005-01-27 13:51 alanh + + * lfs/: Config, gcc-2[DEAD]: Remove gcc-2.95.3 from build + + This (and with the 2.4.29 kernel) will require all kernel modules + to be updated in the 1.4.3 patch. + +2005-01-27 10:07 eoberlander + + * config/cfgroot/general-functions.pl: Reapply change to sub + validfqdn to allow single characters as part of a Fully Qualified + Domain Name. Fixes SF Bug 1079594. + +2005-01-27 07:59 gespinasse + + * src/patches/: patch-o-matic-ng-20040621_03_2.4.29.patch, + patch-o-matic-ng-20040621_nf-log_2.4.29.patch, + patch-o-matic-ng-20040621_pptp_2.4.29.patch, + patch-o-matic-ng-20040621_raw_2.4.28.patch, + raw-linux-2.4.28.patch[DEAD]: Compile kernel 2.4.29 (not yet + tested), Openswan 1.0.8 + + patch-o-matic changes may need a bit of more cleaning due to + CONFIG_IP_NF_NAT_LOCAL removal + + Still some work to do for update + + Revert strip to -type f and use the find from tools/bin + +2005-01-27 00:25 franck78 + + * config/cfgroot/general-functions.pl: Some ipcop code do not + expect the hash be cleared but only be add/modified by readhash. + Existing entries must not be cleared + + Remove a 'my' causing function IpInSubnet not working + +2005-01-26 23:07 franck78 + + * config/cfgroot/general-functions.pl: 'use Socket;' moved to + general-functions.pl + +2005-01-26 19:58 gespinasse + + * lfs/squid: New md5sum because the patch was updated + +2005-01-26 19:43 riddles + + * tools/perfTest.sh: Add simple perfTest script + +2005-01-26 12:23 riddles + + * config/cfgroot/countries.pl, config/cfgroot/general-functions.pl, + config/cfgroot/lang.pl, config/cfgroot/protocols.pl, + html/cgi-bin/aliases.cgi, html/cgi-bin/backup.cgi, + html/cgi-bin/changepw.cgi, html/cgi-bin/connections.cgi, + html/cgi-bin/dial.cgi, html/cgi-bin/graphs.cgi, + html/cgi-bin/hosts.cgi, html/cgi-bin/ids.cgi, + html/cgi-bin/ipinfo.cgi, html/cgi-bin/modem.cgi, + html/cgi-bin/networks.cgi, html/cgi-bin/proxygraphs.cgi, + html/cgi-bin/remote.cgi, html/cgi-bin/services.cgi, + html/cgi-bin/shutdown.cgi, html/cgi-bin/status.cgi, + html/cgi-bin/time.cgi, html/cgi-bin/logs.cgi/config.dat, + html/cgi-bin/logs.cgi/firewalllog.dat, + html/cgi-bin/logs.cgi/ids.dat, html/cgi-bin/logs.cgi/log.dat, + html/cgi-bin/logs.cgi/summary.dat, lfs/configroot, lfs/speedycgi, + src/ppp/dialer, src/ppp/ip-down, src/ppp/ip-up, + src/rc.d/helper/getdnsfromdhcpc.pl, src/rc.d/helper/writeipac.pl, + src/scripts/tunerrd.pl, src/scripts/updatelists.pl: Clean up our + CGI code + use speedycgi for speedup + +2005-01-25 20:24 gespinasse + + * lfs/squid: SQUID fix for : Reject malformed HTTP requests and + responses that conflict with the HTTP specifications + +2005-01-24 17:53 riddles + + * src/install+setup/setup/networking.c: This could never have + worked, right? + +2005-01-24 07:21 gespinasse + + * lfs/unicorn: Forgotten new unicorn md5 + +2005-01-24 07:14 gespinasse + + * lfs/unicorn: Update Bewan unicorn driver to 0.9.0 + +2005-01-23 18:59 eoberlander + + * html/cgi-bin/time.cgi: Cosmetic change. Improve formatting of + table. + +2005-01-23 14:18 eoberlander + + * config/cfgroot/general-functions.pl: Change sub validfqdn to + allow single characters as part of a Fully Qualified Domain Name. + Fixes SF Bug 1079594. + +2005-01-23 13:46 franck78 + + * config/cfgroot/general-functions.pl: Correct perl syntax, just + returning '1' (true) at end of functions files. Add + !/usr/bin/perl Header.pl also 'requires' general-functions.pl: + This avoid breaking some add-on ( as mine squidguarg). The + 'require' do do not execute twice the file, but the 'require + general-functions.pl' statements in all cgi can be suppressed. + +2005-01-23 10:02 eoberlander + + * config/cfgroot/general-functions.pl: Add return 1 to end of + files, to fix bug. + +2005-01-21 11:42 eoberlander + + * html/cgi-bin/aliases.cgi, html/cgi-bin/backup.cgi, + html/cgi-bin/changepw.cgi, html/cgi-bin/connections.cgi, + html/cgi-bin/dial.cgi, html/cgi-bin/graphs.cgi, + html/cgi-bin/hosts.cgi, html/cgi-bin/ids.cgi, + html/cgi-bin/ipinfo.cgi, html/cgi-bin/modem.cgi, + html/cgi-bin/networks.cgi, html/cgi-bin/proxygraphs.cgi, + html/cgi-bin/remote.cgi, html/cgi-bin/services.cgi, + html/cgi-bin/shutdown.cgi, html/cgi-bin/status.cgi, + html/cgi-bin/time.cgi, html/cgi-bin/updates.cgi, + html/cgi-bin/logs.cgi/config.dat, + html/cgi-bin/logs.cgi/firewalllog.dat, + html/cgi-bin/logs.cgi/ids.dat, html/cgi-bin/logs.cgi/log.dat, + html/cgi-bin/logs.cgi/proxylog.dat, + html/cgi-bin/logs.cgi/summary.dat, lfs/configroot, + src/ppp/dialer, src/ppp/ip-down, src/ppp/ip-up, + src/rc.d/helper/getdnsfromdhcpc.pl, src/rc.d/helper/writeipac.pl, + src/scripts/makegraphs, src/scripts/tunerrd.pl, + src/scripts/updatelists.pl: Insert call to general-functions.pl + file, following separation of functions from header.pl (John + Edwards). + +2005-01-21 11:37 eoberlander + + * config/cfgroot/: backup-exclude, general-functions.pl: Add new + general-functions.pl file (John Edwards). + +2005-01-18 22:39 rkerr + + * lfs/squid: Fixes for several squid security issues: + + * Gopher parsing buffer overflow + + As gopher is such an old protocol and very unlikely to be + used by our + target market we should probably consider adding an acl to + deny it by + default to protect us against any other flaws that may pop + up. + + * WCCP DoS + + We don't enable WWCP in our default config, so we're not + vulnerable. + However, we do compile support for WCCP in and it's + possible an addon + or user may chose to use a non-default squid config with it + enabled, + so it's best to patch anyway. Should perhaps consider not + compiling in + WCCP support at all in the next version. + + * NTLM fakeauth_auth helper DoS + + Again, the NTLM helper isn't enabled in the default config, + but it is + compiled in, so it's good to patch it. I seem to remember + darren uses + this in his custom installs, and there may well be an addon + that uses + it too. + +2005-01-16 20:08 franck78 + + * lfs/Config: Add delay timeouts on wget commandline (was blocking + on 'ipaddr' and 'cdrtools') Make only the last pass of make + check/prefetch displaying error Reduce from 5 to 3 the number of + pass + +2005-01-16 10:11 gespinasse + + * lfs/: 3c5x9setup, 3cp4218, Config, Digest, Digest-HMAC, + Digest-SHA1, GD, Net-DNS, Net-IPv4Addr, aboot, amedyn, apache, + arping, autoconf, automake, bash, beep, bind, binutils, bison, + busybox, bzip2, capi4k-utils, ccache, cdrtools, configroot, + coreutils, cxacru, dejagnu, dhcp, dhcpcd, diffutils, dnsmasq, + dosfstools, e2fsprogs, eciadsl, eciadsl-nortek, ed, expat, + expect, ez-ipupdate, fcdsl2, fcdslsl, fcdslslusb, fcdslusb, + fcron, file, findutils, flex, gawk, gcc, gcc-2, gd, gdbm, + gettext, gmp, gnupg, grep, groff, grub, gzip, hdparm, iana-etc, + ibod, inetutils, initrd, initscripts, installer, ipac-ng, ipaddr, + iproute2, iptables, iputils, isapnptools, isdn4k-utils, kbd, + kudzu, less, libcap, libnet, libpcap, libpng, libsafe, libtool, + libusb, linux-atm, logrotate, logwatch, m4, make, makedev, man, + man-pages, mingetty, misc-progs, mktemp, modutils, mtools, nano, + nash, nasm, ncurses, net-tools, newt, noip_updater, ntp, openssh, + openssl, patch, pciutils, pcmcia-cs, pcre, popt, ppp, pptpclient, + procinfo, procps, psmisc, python, rp-pppoe, rrdtool, sed, + setserial, setup, shadow, slang, snort, speedtouch, squid, + squid-graph, sysklogd, syslinux, sysvinit, tar, tcl, tcpdump, + texinfo, traceroute, uClibc, unicorn, unzip, util-linux, vim, + wireless, zlib: New features for building in make.sh ./make.sh + check and prefetch options are in a loop for 5 attempts to load + + ./make.sh check tag every files names found in cache/check + directory This allow to continue and not abort at the first + error, it was painfull to loading again every same files with ftp + address. + + ./make.sh checkclean erase all tags in cache/check made by + ./make.sh check + + ./make.sh md5sum write md5sum of every files tagged in + cache/check + + During ./make.sh check and prefetch, make is silenced with -s + option. When nothing has to be done (the file is already loaded + or checked), nothing is displayed. + + When a source file is loaded, the file is verified against the + attended md5sum read on the lfs script. This allow to load a + file from another source without risk. + + When a source is updated, it is necessary to update the md5. On + signature mismatch, the file stay in /tmp and is not copied + inside cache + + Every script inside lfs has been rewritten to support this md5 + checking Each file is described by : - target name - URL affected + to the target name - MD5sum affected to another variable composed + of the target name +'_MD5' Every file need to be listed in the + objects list + + unstall and versions targets have been removed from lfs scripts + + LFS patches are now loaded from http site (before from ftp) + gcc-3.3 and gcc-2.95 patches for ssp are updated to ssp-4 version + A few patch name have been updated (some move from - to _) + + capi4k-utils now follow ppp version + + During my check of md5sum, I discover that some sources have been + changed since the first time I load them, despite of the same + name. eciadsl-usermode-0.10-nortek-alpha (mainly but not only + doc changes) bash-2.05b-2.patch, rawwritewin-0.7.zip, + gcc-2.95.3-2.patch + + So instead of changing the written md5sum, verify if the file in + cache is not different from the one available on the web + +2005-01-15 15:09 eoberlander + + * updates/1.4.3/information: Improve formatting of Legend table, to + cope with long translated strings. + +2005-01-12 02:39 franck78 + + * html/cgi-bin/: gui.cgi, ids.cgi, remote.cgi, time.cgi: Some tag + conversion (XHTML) + +2005-01-12 01:58 franck78 + + * html/cgi-bin/connections.cgi: XHTML
moved to
+ +2005-01-12 01:50 franck78 + + * html/cgi-bin/aliases.cgi: XHTML tag
to
+ http://www.w3.org/TR/xhtml1/#guidelines + +2005-01-11 21:26 franck78 + + * src/scripts/setddns.pl: Use -f option to reset counter for + FetchPublicIp execution starts also $Lines restored, oups! + +2005-01-11 16:36 eoberlander + + * html/cgi-bin/portfw.cgi: Cosmetic changes to table format, adding + some spaces. + +2005-01-11 14:18 franck78 + + * html/cgi-bin/logs.cgi/: config.dat, firewalllog.dat, ids.dat, + log.dat, proxylog.dat, summary.dat: Undo tag < /> correction... + +2005-01-11 14:02 franck78 + + * html/cgi-bin/: aliases.cgi, backup.cgi, changepw.cgi, + connections.cgi, graphs.cgi, gui.cgi, ids.cgi, modem.cgi, + portfw.cgi, proxygraphs.cgi, remote.cgi, shaping.cgi, + shutdown.cgi, status.cgi, time.cgi, updates.cgi, wireless.cgi: + Undo tag < /> correction! Sorry for the mistake, Franck + +2005-01-11 02:36 franck78 + + * html/cgi-bin/: aliases.cgi, backup.cgi, changepw.cgi, + connections.cgi, graphs.cgi, gui.cgi, ids.cgi, index.cgi, + modem.cgi, portfw.cgi, proxygraphs.cgi, remote.cgi, shaping.cgi, + shutdown.cgi, status.cgi, time.cgi, updates.cgi, wireless.cgi, + xtaccess.cgi, logs.cgi/config.dat, logs.cgi/firewalllog.dat, + logs.cgi/ids.dat, logs.cgi/log.dat, logs.cgi/proxylog.dat, + logs.cgi/summary.dat: Correct lot of tag to + +2005-01-10 12:32 franck78 + + * src/scripts/setddns.pl: Added RFE 1092914: dyndns behind router. + Based on Achim Weber patch. Removed lot of perl warning. + Corrected some HTML tags. Four translations added to language + database by Eric + +2005-01-09 12:20 eoberlander + + * html/cgi-bin/: aliases.cgi, ids.cgi: Cosmetic change to layout of + boxes on Snort IDS page. + +2005-01-07 13:08 eoberlander + + * updates/1.4.3/setup: Include recent changes in update files. + +2005-01-07 07:28 gespinasse + + * src/rc.d/rc.updatered: Fix with dhcpd on RED when two successive + rc.updatered are made. On low machines, the first run may have + end after the end of the second. This is very bad when the first + is dhcpcd down and the second is dhcpcd new as the interface stay + down. + + This happen in particular when the modem acting a a dhcp server + drive a ppp connection and both the IP and the gateway IP change + on renewal. + +2005-01-04 17:21 eoberlander + + * html/cgi-bin/xtaccess.cgi, src/misc-progs/setxtaccess.c: Fix + External Access page for port ranges, and adjust setxtaccess.c to + include extra 'remark/comment' field (Darren Critchley) + +2005-01-04 09:22 eoberlander + + * html/cgi-bin/xtaccess.cgi: Fix External Access page for port + ranges (Darren Critchley) + +2005-01-03 22:55 gespinasse + + * src/patches/ppp_generic-ppp-2.4.3_multilink.patch: Stylistic + change in lfs/linux + + For ppp-2.4.3, we will wait until a new libpcap is available + +2005-01-02 10:45 eoberlander + + * updates/1.4.3/setup: Remove SENDCR from modem/defaults file, as + it is now handled in ppp/settings. Cosmetic change to modem.cgi, + bringing buttons into box. + +2005-01-02 10:01 eoberlander + + * config/cfgroot/modem-defaults, config/cfgroot/modem-settings, + html/cgi-bin/modem.cgi: Remove SENDCR from modem/defaults file, + as it is now handled in ppp/settings. Cosmetic change to + modem.cgi, bringing buttons into box. + +2005-01-01 16:41 gespinasse + + * doc/How-to-make-update: Update How-to-make-update + +2005-01-01 16:34 gespinasse + + * doc/.cvsignore, html/cgi-bin/updates.cgi, + src/misc-progs/installpackage.c, updates/1.4.1/.cvsignore, + updates/1.4.2/.cvsignore, updates/1.4.3/.cvsignore: Delete + earlier the loaded update to spare 1/3 of necessary free space + + Add forgotten cvsignore + +2005-01-01 14:44 gespinasse + + * .cvsignore: Cosmetic : add some cvsignore to clean the logs + +2005-01-01 09:32 gespinasse + + * lfs/zlib: Fix CAN-2004-0797 in zlib-1.2.1 (local D.O.S) + +2004-12-31 18:33 eoberlander + + * html/cgi-bin/remote.cgi: Cosmetic change to layout of remote.cgi, + moving checkboxes to lefthand side, and indenting the list. + +2004-12-30 22:56 gespinasse + + * updates/1.4.3/setup: add again updates/1.4.3/setup + +2004-12-30 22:54 gespinasse + + * updates/1.4.3/setup[DEAD]: Try adding exec permission at + updates/1.4.3/setup by removing and adding again + +2004-12-30 21:53 gespinasse + + * updates/1.4.3/setup: Use two variable in patch setup instead of + multiple numbers occurences + + Don't try to hack /var/ipcop/patched/installed inside the patch + update, or it will fail to transfer content of information from + available to installed file. + +2004-12-30 09:50 eoberlander + + * html/cgi-bin/aliases.cgi: Cosmetic changes to aliases.cgi so + layout matches other pages. + +2004-12-30 09:26 eoberlander + + * html/cgi-bin/time.cgi: Cosmetic changes to layout of time.cgi. + I've included some explanatory text, and moved the Set Time Now + button to make it clear it can be used with Repeating Schedules + as well as Manual events. + +2004-12-23 18:36 eoberlander + + * src/rc.d/rc.firewall.local: Add improvements to rc.firewall.local + suggested by Scott Tregear in SF Bug 1088730. This file is not + included as an update, as Users own versions would be + overwritten. + +2004-12-23 08:54 eoberlander + + * updates/1.4.3/: ROOTFILES.alpha-1.4.3, ROOTFILES.i386-1.4.3: + Update Chinese from Language Database. + +2004-12-23 07:44 eoberlander + + * updates/1.4.3/: ROOTFILES.alpha-1.4.3, ROOTFILES.i386-1.4.3: + Update Danish from Language Database. + +2004-12-22 21:40 eoberlander + + * html/cgi-bin/gui.cgi, updates/1.4.3/information: Include control + on gui.cgi page to allow user selectable refresh of index.cgi + whilst Connected. Default is NO refresh whilst connected, which + is the status quo. + +2004-12-22 18:23 eoberlander + + * html/cgi-bin/gui.cgi, updates/1.4.3/ROOTFILES.alpha-1.4.3, + updates/1.4.3/ROOTFILES.i386-1.4.3: Modify layout of gui.cgi and + include control for muting beeps on ip-up and ip-down, and a + 'Restore defaults' button. Add three new phrases to Language + Database.\n\nStill to do: Add control for refreshing index page. + +2004-12-19 22:20 eoberlander + + * updates/1.4.3/: ROOTFILES.alpha-1.4.3, ROOTFILES.i386-1.4.3: Fix + a bug that caused a fixed lease to always be Enabled after being + edited. + +2004-12-18 21:58 gespinasse + + * doc/How-to-make-update, updates/1.4.3/ROOTFILES.alpha-1.4.3, + updates/1.4.3/ROOTFILES.i386-1.4.3: Change the name of modified + sources list to foc/updated-sources + + Exit if cvs export has failed + + Remove heading '/' in ROOTFILES.x-1.4.3 + +2004-12-18 18:16 gespinasse + + * tools/gen_changelog.sh[DEAD]: Move Changelog update in a new + ./make.sh changelog + +2004-12-18 18:11 eoberlander + + * updates/1.4.3/setup: Be more specific about which line to edit. + +2004-12-18 17:28 eoberlander + + * updates/1.4.3/setup: Change .tar.gz to .tgz.gpg in remaining + language files. Update from Language Database to CVS for iso, and + use sed in setup file for upgrade. Closes SF Bug 1077494. + +2004-12-18 17:25 eoberlander + + * html/html/images/forward.gif: Cosmetic change to arrow. + +2004-12-18 11:27 gespinasse + + * updates/1.4.3/: ROOTFILES.alpha-1.4.3, ROOTFILES.i386-1.4.3, + information, setup: Use a ID corresponding to the revision number + (fix SF 1086812) + + Sed header.pl for $version instead of replacing the whole file + hoping to not broke add-ons + + Patch of langage changes still need to be done. It will be made + in the 'dist' part of make.sh + +2004-12-17 21:13 eoberlander + + * html/cgi-bin/xtaccess.cgi, updates/1.4.3/ROOTFILES.alpha-1.4.3, + updates/1.4.3/ROOTFILES.i386-1.4.3: Add modification to add a + field for Remarks to xtaccess.cgi, submitted by Patrick Bernaud, + resolves Feature Request 1052343. + +2004-12-17 09:49 eoberlander + + * updates/1.4.3/: information, setup: Add files for 1.4.3 update. + +2004-12-17 09:14 eoberlander + + * updates/1.4.3/: ROOTFILES.alpha-1.4.3, ROOTFILES.i386-1.4.3: + Update Finnish from Language Database. + +2004-12-17 09:04 eoberlander + + * updates/1.4.3/: ROOTFILES.alpha-1.4.3, ROOTFILES.i386-1.4.3: Add + files for 1.4.3 update. + +2004-12-17 08:52 eoberlander + + * html/cgi-bin/index.cgi: Add ability to refresh the index.cgi page + when IPCop is Connected. Refreshing the homepage when Connected + is currently OFF by design. Creating the file 'refreshindex' with + the command 'touch /var/ipcop/main/refreshindex' will force the + homepage to refresh every 30 seconds whilst Connected. + +2004-12-17 08:44 eoberlander + + * html/cgi-bin/updates.cgi: Cosmetic change to Available Updates + box, tweak format of table. + +2004-12-17 08:27 eoberlander + + * src/ppp/: ip-down, ip-up: Add capability to silence beeps when + ppp goes up or down. Beeps are ON by default. Creating the file + 'nobeeps' with the command 'touch /var/ipcop/ppp/nobeeps' will + mute IPCop. + +2004-12-14 17:56 gespinasse + + * src/misc-progs/restartsyslogd.c: Remove -u syslog option from + syslog start line until it behave better. + + Problems were seen: - during kill -HUP (not restarted and not + working) - during kill (pid not removed in /var/run) + +2004-12-13 20:48 gespinasse + + * src/misc-progs/restartsyslogd.c: Fix wrong path in restartsyslogd + for syslogd + + The problem is still there when syslogd is started with -u syslog + option kill -HUP (pidnumber) does not restart syslogd + +2004-12-11 08:55 gespinasse + + * lfs/fcdsl2, src/misc-progs/installfcdsl.c, src/rc.d/rc.fritzdsl: + Shift nedd-depmod tag from /var/ipcop to /var/run the tags don't + need to be in backup Include the tags in the update-1.4.2 + + Include drdsl from a 3.11.4 driver for frizt modems + + Be friendly with testers, allow setup to be run more than once : + - from a 1.4.1 - and from a 1.4.2 This should allow testers to + install the final update without tweak + + Update Changelog + +2004-12-10 07:45 gespinasse + + * src/rc.d/rc.fritzdsl, updates/1.4.2/setup: Fix routed IP with ATM + modems + + Run depmod when it was not previously done : - when switching + form one to the other kernel - or after fcdsl package was + uploaded + + Go back to v1.4.0 root partition size or not enought free space + will be available for a kernel upgrade The problem will stay with + people installing directly v1.4.1 + + Update Changelog + +2004-12-09 15:01 eoberlander + + * config/etc/logrotate.conf, updates/1.4.2/information: Fix snort + logrotation, as directories were not being flushed from + /var/log/snort as /var/log/snort/scan.log didn't exist. Move code + that flushes directories into /var/log/snort/alert section of + logrotate.conf. + +2004-12-08 06:57 gespinasse + + * updates/1.4.2/information: Include pulsardsl in the update + + Update information + +2004-12-07 18:18 gespinasse + + * lfs/shadow: Shadow load in old + +2004-12-06 18:33 gespinasse + + * lfs/Config: Update LFS URL path to 5.1.1 + +2004-12-06 17:46 eoberlander + + * updates/1.4.2/information: Target release date now Friday 10 + December. + +2004-12-06 08:25 eoberlander + + * updates/1.4.2/information: Update information text. With the + kernel update removed, I think a reboot is not required. Please + revise if incorrect. + +2004-12-05 22:32 gespinasse + + * .cvsignore, updates/1.4.2/setup: Remove kernel and ppp upgrade + from update setup + + cvsignore doc/*.txt + +2004-12-05 22:03 gespinasse + + * lfs/ppp: Add remaining changes from the downgrade Take + rebuildhosts in update.1.4.2 + +2004-12-05 18:39 gespinasse + + * lfs/capi4k-utils, src/patches/ppp-2.4.2-close.patch, + src/patches/ppp-2.4.2-pppoatm-modprobe.patch, + src/patches/ppp-2.4.2-pppoatm-persist.patch, + src/patches/ppp-2.4.2-pppoatm.patch, + src/patches/ppp-2.4.2-printstats.patch, + src/patches/ppp-2.4.2-signal.patch: For a faster and stable + 1.4.2, postpone upgrade: - from linux-2.4.27 to 2.4.28 - from + ppp.2.4.2 to 2.4.3 - from openswan-1.0.7 to 1.0.8 I am compiling + so everything is not tested. If no update occure in the 4 next + hours, all should be right + +2004-12-05 13:54 rkerr + + * src/misc-progs/rebuildhosts.c: Initialise DOMAINNAME so we don't + get weird characters in /etc/hosts if it's unset - partially + fixes SF bug #1023993. We still need to work out how it's + possible to get DOMAINNAME unset - I can't see anything obviously + wrong with the 1.3-1.4 upgrade code in this respect. + +2004-12-05 07:16 gespinasse + + * config/kernel/kernel.config.i386.installer, + src/patches/raw-linux-2.4.28.patch: Fix patch-o-matic raw for + kernel 2.4.28 + +2004-12-03 23:22 gespinasse + + * src/patches/: linux-2.4.28-usb-devio.patch, + linux-2.4.28-usb-exclusive.patch[DEAD]: Fix usb 2.4.28 for + modem_run and eciadsl-synch : thank at Kaupo Arulo for the fix + +2004-12-03 22:57 eoberlander + + * html/cgi-bin/wireless.cgi: Add colons and a blob. + +2004-12-03 06:46 eoberlander + + * src/install+setup/setup/dhcp.c: Add _GREEN suffix to dhcpkv + variables. Fixes a bug where the /var/ipcop/dhcp/settings file + could not be read correctly by dhcp.cgi after a clean install. + Also change 'range dynamic-bootp' to 'range' in initial + dhcpd.conf file. + +2004-12-02 09:36 eoberlander + + * lfs/file: Version 09 is no longer available. + +2004-12-01 20:50 gespinasse + + * lfs/eciadsl-nortek: Fix the space at the end of ECI HiFocus name + +2004-12-01 19:17 rkerr + + * html/cgi-bin/logs.cgi/proxylog.dat: Neater fix for the lack of + input sanitization in proxylog.dat, using cleanhtml routine from + header.pl + +2004-12-01 12:32 alanh + + * updates/1.4.2/information: add 'reboot recommended' to + information file + +2004-12-01 12:12 alanh + + * updates/1.4.2/information: update information file + +2004-12-01 12:08 alanh + + * html/cgi-bin/logs.cgi/proxylog.dat: Sanitize fix ([KA Advisory + 0411291] IPCop Cross Site Scripting Vulnerability in + "proxylog.dat") + +2004-12-01 10:16 alanh + + * html/cgi-bin/wireless.cgi: Updates for the Blue Access page (Kees + Vonk) + +2004-12-01 10:02 alanh + + * updates/1.4.2/setup: Fix dhcpd restarting for the upgrade + +2004-12-01 08:44 eoberlander + + * updates/1.4.2/information: Update text. + +2004-11-30 21:56 alanh + + * src/rc.d/rc.firewall.local: fix c&p problem + +2004-11-30 21:40 alanh + + * src/rc.d/rc.firewall.local: add the reload option. + + This is only cosmetic. If people still have older files lying + around and the new reload option calls this script it will just + print out usage information which isn't a problem. + +2004-11-30 20:51 alanh + + * src/rc.d/rc.firewall: Correct place for calling rc.firewall.local + in the stop function and add an additional place for reload. + +2004-11-29 21:40 alanh + + * src/rc.d/: rc.netaddress.up, rc.updatered: Fix DOMAIN_NAME to + DOMAIN_NAME_GREEN + +2004-11-29 20:01 alanh + + * lfs/bind: Add usr/bin/host for ipsec verify + +2004-11-29 10:29 alanh + + * updates/1.4.2/setup: Fix 'ends never' in existing dhcp leases + files + +2004-11-28 22:55 gespinasse + + * src/patches/linux-2.4.28-usb-exclusive.patch: Work-around to make + modem_run and eciadsl-synch work again in 2.4.28 Four 2.4.28 usb + patches are removed + +2004-11-27 14:34 rkerr + + * src/misc-progs/restartsyslogd.c, lfs/fcron: Make restartsyslogd + pass -u syslogd to syslogd if it has to re-run it, and fix + multiple local vulnerabilities in fcron (CAN-2004-1030, + CAN-2004-1031, CAN-2004-1032 & CAN-2004-1032) + +2004-11-27 11:07 gespinasse + + * src/patches/eci-usermode_modemsdb.patch[DEAD]: Remove modems.db + patch since we use nortek-0.10 without changes + +2004-11-26 21:21 gespinasse + + * lfs/fcdsl2: pppsetup.cgi - fix modems.db move to /etc/eciadsl + + fcdsl2 - upgrade firmware and program to the last package + available for kernel2.4 + +2004-11-26 01:22 gespinasse + + * src/patches/eciadsl-usermode-0.10-semaphore-leak.patch, + updates/1.4.2/information, updates/1.4.2/setup: Eciadsl - + complete changes since previous was made too early - fix a + semaphore not removed on synch timeout - fix the nortek part + (sync and pppoeci) - rewrite rc.eciadsl to detect : firmware + loading failure keep synch info available + + eciadsl-nortek should work now but not tested with this sort of + modems + +2004-11-25 18:23 gespinasse + + * lfs/: eciadsl, eciadsl-nortek: Fix capi plugin location + +2004-11-25 09:25 alanh + + * updates/1.4.2/: ROOTFILES.alpha-1.4.2, ROOTFILES.i386-1.4.2: Fix + locations + +2004-11-25 09:21 eoberlander + + * langs/ro/cgi-bin/ro.pl, updates/1.4.2/ROOTFILES.alpha-1.4.2, + updates/1.4.2/ROOTFILES.i386-1.4.2: Update Greek and Romanian + languages. + +2004-11-24 23:27 gespinasse + + * lfs/capi4k-utils, lfs/ppp, + src/patches/capi4k-utils-2004-10-06_ppp-2.4.3.patch, + src/patches/ppp-2.4.2-pppoatm-modprobe.patch[DEAD], + src/patches/ppp-2.4.2-pppoatm-persist.patch[DEAD], + src/patches/ppp-2.4.2-pppoatm.patch[DEAD], src/scripts/resetusb: + ppp-2.4.3 Use the included pppoatm.so plugin instead of patches + collection + + capi4k-utils Fix compilation with ppp-2.4.3 + + resetusb sleep 6s after the reset instead of 3s help some + usb-controller + +2004-11-24 22:03 alanh + + * updates/1.4.2/ROOTFILES.alpha-1.4.2, + updates/1.4.2/ROOTFILES.i386-1.4.2, lfs/openswan: OpenSWAN 1.0.8 + final + +2004-11-24 10:20 alanh + + * lfs/capi4k-utils: Fix capi + +2004-11-24 10:05 alanh + + * updates/1.4.2/: ROOTFILES.alpha-1.4.2, ROOTFILES.i386-1.4.2: + remove unneeded ppp files + +2004-11-24 09:46 alanh + + * updates/1.4.2/: ROOTFILES.alpha-1.4.2, ROOTFILES.i386-1.4.2: Fix + openswan 1.0.8rc2 files + +2004-11-24 09:45 alanh + + * updates/1.4.2/setup: remove older ppp files + +2004-11-24 09:43 alanh + + * updates/1.4.2/setup: upgrade kernel + +2004-11-24 09:39 alanh + + * config/kernel/kernel.config.i386.installer, lfs/driver.img, + lfs/openswan, lfs/ppp, src/patches/ppp-2.4.2-close.patch[DEAD], + src/patches/ppp-2.4.2-pppoatm.patch, + src/patches/ppp-2.4.2-printstats.patch[DEAD], + src/patches/ppp-2.4.2-signal.patch[DEAD], + updates/1.4.2/ROOTFILES.alpha-1.4.2, + updates/1.4.2/ROOTFILES.i386-1.4.2: Upgrade kernel to 2.4.28 + Upgrade ppp to 2.4.3 Upgrade openswan to 1.0.8rc2 + + Unfortunately the 'raw' patch from netfilter's patch-o-matic + doesn't apply cleanly. I'll look into this if it isn't fixed soon + with a new pomng package. + + Also we'll be waiting for 1.0.8 of openswan to reach final before + releasing our 1.4.2 update. + +2004-11-23 06:37 eoberlander + + * updates/1.4.2/: ROOTFILES.alpha-1.4.2, ROOTFILES.i386-1.4.2: + Update French, German and Norwegian with new .tgz.gpg string. + +2004-11-22 18:53 alanh + + * tools/mkflash/mkflash: Give a little more log space for 256MB + Flash + +2004-11-22 09:18 alanh + + * updates/1.4.2/: ROOTFILES.alpha-1.4.2, ROOTFILES.i386-1.4.2, + setup: current 1.4.2 files + +2004-11-19 16:41 alanh + + * updates/1.4.2/: ROOTFILES.alpha-1.4.2, ROOTFILES.i386-1.4.2, + information, setup: add 1.4.2 update files + +2004-11-19 10:25 alanh + + * html/cgi-bin/updates.cgi, src/scripts/updatelists.pl: Put back + the version grabbing. + + So, we'll have updates for 1.4.0, and 1.4.1 and 1.4.2, etc. + rather than just one big update list for 1.4.0 applying to all. I + think this makes it a little simpler to understand what's an + upgrade and what's a fresh install. + +2004-11-16 22:48 alanh + + * src/install+setup/install/: pcmcia.c, usb.c: PCMCIA detection + didn't work for floppy boot systems - fix that. + + Also fix PCMCIA detection for ISAPNP based PCMCIA controllers + which the probe routines don't find. (Fixes SF bug 1060840) + +2004-11-16 20:29 alanh + + * config/httpd/httpd.conf: Whoops, removed too much there. + +2004-11-16 20:13 alanh + + * config/httpd/httpd.conf: Remove access restrictions for backup + exporting + +2004-11-15 19:39 alanh + + * lfs/dnsmasq: dnsmasq 2.17 + +2004-11-15 06:23 gespinasse + + * lfs/ez-ipupdate: Fix ez-ipupdate patch application + +2004-11-14 12:51 rkerr + + * lfs/ez-ipupdate, src/patches/ez-ipupdate.formstring.patch: Fix + for a format string vulnerability in ez-ipupdate: + http://marc.theaimsgroup.com/?l=full-disclosure&m=110018323619438 + +2004-11-12 16:19 gespinasse + + * lfs/: cnx_pci, configroot: Fix eagle-usb with CMV file for isdn + line + + Conexant PCI - remove the depmod since a final one is made in + driver.img - add again /var/ipcop/cnx_pci since it is used to + write symlink - remove ttyCX part as it is not used + +2004-11-11 10:41 gespinasse + + * lfs/cnx_pci, lfs/configroot, + src/patches/CnxADSL-cln-irqreturn.patch, + src/rc.d/rc.conexantpciadsl: Update Conexant pci driver - this + fix the related stack smashing attack and other memory leak + messages - there is still a problem at reconnection, the driver + look to keep an LCP TermReq in a buffer from previous session + and disconnect when ppp0 goes up + + Eagleusbadsl - fix rc.eagleusbadsl in update-1.4.1 forgotten - + don't take dsp_code in update since they were not updated from + 1.9.9 to 2.0.0 + +2004-11-11 09:39 alanh + + * src/install+setup/: install/upgrade-v12-v13.c, libsmooth/main.c: + Fix a problem in the 1.2 to 1.3 upgrade that causes lots of lines + like + + TYPE=modem TYPE=modem TYPE=modem + + or + + TYPE=isdn TYPE=isdn TYPE=isdn + + in the ppp settings files because of a bogus replace command. + +2004-11-10 20:13 alanh + + * updates/1.4.1/information: Bump the date for 1.4.1 to the 20th + November. + + Fix the installed patches file to have the same date as Released + & Installed. + +2004-11-10 19:56 alanh + + * lfs/iputils: add an alternative 'ping' binary that supports the + -I option. This one is installed in /usr/bin, whereas the + inetutils one is currently installed in /bin + + Other people have asked for this functionality to return. + +2004-11-10 17:39 alanh + + * config/kernel/kernel.config.i386.installer: Fix the ROOTFILES for + the real kernel modules that haven't been updated in a while. + + Actually build some more of the wireless kernel modules and + include them in the 1.4.1 update for those who want to configure + manually. + +2004-11-10 17:13 alanh + + * lfs/driver.img: Exclude ide and acpi modules from network driver + disk + +2004-11-09 23:25 gespinasse + + * src/patches/: eagle-usb-1.9.9-pppoa-mac.patch[DEAD], + eciadsl-usermode-0.9-load1.patch[DEAD]: Remove unecessary old + patches Fix an old adiadsl in netstatus.cgi + +2004-11-09 22:00 alanh + + * html/cgi-bin/netstatus.cgi: improve the colours + +2004-11-09 19:31 alanh + + * html/cgi-bin/netstatus.cgi: Highlight the interfaces in bold for + better colour representation + +2004-11-09 17:35 alanh + + * html/cgi-bin/netstatus.cgi: Consolidate the dynamic leases code + in dhcp.cgi and netstatus.cgi (Franck Bourdonnec) + +2004-11-09 11:21 alanh + + * lfs/isapnptools: Check the correct location for isapnp command. + Create new /var/ipcop/isapnp directory and move the isapnp.conf + file there so it's backed up and out of the way of /etc. Fixes + SF bug 1062961 + +2004-11-09 09:54 alanh + + * html/cgi-bin/netstatus.cgi: Add colour coding to the interface + names in netstatus.cgi for easier management of which interface + is which. + + Thanks to Franck Bourdonnec for the initial version of this. + +2004-11-09 07:56 gespinasse + + * lfs/eciadsl-nortek, src/rc.d/rc.eagleusbadsl: Update eagle-usb to + 2.0.0 with cmv use Update eciadsl-nortek to 0.10-alpha Remove + $VERSION in /doc/packages-list + +2004-11-06 15:14 gespinasse + + * html/cgi-bin/netstatus.cgi: Fix netstatus for new dhcp variables + Normalize position of { + +2004-11-05 23:40 alanh + + * config/kernel/kernel.config.i386.installer, + config/kernel/kernel.config.i386.smp, + src/install+setup/libsmooth/netstuff.c: ax8817x usb driver no + longer exists and is included in usbnet. So support usbnet from + now on. + +2004-11-05 07:17 gespinasse + + * lfs/eciadsl, src/patches/eci-usermode_modemsdb.patch, + src/rc.d/rc.eciadsl: Update to eciadsl-0.10 Don't remove + eciadsl-usermode-0.9-load1.patch as it is used by nortek version + +2004-11-04 18:51 alanh + + * src/rc.d/rc.network: Support PCMCIA USB devices + +2004-11-04 11:41 eoberlander + + * langs/ro/cgi-bin/ro.pl: Minor changes from Language Database. + Mainly deletions - Not intended for inclusion in update. + +2004-11-03 22:11 alanh + + * src/misc-progs/setuid.h: add VALID_SHORT_MASK + +2004-11-03 21:28 alanh + + * src/misc-progs/restartsquid.c: Fix restartsquid when used in + conjunction with VPN's (Darren Critchley) + +2004-11-03 16:37 eoberlander + + * src/scripts/makegraphs: Add Michael Spann's solution for utf-8 + conversion for rrdtool, adapted to use different character sets, + and to avoid those we can't yet convert. + +2004-11-03 13:50 alanh + + * src/: install+setup/setup/dhcp.c, misc-progs/restartdhcp.c: + Commit Franck Bourdonnec's changes to the dhcp page which fixes + the dhcp page bug in SF with regards to src/dest range checking. + + I've tested this quite a bit as I had to put the upgrade bits & + pieces together. But it could use a little more banging on. + + Eric - There's a one line addition to the en.pl language file + you'll notice. + +2004-11-02 18:45 alanh + + * doc/ChangeLog: Changes since 1.4.0 + +2004-11-02 09:28 alanh + + * lfs/apache: upgrade apache to 1.3.33 and modssl to 2.8.22-1.3.33 + +2004-10-30 13:09 alanh + + * updates/1.4.1/setup: Comment out dhcp problem for now, until I + can investigate + +2004-10-29 11:33 alanh + + * html/cgi-bin/dmzholes.cgi: Remove the old check + +2004-10-29 11:09 alanh + + * html/cgi-bin/dmzholes.cgi, src/misc-progs/setdmzholes.c: Fix DMZ + page for port ranges (Darren Critchley) + +2004-10-29 10:15 alanh + + * updates/1.4.1/setup: Detect if it's been done + +2004-10-29 10:10 alanh + + * updates/1.4.1/setup: Fix more bootp problems by disallowing + 'dynamic bootp' clients + +2004-10-28 18:13 alanh + + * lfs/openssl: remove -j 3 - seems to cause build problems with + this version + +2004-10-28 17:55 alanh + + * lfs/openssl: Fix openssl rmdir command + +2004-10-28 17:09 alanh + + * lfs/openssl: ensure fips is defined + +2004-10-28 08:50 alanh + + * updates/1.4.1/setup: Check that 1.4.0 is currently running before + trying to perform an upgrade + +2004-10-28 08:25 alanh + + * lfs/openssl: openssl 0.9.7e + +2004-10-28 07:40 eoberlander + + * langs/so/cgi-bin/so.pl: Remove old 'fritzdsl help' string, as + Gilles has rewritten it in English. + +2004-10-27 10:04 alanh + + * lfs/dnsmasq: Upgrade dnsmasq to 2.16 (since 2.06 ish) it's been + backwards compatible to dnsmasq 1.18 and has quite a few bug + fixes too. + + We still do not use the DHCP features because ISC's is doing this + job. It needs to be looked at for IPCop 1.5.0 whether dnsmasq + DHCP can do all of the functions that we're currently using ISC's + for. + +2004-10-26 21:47 gespinasse + + * lfs/fcdsl, src/misc-progs/installfcdsl.c: Fix installfcdsl fro + untaring the files + + Remove drdsl,drdsl.ini + +2004-10-26 20:16 alanh + + * lfs/iptables, src/patches/iptables-1.2.11.patch: Fix iptables bug + when hostname used has multiple ip address matches. (SF bug + 1054790) + +2004-10-26 19:40 alanh + + * lfs/eciadsl-nortek: Fix download link + +2004-10-25 18:29 gespinasse + + * updates/1.4.1/information: Update fcdsl upload help text + + Add eciadsl-nortek support info in 1.4.1 patch + +2004-10-25 17:39 gespinasse + + * html/cgi-bin/index.cgi, html/cgi-bin/status.cgi, lfs/eciadsl, + lfs/eciadsl-nortek, lfs/fcdsl, lfs/net-tools, + src/patches/eci-usermode_modemsdb.patch, + src/patches/net-tools-1.60-cleanup-list-handling.patch, + src/patches/net-tools-1.60-get_name.patch, src/rc.d/rc.eciadsl, + updates/1.4.1/ROOTFILES.alpha-1.4.1: net-tools Fix SF1047183 + stack smashing attack in function if_readlist_proc + + pppsetup.cgi Clean the code Fix display for fritzdsl - + PPPoE is not a second level option but the only available + selection possible with RFC1483 - correct encapsulation + for PPPoA + + index.cgi Make the warning for root partition a fixed size or + 10% will waste more than necessary on small disk + + status.cgi Display disk partition sizes in fixed MB unit + + fcdsl Move drdsl in /etc/drdsl (in fcdsl package) + + Add support for eciadsl-nortek driver + +2004-10-25 11:27 eoberlander + + * updates/1.4.1/information: Update information. + +2004-10-25 11:22 alanh + + * updates/1.4.1/: ROOTFILES.alpha-1.4.1, ROOTFILES.i386-1.4.1: add + no.pl + +2004-10-25 11:15 eoberlander + + * langs/fi/install/lang_fi.c: Update Finnish Installer strings to + include some missings CRs. + +2004-10-25 10:47 alanh + + * updates/1.4.1/: ROOTFILES.i386-1.4.1, information: Update the + information file. + + Can other developers update this for the fixes they've done. + +2004-10-21 13:08 alanh + + * lfs/perl: remove -j 3 as sometimes it causes a build failure + +2004-10-21 07:29 gespinasse + + * lfs/3cp4218, lfs/amedyn, lfs/cxacru, lfs/speedtouch, + src/patches/speedtouch-1.2-isdn.patch, + updates/1.4.1/ROOTFILES.alpha-1.4.1, + updates/1.4.1/ROOTFILES.i386-1.4.1: Don't reject speedtouch Rev + 0.01 because it work! Patch modem_run to let Rev 0.01 (0x000a) + interfaces to be set like a Rev 0.00 and not the default values + (like a Rev 2.00) + + Remove intermediate depmod since a final one is made in + driver.img This spare a few s / mn + +2004-10-20 21:33 gespinasse + + * src/rc.d/rc.fritzdsl: Name fcdsl tgz with $VERSION instead of + $KVER + + Suppress a debug message with $kernel in pppsetup.cgi + + Fix missing path for modprobe in rc.fritzdsl stop + +2004-10-20 15:55 alanh + + * src/scripts/tunerrd.pl: remove CTRL+M's + +2004-10-20 09:05 alanh + + * updates/1.4.1/ROOTFILES.alpha-1.4.1, + updates/1.4.1/ROOTFILES.i386-1.4.1, updates/1.4.1/setup, + src/scripts/makegraphs, src/scripts/tunerrd.pl: Set the heartbeat + to 600 seconds instead of 300 to avoid gaps in the graphs. + + Fixes SF bug 1048706 (thanks to JukJuk) + +2004-10-20 08:51 alanh + + * src/misc-progs/restartshaping.c: 8192 was still too low - up to + 16384 + +2004-10-20 07:05 gespinasse + + * lfs/fcdsl, src/misc-progs/installfcdsl.c, src/rc.d/rc.fritzdsl, + updates/1.4.1/ROOTFILES.alpha-1.4.1, + updates/1.4.1/ROOTFILES.i386-1.4.1: Move fcdsl firmwares in + fcdsl-$kernel.tgz + + Fix in pppsetup.cgi fcdsl module loaded detection + + Set every fcdsl modem with the according controller value (1 or + 2) in rc.red. I am unsure for fcdsl2 + + Put modules.dep in patch 1 or need to start a depmod depmod take + more time on the target and display unresolved symbol until + CnxADSL is fixed + +2004-10-19 08:02 gespinasse + + * lfs/configroot, lfs/fcdsl, lfs/fcdsl2, lfs/fcdslsl, + lfs/fcdslslusb, lfs/fcdslusb, src/misc-progs/Makefile, + src/misc-progs/installfcdsl.c, + src/patches/fcdsl-singlelock.patch, + src/patches/fcdslsl-singlelock.patch, + src/patches/fcdslslusb-singlelock.patch, src/rc.d/rc.fritzdsl, + updates/1.4.1/ROOTFILES.alpha-1.4.1, + updates/1.4.1/ROOTFILES.i386-1.4.1, updates/1.4.1/setup: make.sh + - build only fcdsl tgz with machine=i386 - name fcdsl package + with kernel version instead of ipcop version + + upload.cgi - various fix for xhtml compliance (mainly form inside + of table) - load fcdsl-$kernel.tgz and install the modules from a + C helper + + misc-progs - add an installer for uploaded fcdsl(x) modules + + rc.fritdsl - fix wrong syntax for module modprobe, it should be + without (.o.gz) + + Various fix - remove /var/ipcop/{pulsardsl,fritzdsl} from + configroot at upgrade stage at patch 1 - patch fcdsl, + fcdslsl, fcdslslusb with a singlelock patch - 'rc.fritzdsl stop' + was not called on rc.red clear, so create a cleanup + +2004-10-18 08:06 alanh + + * updates/1.4.1/: ROOTFILES.alpha-1.4.1, ROOTFILES.i386-1.4.1: add + fr.pl to upgrade + + Eric - any files you modify - please add them here too + +2004-10-17 20:34 alanh + + * src/rc.d/rc.netaddress.up: fix typo + +2004-10-17 15:30 eoberlander + + * html/cgi-bin/index.cgi: Cosmetic tweak, add colons after text. + +2004-10-15 13:17 alanh + + * lfs/squid: Don't need the squid patch with STABLE7 + +2004-10-15 09:55 alanh + + * html/cgi-bin/ids.cgi, src/misc-progs/restartsnort.c, + src/rc.d/rc.updatered: Allow snort to only be restarted on + certain interfaces. + + This avoids restarting snort on all interfaces, when just the RED + interface has gone down/up. + + ids.cgi could be improved furthur, to check tickboxes and restart + interfaces that have been newly selected/deselected. + +2004-10-15 08:44 alanh + + * updates/1.4.1/setup: remove capi.conf as /etc/fcdsl/... contains + these entries for each fcdsl driver. + +2004-10-15 08:20 alanh + + * updates/1.4.1/setup: Run ldconfig after libcapi20 upgrade in + 1.4.0 to 1.4.1 upgrade + +2004-10-15 08:16 alanh + + * lfs/squid, updates/1.4.1/ROOTFILES.alpha-1.4.1, + updates/1.4.1/ROOTFILES.i386-1.4.1: update squid to 2.5STABLE7 + +2004-10-14 21:48 alanh + + * html/cgi-bin/hosts.cgi: keep same formatting as under 1.4.0 + +2004-10-14 20:57 alanh + + * updates/1.4.1/: ROOTFILES.alpha-1.4.1, ROOTFILES.i386-1.4.1, + information, setup: Introduce a build procedure for building the + incremental patches. + + Start with a preliminary 1.4.1 patch set for testing. + + Obviously it's for those building from source, as when the patch + goes up on the website it will be GPG signed. Therefore the + update is left in build/install/images/... and not put on the + CDROM. The CDROM contains the latest code anyway. + + If there's anything people see missing in the patch.tar.gz add + the files to the ROOTFILES. Exactly as you would with the normal + build procedure. + +2004-10-14 20:30 alanh + + * src/rc.d/rc.netaddress.up: If RED is ethernet, and it's DHCP or + STATIC we have to start the connection automatically on reboot. + Fixes bug 1045479. + +2004-10-14 15:32 alanh + + * src/misc-progs/restartshaping.c: Fix restartshaping priorities (y + b) + +2004-10-14 07:17 gespinasse + + * lfs/fcdsl, lfs/fcdsl2, lfs/fcdslsl, lfs/fcdslslusb, lfs/fcdslusb, + src/patches/fcdslx-irqreturn.patch, src/rc.d/rc.fritzdsl: Add + support for fcdsl2,fcdslsl,fcdslslusb,fcdslusb + + Upload.cgi - fix an unnecessary - treat other upload like + speedtouch - detect every supported fdsl modem, showing the + proper module name to be loaded - display the full name with + .o.gz termination and load with this .o.gz + + Each modem had his proper /etc/fcdsl/fcdsl(x).conf for capiinit + If not I had warnings for modules not found with capiinit stop + +2004-10-13 20:24 alanh + + * html/cgi-bin/hosts.cgi: Allow hosts.cgi to be sorted by ... + + ipaddress hostname domainname + + and in the reverse order by clicking a second time on the titles + of each of the columns. Nice. Thanks to Franck Bourdonnec. + + Harry - this will fix your problem too. + +2004-10-12 16:36 alanh + + * src/scripts/setddns.pl: freedns has changed some text + +2004-10-11 16:38 eoberlander + + * langs/it/install/lang_it.c: Updates to Italian Installer from + Language Database. + +2004-10-11 16:25 alanh + + * src/misc-progs/rebuildhosts.c: [no log message] + +2004-10-11 16:07 alanh + + * src/misc-progs/rebuildhosts.c: If a bad host gets through the + webpage then don't abort the rest of the hosts because of it. + Remove that entry and continue. + +2004-10-10 18:33 eoberlander + + * src/rc.d/rc.alcatelusbk: Fix typo. + +2004-10-10 18:12 eoberlander + + * src/install+setup/libsmooth/netstuff.c: Fix typo. + +2004-10-10 12:18 eoberlander + + * langs/de/install/lang_de.c: Update to German from Language + Database. + +2004-10-10 12:17 eoberlander + + * langs/so/cgi-bin/so.pl: Updates to Somali from Language Database. + +2004-10-09 05:58 gespinasse + + * lfs/capi4k-utils, src/patches/glibc-2.3.3-ssp_frandom-2.patch: + Move glibc-2.3.3-ssp_frandom-2.patch to src/patches Update to + capi4k-utils-2004-10-06 + +2004-10-08 10:15 alanh + + * html/cgi-bin/proxy.cgi: Must multiply the MAX_INCOMING_SIZE value + by 1024 to turn it into bytes. As the web page asks for it in + KB, but the parameter in the squid.conf can only accept a byte + value. + +2004-10-07 07:24 eoberlander + + * html/cgi-bin/connections.cgi: Cosmetic change to table header + layout. Use line breaks, as per v1.3. + +2004-10-07 07:21 eoberlander + + * langs/so/: cgi-bin/so.pl, install/lang_so.c: Updates to Somali + from Language Database. + +2004-10-06 08:56 eoberlander + + * html/cgi-bin/connections.cgi: Cosmetic change to table layout. + Use full width of box. + +2004-10-06 07:11 eoberlander + + * langs/it/install/lang_it.c: Update Italian from Language + Database. + +2004-10-05 20:33 eoberlander + + * html/cgi-bin/connections.cgi: Add space between strings to fix + text formatting, and improve layout of table. + +2004-10-05 18:37 alanh + + * html/cgi-bin/index.cgi: Only display hostname/ip address when + actually connected (Dr Michael Spann) + +2004-10-05 14:28 alanh + + * src/scripts/updatelists.pl: Get $major.$minor.0 for patch list to + match update.cgi change + +2004-10-05 12:40 alanh + + * html/cgi-bin/index.cgi: Add hostname & red ip address to + index.cgi page (Dr Michael Spann) + +2004-10-05 08:39 alanh + + * src/rc.d/rc.updatered: remove the traffic shaping startup from + rc.sysinit, there was a bug in rc.updatered which checked for + ENABLED, rather than ENABLE + +2004-10-04 07:23 eoberlander + + * langs/: en/install/lang_en.c, es/install/lang_es.c: Minor updates + to German, Greek, Spanish and Polish web files from Language + Database. And minor updates to English and Spanish Installer + files. + +2004-10-04 06:28 riddles + + * src/rc.d/rc.fritzdsl: Add kernelcapi load + +2004-10-03 21:13 alanh + + * html/cgi-bin/updates.cgi: Force updates cgi to always get + $major.$minor.0 (i.e. .0 is the patchlevel) + + This means we can bump the last digit and still show patches + loaded. + +2004-10-03 10:32 eoberlander + + * langs/so/: cgi-bin/so.pl, install/lang_so.c: Update Somali from + Language Database. Remove whitespace from end of some fields, as + it causes problems if the text is used for a button. + +2004-10-02 17:55 eoberlander + + * langs/so/install/lang_so.c, src/install+setup/libsmooth/main.c, + src/install+setup/setup/main.c: Add Somali to Installer. + +2004-10-01 13:54 eoberlander + + * langs/: list, so/cgi-bin/so.pl: Add Somali to web interface. + +2004-09-30 22:37 alanh + + * doc/ChangeLog: Add 1.4.0 entry + +2004-09-30 07:46 riddles + + * doc/ChangeLog, tools/gen_changelog.sh: Update changelog script + and changelog + +2004-09-29 22:12 alanh + + * src/misc-progs/setportfw.c: Fix setportfw when no BLUE exists + +2004-09-29 14:08 alanh + + * doc/ChangeLog: update ChangeLog + +2004-09-29 10:31 gespinasse + + * lfs/cnx_pci, src/rc.d/rc.conexantpciadsl: Revert to the previous + package as the new one did not support the Yukon card and same + problem occur with ssp. Change rc.conexantpci to not unload the + module at stop as a workaround. The 'smashing attack' still + appear every time killall is used like in rc.updatered with + dsnmasq, so it is unlikely to be reliable. + +2004-09-29 10:28 alanh + + * html/cgi-bin/connections.cgi: Handle 'gre' in connections (this + may need a little more tweaking later) + +2004-09-29 08:35 gespinasse + + * lfs/cnx_pci: Slightly better source and smaller package (not with + a ppp source include) + +2004-09-28 07:04 eoberlander + + * langs/: da/install/lang_da.c, th/cgi-bin/th.pl: Updates from + Language Database. + +2004-09-28 06:44 gespinasse + + * lfs/cdrom: build french doc from sourceforge + +2004-09-27 18:12 alanh + + * src/rc.d/rc.isdn: Kill messages + +2004-09-26 18:20 eoberlander + + * langs/fr/install/lang_fr.c: Updates to French from Language + Database. + +2004-09-26 11:20 gespinasse + + * doc/ChangeLog, tools/gen_ChangeLog.txt[DEAD], + tools/gen_changelog.sh: Replace instructions to generate + changelog with a gen_changelog.sh script working on every branch + Update ChangeLog in the same time + +2004-09-26 08:31 gespinasse + + * lfs/cdrom: Add french install and quickstart pdf in the ISO ( + they are temporarily loaded from my website) Place pdf in + /doc/{english|deutsch|francais} subdirectories + +2004-09-24 10:19 alanh + + * lfs/nano: update the friendly editor + +2004-09-24 08:33 alanh + + * src/misc-progs/ipsecctrl.c: When disabling VPN from the GUI don't + call ipsecctrl, but call the ipsec script directly so it does + shutdown. This way we can return ipsecctrl back to it's original + form of only shutting down when VPN is enabled. + +2004-09-24 06:08 gespinasse + + * src/rc.d/rc.conexantpciadsl: Too late... bad file, go back to the + ROOT + +2004-09-24 00:05 gespinasse + + * src/: ppp/ip-down, rc.d/rc.3cp4218usbadsl, rc.d/rc.alcatelusb, + rc.d/rc.alcatelusbk, rc.d/rc.amedynusbadsl, rc.d/rc.bewanadsl, + rc.d/rc.conexantpciadsl, rc.d/rc.conexantusbadsl, + rc.d/rc.eagleusbadsl, rc.d/rc.eciadsl, rc.d/rc.pulsardsl, + scripts/resetusb: pppsetup.cgi - replace GDTM by GDMT - hardcode + G.DMT,G.Lite, ANSI T1.483, Bewan PCI st, Bewan USB st as they + are never translated + + upgrade-v130-v140 - remove changes from PPPoE to PPPoE + plugin, from Speedtouch user-space to kernel mode + (dial-on-demand is not supported by the PPPoA plugin) - correct + GDTM => GDTM + + Change to rc.(specific-script) - create an external script + resetusb for the numerous call to reset usb - standardised stop + and cleanup messages - add modprobe -r module where it was + sometime forgoten in cleanup part - Speedtouch usb select + more accuratly supported models (it may needed to display a + more user friendly message in upload.cgi and pppsetup.cgi + too) fix incorrect reconnection in PPPoE with user-space + driver - rc.eciadsl synchronise now only after firmware + loading fix incorrect reconnection in PPPoE - Bewan usb + sometime don't like cat /proc/bus/usb/devices, so comment + this part until the driver is fixed + + rc.connectioncheck - fix incorrect rc.eciadsl end detection + during sync phase - use instead 'rc.red start' target for end + detection. So the timeout is only determinated by + rc.(specific-script) end. - remove {ppp0|ippp0} in case of + multiple (incorrect) session with dial-on-demand - in case of + connection timeout, stop 'rc.red start' before rc.red stop in + case pppd connect just during the time needed by 'rc.red stop' + script to start + + ip-down - don't start 'rc.connectioncheck reconnect' if one is + already running - it should no more append now, but ... + +2004-09-23 20:55 eoberlander + + * langs/th/cgi-bin/th.pl: Updates from Language Database. + +2004-09-23 13:28 alanh + + * tools/mkflash/mkflash: 32 & 64MB Flash cards no longer fit, so + don't expose them. + +2004-09-23 08:54 alanh + + * src/misc-progs/restartshaping.c: Bump divisor for r2q setting to + 8192, add some comments too. + +2004-09-22 17:34 alanh + + * doc/ChangeLog: update the ChangeLog + +2004-09-22 17:15 eoberlander + + * langs/th/cgi-bin/th.pl: Update to Thai from Language Database. + +2004-09-22 08:35 riddles + + * config/cron/crontab, lfs/ipac-ng, + src/patches/ipac-ng-1.28-ipacsum.patch[DEAD]: Fix ipac-ng once + and for all + +2004-09-22 07:52 eoberlander + + * langs/es/install/lang_es.c: Updates from Language Database. + +2004-09-21 20:07 gespinasse + + * src/rc.d/rc.pulsardsl: Put an arbitrary sleep only after module + loading This allow to start pppd when the modem should be + synchronised + +2004-09-21 19:47 rkerr + + * src/misc-progs/setportfw.c: Stop the blue SNAT rules overriding + the green ones + +2004-09-21 11:16 riddles + + * lfs/ipac-ng, src/patches/ipac-ng-1.28-ipacsum.patch: Fix for + ipacsum + +2004-09-21 05:50 gespinasse + + * src/misc-progs/setportfw.c: - fix blue_dev => bluedev + +2004-09-20 21:29 alanh + + * src/misc-progs/setportfw.c: SNAT patch for BLUE (Robert Kerr) + +2004-09-20 21:28 alanh + + * src/misc-progs/restartwireless.c: Remove -o for WIRELESSINPUT + (Franck) + +2004-09-20 19:42 alanh + + * src/install+setup/install/probescsi.sh: Skip eata_dma driver, but + probe it at the very end to avoid the issues of some machines + crashing on this driver. + +2004-09-20 14:03 riddles + + * html/cgi-bin/wireless.cgi: Fix id string + +2004-09-19 10:34 gespinasse + + * lfs/cdrom: Fix change from install-en-140.pdf.zip to + install-en-1.4.0.pdf.zip + +2004-09-19 06:15 gespinasse + + * src/rc.d/rc.eciadsl: Cosmetic : Display only 'Loading firmware' + when it is really loaded + +2004-09-18 17:54 alanh + + * src/misc-progs/restartsquid.c: Fix transparent proxy on BLUE + (Franck) + +2004-09-18 06:51 eoberlander + + * langs/es/install/lang_es.c: Updates to Spanish from Language + Database. + +2004-09-17 11:44 alanh + + * src/install+setup/libsmooth/main.c: fclose file handles when + renaming + +2004-09-17 08:20 alanh + + * src/rc.d/rc.updatered: Make it a little more readable (patch from + Franck) + +2004-09-17 07:44 eoberlander + + * langs/: lt/cgi-bin/lt.pl, ro/cgi-bin/ro.pl: Change G.dtm to G.dmt + throughout Language Database. + +2004-09-16 23:56 alanh + + * src/misc-progs/ipsecctrl.c: pump error message to /dev/null (SF + bug #1029177) + +2004-09-16 16:44 alanh + + * lfs/libpng: latest libpng + +2004-09-16 16:44 alanh + + * lfs/openssh: 3.9p1 is now current + +2004-09-16 13:16 eoberlander + + * langs/fr/install/lang_fr.c: Updates from Language Database. + +2004-09-16 08:15 eoberlander + + * langs/es/install/lang_es.c: Updates from Language Database. + +2004-09-15 20:08 eoberlander + + * langs/: es/install/lang_es.c, it/install/lang_it.c: Updates from + Language Database. + +2004-09-15 17:56 gespinasse + + * lfs/net-tools: Cosmetic : remove the sources after compilation + again + +2004-09-15 13:27 alanh + + * html/cgi-bin/logs.cgi/: firewalllog.dat, ids.dat, log.dat, + proxylog.dat, summary.dat: Ugh. Forgot this logs.cgi directory + when making the POSIX() change. + +2004-09-14 21:42 alanh + + * config/install/rc, src/install+setup/install/usb.c: Move the + usb-storage initialization to the initialize_usb function so that + passing the 'nousb' flag to the install kernel really means NO + USB. + +2004-09-14 18:00 alanh + + * lfs/: cnx_pci, fcdsl, shadow, unicorn: Only build utilities in + non-SMP pass + +2004-09-14 09:39 alanh + + * lfs/: gcc, gcc-2: Update stack smashing patch + +2004-09-14 08:31 alanh + + * lfs/brctl[DEAD]: deleted + +2004-09-14 08:14 alanh + + * lfs/: 3cp4218, amedyn, cxacru: Build brctl from amedyn driver as + lfs/brctl host is down and they are the same version anyway. + + Build the amedyn, cxacru and 3cp4128 tools only in the non-SMP + pass to save a little time. + +2004-09-13 17:26 alanh + + * html/cgi-bin/netstatus.cgi: Speed up header.pl times by 25%. + +2004-09-13 17:00 alanh + + * src/install+setup/install/grubbatch: Don't probe a floppy drive + when installing grub - should speed up the install. + +2004-09-13 15:00 alanh + + * html/cgi-bin/credits.cgi: Add Franck Bourdonnec to credits page + +2004-09-13 13:59 alanh + + * src/scripts/setddns.pl: Add a new dyndns provider OVH (Franck) + +2004-09-13 08:58 alanh + + * config/cfgroot/proxy-acl, html/cgi-bin/proxy.cgi: Fix squid acl + file problems (SF bug ID #1023131) + + (Patch from Franck) + +2004-09-12 13:53 rkerr + + * html/cgi-bin/netstatus.cgi: The net status page uses the same + lease display code as the DHCP page - fix the security issue here + too (thanks to eric for pointing this out) + +2004-09-11 13:22 rkerr + + * src/rc.d/rc.firewall: The most obvious changes from SF bug + #1015737 - these are the ones that require 0 thought and are + highly unlikely to break anything. + +2004-09-11 04:19 eoberlander + + * lfs/kbd: Reposition patch, to avoid duplication. + +2004-09-10 20:56 eoberlander + + * lfs/kbd: Fix for SF Bug 1025699. Copy patched Vietnamese font to + main system. + +2004-09-09 19:20 gespinasse + + * src/patches/eagle-usb-1.9.9-pppoa-mac.patch: eagle-usb - fix + cosmetic mac address display by pppoa + + isdn - support 'debug' option - should fix problem with + dial-on-demand and rc.connectioncheck - fix chap with 'dual + channel' (same 'name' line is missing in v1.3) + + rc.red doupdatesettings - remove inconditionnaly pppoatm and + pppoe modules as it may be supported by user-mode client this + fix a warning with atm module busy a few lines after + +2004-09-06 19:23 eoberlander + + * html/cgi-bin/credits.cgi: Add translators for Lithuanian and + Thai. + +2004-09-06 19:14 eoberlander + + * langs/lt/cgi-bin/lt.pl: Updates from Language Database. + +2004-09-05 06:18 eoberlander + + * langs/: th/cgi-bin/th.pl, list: Add Thai to web admin interface. + +2004-09-04 17:54 rkerr + + * lfs/squid: Fix for squid ntlm integer overflow DoS: + + + +2004-09-02 22:00 alanh + + * html/cgi-bin/wireless.cgi: fix typos + +2004-09-02 21:59 alanh + + * src/patches/openswan-1.0.6-numif.patch: OpenSWAN patch for number + of interfaces increased to 16 didn't work at all. + + This is needed to actually create the interfaces and destroy + them. + +2004-09-02 21:21 alanh + + * src/rc.d/rc.network: Start PCMCIA regardless. + + It won't do anything for a system that doesn't have PCMCIA anyway + as there isn't an /etc/pcmcia.conf file. + + This may resolve your problem Gilles + +2004-09-02 07:37 alanh + + * html/cgi-bin/proxy.cgi: move the old acl list out of the way + during upgrade and then rename the acl-1.4 back to acl. + + This means that people who are using squid configurations will + continue to work with the older acl list, but when they hit + 'save' the new acls will be used. + +2004-09-02 07:32 alanh + + * html/cgi-bin/proxy.cgi, lfs/configroot: The old acl list for the + proxy was being overwritten by the backup floppy. + + So copy our new acl as acl-1.4 and ensure the CGI script picks + the new one up. + +2004-09-01 10:15 alanh + + * doc/ChangeLog: update Changelog + +2004-08-31 14:38 alanh + + * lfs/net-tools: fix a dependency build problem + +2004-08-31 13:06 riddles + + * tools/mkflash/: mkflash, settings.8139: Another mkflash update + +2004-08-31 08:55 alanh + + * lfs/rrdtool: latest stable rrdtool + +2004-08-31 07:32 gespinasse + + * lfs/eagle, src/rc.d/rc.eagleusbadsl: Update eagle-usb to 1.9.9 + This version fix : - PPPoE for german as MRU was sometime not + correctly handled - remove need of smaller MRU/MTU=1492 in PPPoA + but I still need to modify IPCop settings + + rc.eagleusbadls is fixed to init the modem when the protocol was + changed This fix is big and almost all along rc.red. It remove + 'exit0' in case of success with PPPoE and dhcp to let every + doxxxdial return to where it was called from. This way, + /var/ipcop/ppp/updatesetting can be erased after the specific + script was run. + +2004-08-30 15:53 alanh + + * lfs/eagle: fix build problem on Alpha + +2004-08-30 14:54 eoberlander + + * langs/hu/install/lang_hu.c: Updates to Hungarian from Language + Database. + +2004-08-30 08:28 alanh + + * src/install+setup/install/upgrade-v12-v13.c: fix some file close + handling + +2004-08-30 06:09 riddles + + * tools/mkflash/mkflash: Link ram0 to ramdisk + +2004-08-29 21:39 gespinasse + + * src/install+setup/libsmooth/netstuff.c: Count dummy like eth or + it can't be used because setup want one more card. + +2004-08-29 16:02 gespinasse + + * lfs/net-tools, lfs/netdiag[DEAD], + src/patches/mii-diag.multi-line-string.patch[DEAD]: From now, + remove mii-diag and compile mii-tool from net-tools package Fix + net-tools compilation as using sed on config.h has no effect Only + preselected options we don't use are changed by sed (and mii-tool + added) + +2004-08-29 06:09 eoberlander + + * langs/pt/install/lang_pt.c: Additional Portugueuse phrases from + Language Database. + +2004-08-28 13:08 eoberlander + + * langs/hu/install/lang_hu.c: Corrections to Hungarian from + Language Database. + +2004-08-28 10:03 gespinasse + + * src/rc.d/rc.eagleusbadsl: Fix eagle-usb cleanup (need ifconfig + eth3 down before) When using setup and the module was still + loaded, this may solve some shift in name driver display as count + of real eth card was majored by 1 + +2004-08-27 11:24 riddles + + * tools/mkflash/mkflash: EOF + +2004-08-27 11:23 riddles + + * tools/mkflash/mkflash: mkflash fixes from Dale + +2004-08-27 09:59 alanh + + * config/grub/: grub.conf, scsigrub.conf: use savedefault + +2004-08-27 07:02 gespinasse + + * doc/ChangeLog, src/patches/amedyn-2004-06-22.patch[DEAD], + tools/gen_ChangeLog.txt: Remove amedyn patch Fix instruction to + update doc/ChangeLog Update ChangeLog + +2004-08-27 06:41 gespinasse + + * lfs/amedyn, src/rc.d/rc.amedynusbadsl: Replace old driver and + patch by updated driver (it should not change the result) Comment + the exit(s) on script until I know exactly what fail in complete + script + +2004-08-26 21:49 gespinasse + + * html/cgi-bin/logs.cgi/log.dat, src/ppp/ip-down, + src/rc.d/rc.3cp4218usbadsl, src/rc.d/rc.alcatelusb, + src/rc.d/rc.alcatelusbk, src/rc.d/rc.amedynusbadsl, + src/rc.d/rc.bewanadsl, src/rc.d/rc.conexantpciadsl, + src/rc.d/rc.conexantusbadsl, src/rc.d/rc.eagleusbadsl, + src/rc.d/rc.eciadsl, src/rc.d/rc.fritzdsl, src/rc.d/rc.isdn, + src/rc.d/rc.pulsardsl: Try to make log viewing from the web + interface more usable - fusion ppp|isdn|dhcpc into one category + 'red' - tag rc.specific scripts with 'red' Remove unused ppp + variables read in ip-down + +2004-08-26 21:05 eoberlander + + * langs/hu/install/lang_hu.c: Updates from Language Database prior + to 1.4.0rc2 + +2004-08-26 08:17 alanh + + * src/scripts/setddns.pl: Add regdish ddns service (SF RFE id + #1005328) + +2004-08-25 21:08 eoberlander + + * langs/bz/install/lang_bz.c: Updates from Language Database. + +2004-08-25 18:24 eoberlander + + * langs/bz/install/lang_bz.c: Updates from Language Database. + +2004-08-25 16:31 eoberlander + + * langs/: hu/install/lang_hu.c, bz/cgi-bin/bz.pl, + bz/install/lang_bz.c: Updates from Language Database. + +2004-08-25 14:39 riddles + + * lfs/openswan, src/misc-progs/ipsecctrl.c, + src/patches/openswan-1.0.6-numif.patch: Fix problem with Openswan + interfaces + +2004-08-25 09:40 riddles + + * langs/nl/install/lang_nl.c: Small translation fixes + +2004-08-25 08:05 alanh + + * lfs/hdparm, src/patches/hdparm.patch[DEAD]: No longer need hdparm + patch with 5.6 + +2004-08-25 07:16 eoberlander + + * html/cgi-bin/credits.cgi: Update Ander's details. + +2004-08-25 05:32 eoberlander + + * lfs/kbd: Add -f to force copy. + +2004-08-25 05:14 eoberlander + + * langs/bz/: cgi-bin/bz.pl, install/lang_bz.c: Update of Brazilian + Portuguese phrases from Language Database. + +2004-08-24 23:00 gespinasse + + * lfs/eagle, src/patches/eagle-usb-1.9.8-Makefile.patch[DEAD], + src/patches/eagle-usb-1.9.8-configure.patch[DEAD], + src/rc.d/rc.eagleusbadsl: Simplify eagle-usb compilation and + installation It should be easier now to upgrade to a next version + +2004-08-24 20:10 eoberlander + + * src/patches/viscii10-8x16-new.psfu, lfs/kbd: Add patch for + Vietnamese charset, provided by Le Dinh Long. + +2004-08-24 18:16 alanh + + * lfs/hdparm: hdparm got upgraded from 5.5 to 5.6 (and 5.5 is no + longer available) + +2004-08-24 06:52 gespinasse + + * src/rc.d/rc.pulsardsl: - I just understood lcp-max-configure=50 + is not a time but a number of attempts separated by + lcp-restart=3s - So set MAXCONFIGURE to more than 3*50 and + withdraw unnecessary pulsar sleep + +2004-08-23 23:35 alanh + + * lfs/openswan: OpenSWAN 1.0.7 + +2004-08-23 21:57 gespinasse + + * src/rc.d/rc.pulsardsl: - replace insmod with modprobe to avoid a + failure next time the script is run - add a sleep 30 to give more + time to the modem to synchronize and start a ppp connection + +2004-08-23 21:40 alanh + + * config/cfgroot/proxy-acl, html/cgi-bin/proxy.cgi: Change localnet + to greennet & bluenet to differentiate between them. + +2004-08-23 21:25 alanh + + * html/cgi-bin/ddns.cgi, src/scripts/setddns.pl: Add + freedns.afraid.org to DDNS providers (SF RFE id #1011837) + +2004-08-23 21:09 alanh + + * src/install+setup/install/config.c: Fix symlinks for raid disks + +2004-08-23 09:28 eoberlander + + * langs/: bz/cgi-bin/bz.pl, es/cgi-bin/es.pl, ro/cgi-bin/ro.pl, + tr/cgi-bin/tr.pl: Remove redundant phrases from Language + Database. + +2004-08-23 09:25 eoberlander + + * langs/nl/: cgi-bin/nl.pl, install/lang_nl.c: Additional Dutch + phrases from Language Database. + +2004-08-23 07:22 eoberlander + + * langs/it/: cgi-bin/it.pl, install/lang_it.c: Additional Italian + phrases from Language Database. + +2004-08-22 22:01 alanh + + * src/misc-progs/setaliases.c: Fix arping + +2004-08-22 19:16 gespinasse + + * src/rc.d/rc.eciadsl: - fix 'Invalid address' message during + cleanup when GATEWAY is empty - wait rc.eciadsl end before to + declare sync timeout - add cleanup/usb_reset in eciadsl driver + like in others + +2004-08-21 23:02 gespinasse + + * lfs/eciadsl, src/patches/eciadsl-usermode-0.9-load1.patch: Fix + eci-load1 caused warnings '/proc/bus/usb/001/xxx: No such file or + directory' by a sleep(2) instead of (1) + +2004-08-21 06:37 eoberlander + + * langs/fr/install/lang_fr.c: Corrections to French from Language + Database. + +2004-08-20 16:37 alanh + + * lfs/perl: whoops, wrong position + +2004-08-20 16:36 alanh + + * lfs/perl: make depend for perl + +2004-08-18 22:03 alanh + + * lfs/syslinux: upgrade syslinux to 2.11 which fixes the image + loading problem in 2.10 + +2004-08-18 20:20 alanh + + * html/cgi-bin/ddns.cgi: Commit fix from Franck for SF bug id + #997631 + +2004-08-18 19:49 alanh + + * lfs/gnupg: upgrade gnupg to 1.2.5 + +2004-08-18 12:59 alanh + + * lfs/pulsar: update the pulsar driver + +2004-08-17 15:03 alanh + + * config/kernel/kernel.config.i386.smp, lfs/scsi.img, + src/install+setup/install/probescsi.sh: We were trying to support + the cciss and DAC960 drivers but didn't have support in the + installer for them. Fix that. + + Support the ATARAID controllers too. + +2004-08-17 07:40 alanh + + * lfs/openssl: Fix the build problem with OpenSSL + +2004-08-16 10:34 alanh + + * src/patches/make_devices.patch: Another bug fix for SF bug id + #925576 + +2004-08-16 09:59 alanh + + * src/scripts/makegraphs: Fix the disk graph when multiple devices + show up in /proc/stat + +2004-08-13 16:15 alanh + + * src/misc-progs/ipsecctrl.c: Fix SF Bug ID #1008771 which didn't + stop IPSec when disabling it. + +2004-08-13 06:28 gespinasse + + * src/patches/make_devices.patch: Add ttyS4/COM5 + +2004-08-12 23:40 gespinasse + + * doc/ChangeLog, lfs/cdrom, tools/cvs2cl.pl, + tools/gen_ChangeLog.txt: Add an automatic Changelog generator + Instructions for use in tools directory doc/Changelog will be + copied in /doc directory from the ISO + +2004-08-12 22:48 gespinasse + + * config/etc/syslog.conf, html/cgi-bin/logs.cgi/log.dat: - add + pppoeci in ppp section - create a new section for dhcp client - + mover dhcpc debug messages from /var/log/dhcpcd.log to + /var/log/messages + +2004-08-12 14:20 alanh + + * src/patches/linux-2.4.27-speedtch.patch[DEAD]: remove + +2004-08-12 14:16 alanh + + * lfs/perl, config/kernel/kernel.config.i386.installer, + src/patches/pomng.fix, config/kernel/kernel.config.i386.smp: A + few updates in this one... + + 1. Upgrade the kernel to 2.4.27 and make the approprite changes + to patch-o-matic-ng until they update it. + + 2. Upgrade perl to 5.8.5 - bug fixes + + 3. Add a new feature which allows the user to switch out to VT3 + and fdisk the harddrive for themselves (not yet complete, but + nearly). + + 4. Remove ext3 support from the installer kernel, and use ext2 to + mount the hard disk and install the system. Gives us back + around 40k on the boot disk. + +2004-08-12 14:09 alanh + + * src/install+setup/install/upgrade-v12-v13.c: ensure file + descriptors are closed + +2004-08-12 14:04 alanh + + * src/patches/busybox-0.60.5-config.patch: Don't need BB_SYNC + anymore + +2004-08-12 07:40 alanh + + * src/patches/make_devices.patch: Fix chgrp + +2004-08-11 08:03 alanh + + * lfs/shadow: alternate back to the other shadow site, as our + primary seems down + +2004-08-11 07:37 alanh + + * lfs/logrotate: logrotate has moved to 3.7 + +2004-08-11 04:57 gespinasse + + * lfs/capi4k-utils: Upgrade to capi4k-utils-2004-08-10 + +2004-08-10 20:27 gespinasse + + * lfs/pptpclient: Upgrade to pptp-1.5.0 + +2004-08-10 15:21 eoberlander + + * html/cgi-bin/gui.cgi: Another go at fixing bug where some fields + are blank if the phrase has not been translated. Force reload of + English before loading translated language. + +2004-08-10 12:54 alanh + + * html/cgi-bin/ddns.cgi, src/scripts/setddns.pl: Allow + dyndns-custom to work without a HOSTNAME (SF bug id #1001411) + +2004-08-10 08:06 alanh + + * src/install+setup/install/grubbatch: Fixes for SF bug id #925576 + +2004-08-10 08:05 alanh + + * src/patches/make_devices.patch: Fixes for SF bug id #925576. + +2004-08-09 08:03 eoberlander + + * langs/lt/cgi-bin/lt.pl: Updates from Language Database. + +2004-08-08 21:22 eoberlander + + * html/cgi-bin/wireless.cgi: Add Tom Dawes-Gamble's hostname patch, + and tweak some of the table formatting. + +2004-08-08 18:35 alanh + + * lfs/syslinux: drop back again, argh, to syslinux 2.08 + +2004-08-08 18:23 alanh + + * src/misc-progs/setaliases.c: fix arguments to arping + +2004-08-08 14:45 eoberlander + + * html/cgi-bin/gui.cgi: Make display of hostname in window title + selectable from GUI Settings page. Defaults to off. + +2004-08-06 07:58 alanh + + * lfs/fcron: drop back to the stable fcron 2.0.1 instead of the + development 2.9.4 which fixes pipe_pid_fd problems (because 2.0.1 + doesn't use it) + +2004-08-06 05:35 gespinasse + + * html/cgi-bin/logs.cgi/log.dat: Follow usb and pppoa|pppoa3 in PPP + logs + +2004-08-04 21:57 eoberlander + + * langs/vi/install/lang_vi.c: Add VI to Installer. + +2004-08-04 21:54 eoberlander + + * lfs/kbd, src/install+setup/libsmooth/main.c, + src/install+setup/setup/main.c: Add Vietnamese to Installer. More + work needs to be done to remap charset... + +2004-08-03 21:28 alanh + + * html/cgi-bin/dmzholes.cgi: When disabling a dmz hole, ensure we + write the src and dst net's and the remark. + +2004-08-02 08:34 alanh + + * lfs/initrd, lfs/syslinux, langs/en/install/lang_en.c, + src/install+setup/install/grubbatch: Remove the syslinux mbr.bin, + and install GRUB onto the partition and MBR. + + Update the congratulations message to ask the user to run FDISK + /MBR if the system still fails to boot correctly. + +2004-08-01 20:36 eoberlander + + * langs/hu/install/lang_hu.c: Updates from Language Database. + +2004-08-01 09:34 eoberlander + + * src/rc.d/rc.sysinit: Use lat1-16 console charset if language is + Brazilian Portuguese. + +2004-07-31 23:05 eoberlander + + * langs/pl/install/lang_pl.c: Bugfix for crash inPolish language + setup after setting 'root' password. Removed '%s' from log + message text string which caused segfault. + +2004-07-31 07:12 eoberlander + + * langs/pl/install/lang_pl.c: Add phrase from database. + +2004-07-30 16:12 alanh + + * src/scripts/setddns.pl: Decrement $lines when a DDNS service is + disabled. + + This allows the service to be updated correctly. + + Should fix SF bug #970704 + +2004-07-30 10:58 riddles + + * tools/mkflash/mkflash: Loopback/ram already created by + make_devices + +2004-07-29 20:05 eoberlander + + * langs/pl/install/lang_pl.c: Fix text, using update from Language + Database. + +2004-07-29 19:34 alanh + + * langs/pl/install/lang_pl.c: Ok, put it back to the way Eric had + it... + + There's definately something wrong with the admi... word + +2004-07-29 19:33 eoberlander + + * src/rc.d/rc.sysinit: Add Polish. + +2004-07-29 19:30 alanh + + * langs/pl/install/lang_pl.c: really fix it + +2004-07-29 19:29 alanh + + * langs/pl/install/lang_pl.c: fix that ADMIN text + +2004-07-29 19:27 eoberlander + + * langs/pl/install/lang_pl.c: Add Polish to Installer. + +2004-07-29 19:23 eoberlander + + * src/install+setup/: libsmooth/main.c, setup/main.c: Add Polish to + Installer. + +2004-07-29 18:03 eoberlander + + * langs/: bz/cgi-bin/bz.pl, es/cgi-bin/es.pl, it/cgi-bin/it.pl, + it/install/lang_it.c, nl/cgi-bin/nl.pl, pt/install/lang_pt.c, + ro/cgi-bin/ro.pl, ru/cgi-bin/ru.pl, tr/cgi-bin/tr.pl: Update all + files prior to next beta issue. + +2004-07-29 04:14 gespinasse + + * lfs/dhcp: Upgrade dhcp (bugfix with subclasses), fix upgrade with + PPPoE like with alcatelusb + +2004-07-28 21:08 alanh + + * config/kernel/kernel.config.i386.installer: reverse this, it + breaks the installer image + +2004-07-28 16:46 alanh + + * lfs/syslinux: drop syslinux back to 2.09 to avoid initrd problems + +2004-07-28 14:56 alanh + + * config/grub/: grub.conf, scsigrub.conf: Whoops, remove some local + changes + +2004-07-28 14:55 alanh + + * config/grub/: grub.conf, scsigrub.conf: Add options for enabling + ACPI at boot time + +2004-07-28 14:30 alanh + + * lfs/: initrd, syslinux: force the copy + +2004-07-28 14:29 alanh + + * lfs/: initrd, syslinux: Use SysLinux's mbr.bin to re-create a new + Master Boot Record. This should really fix the problems we've + been having, but not tested yet, as I'm still rebuilding from + scratch - so someone might beat me to it. + +2004-07-28 11:32 alanh + + * config/kernel/kernel.config.i386.installer: Disable a few more + things on the install kernel and a cosmetic change to the + installer + +2004-07-28 11:22 alanh + + * src/misc-progs/setaliases.c: arping is in /usr/sbin + +2004-07-28 08:39 gespinasse + + * src/ppp/ip-down: Better sound for your ears + +2004-07-27 22:35 gespinasse + + * lfs/amedyn, src/patches/amedyn-2004-06-22.patch: Fix old driver + with sync and atm buffer size patch + +2004-07-27 18:43 gespinasse + + * html/cgi-bin/upload.cgi, src/rc.d/rc.alcatelusb, + src/rc.d/rc.alcatelusbk: Concatenate previous boot and firmware + at install (thank alan) , suppress 'checked' for speedtouch since + no choice is on interface + +2004-07-27 18:10 alanh + + * lfs/amedyn: fallback to the previous driver as this new one seems + to have disappeared + +2004-07-27 17:13 eoberlander + + * langs/it/cgi-bin/it.pl: Updates from Language Database, including + bugfix for reset button text. + +2004-07-27 15:26 gespinasse + + * html/html/images/line.gif[DEAD]: Remove line.gif + +2004-07-27 15:20 gespinasse + + * html/cgi-bin/upload.cgi, lfs/speedtouch, + src/install+setup/install/upgrade-v130-v140.c, + src/rc.d/rc.alcatelusb, src/rc.d/rc.alcatelusbk: Fix some minor + typo and xhtml compliance issues in pppsetup.cgi, remove line.gif + and use hr instead, shift eagle-usb.conf writing inside + updatesettings, go back to one file firmware upload for + speedtouch usb (but code to concatenate bootloader and firmware + at install is not written yet, so another firmware upload is + necessary at this time), shift usage from PPPoE to PPPoE plugin, + from speedtouch user mode to speedtouch kernel mode at install + +2004-07-27 12:17 alanh + + * lfs/busybox, src/patches/busybox-0.60.5-config.patch: Do a sync + after zero'ing the partition table + +2004-07-27 12:13 alanh + + * src/patches/make_devices.patch: Check /dev/ida0 for the Compaq + Array support + +2004-07-27 10:40 alanh + + * config/kernel/syslinux.cfg: Syslinux 2.10 exposed a problem in + our syslinux.cfg for the boot floppy in the default kernel image. + We should be using APPEND. This fixes it. + +2004-07-27 08:15 eoberlander + + * langs/la/install/lang_la.c: Updates from Language Database. + +2004-07-24 23:27 gespinasse + + * lfs/3c5x9setup: Add 3c5x9setup to allow this card to be set under + linux + +2004-07-24 22:45 gespinasse + + * lfs/shadow: go back to the previous site since the alternative is + not available + +2004-07-24 22:33 gespinasse + + * lfs/file: only available as a tar.gz now + +2004-07-23 19:57 alanh + + * src/install+setup/install/grubbatch: copy stage* files in + grubbatch (Bug 996155) + +2004-07-23 07:51 eoberlander + + * langs/no/install/lang_no.c: Updates from Language Database. + +2004-07-22 10:53 alanh + + * html/cgi-bin/dmzholes.cgi: fix a typo + +2004-07-20 14:30 eoberlander + + * html/cgi-bin/ddns.cgi: Added tzo.com + +2004-07-19 19:42 alanh + + * src/install+setup/libsmooth/libsmooth.h: fix warning + +2004-07-19 17:37 alanh + + * lfs/grub, src/install+setup/install/grubbatch, + src/patches/grub-0.94-i2o.patch: Make a change to the way GRUB is + installed. We used to install the boot record into the MBR. But + now, because of potential problems with the way geometry is + obtained from buggy BIOS' it's easier for us to install the boot + record into the first partition. This way the BIOS will boot the + active one. Fixes SF bug ID Â#967175. + + Also, add i2o support to GRUB - probably won't work with I2O + disks yet as we need a modified installer. + +2004-07-19 10:06 alanh + + * lfs/: Config, coreutils, file, gcc: gaosu.rave.org seems to have + deleted their LFS directory, so switch to one of the alternative + mirrors + +2004-07-18 20:47 eoberlander + + * html/cgi-bin/gui.cgi: Fix for SF Bug 992612, suggested by + Franck78. + +2004-07-18 13:20 eoberlander + + * langs/de/install/lang_de.c: Update from Language Database. + +2004-07-17 17:04 alanh + + * lfs/syslinux: upgrade syslinux to 2.10 + +2004-07-17 08:04 eoberlander + + * langs/sv/install/lang_sv.c: Updates from Language Database. + +2004-07-16 11:45 alanh + + * lfs/squid: Bug fixes for SQUID + +2004-07-16 06:34 eoberlander + + * langs/list: Update Vietnamese. + +2004-07-15 19:43 alanh + + * lfs/perl: Fix build problems with new patch-o-matic-ng system + which now needs much more of perl, so build it all in that pass. + + Also, fix openswan which modifies the search path when patching + the kernel. + +2004-07-15 13:42 alanh + + * lfs/speedtouch: drop back to 1.2 for 1.4.0b6 + +2004-07-15 13:32 alanh + + * src/rc.d/rc.sysinit: [no log message] + +2004-07-15 13:24 eoberlander + + * html/cgi-bin/credits.cgi: Correction to Le Dinh Long's name. + +2004-07-15 12:33 alanh + + * lfs/iptables, config/kernel/kernel.config.i386.installer, + config/kernel/kernel.config.i386.smp, + src/patches/patch-o-matic-20031219-connlimit.patch[DEAD]: move + upto iptables 1.2.11 and patch-o-matic-ng-20040621 + + Also, fix a problem that caused the previous beta to be built + with older OpenSWAN releases. + +2004-07-15 12:30 alanh + + * lfs/eagle: add new eagle file to ./make.sh check stage + +2004-07-15 11:33 gespinasse + + * lfs/eagle, src/rc.d/rc.eagleusbadsl: Update dsp_code from windows + driver to support new sagem Fast800 E2L modem, withdraw usr + dsp_codes since those modems can use eagle dsp_code, so we can + spare some space + +2004-07-14 16:13 alanh + + * config/kernel/kernel.config.i386.installer, + config/kernel/syslinux.cfg, lfs/boot.img, lfs/cdrom: Build a + trimmer version of the linux kernel for the installation routine. + + Currently this is just the same as the standard kernel but + without ACPI support. + +2004-07-13 13:54 eoberlander + + * langs/: lt/cgi-bin/lt.pl, list: Add Lithuanian to webgui. + +2004-07-13 12:13 alanh + + * src/patches/perl.patch: fix patch header + +2004-07-13 12:06 alanh + + * src/patches/perl.patch: found the problem. + + The new DESTROY{} function was deleting our file before we'd + dealt with it, and was really done for Win32 platforms. + + We'll revert back to the 5.8.2 functionality and let perl clean + up temporary files through it's garbage collection routines. + +2004-07-13 11:22 alanh + + * lfs/perl, src/patches/perl.patch: This fixes SF bug id 988856 for + now. + + It basically reverts the CGI.pm from version 3.04 (in perl 5.8.4) + to 3.00 (in perl 5.8.2) + + This fixes the upload problems, but it'd be nice to track this + patch a little closer and find out what broke for us and either + fix our CGI's or fix perl and send in a patch if we feel it's + broken. + +2004-07-13 06:42 gespinasse + + * lfs/pulsar: Fix pulsar missing lib (was inside the package) + +2004-07-12 21:36 alanh + + * lfs/: Digest, Digest-SHA1, GD, Net-DNS: a few bug fixes for the + perl tools + +2004-07-11 21:41 alanh + + * config/grub/grub.conf, config/grub/scsigrub.conf, + src/rc.d/rc.sysinit, config/kernel/kernel.config.i386.smp, + config/kernel/syslinux.cfg: add ACPI support. + + acpi=off is passed to the kernel by default, even for + installation. + + Remove 'acpi=off' from GRUB config to turn it on. + +2004-07-11 12:20 alanh + + * src/rc.d/rc.netaddress.up: DNSMASQ and IPSEC should be started + before rc.red as DNSMASQ would be restarted with invalid + commandline flags for the connection and DNS would fail. For + IPSec it will restart when/if rc.red is connected. + +2004-07-11 11:10 gespinasse + + * lfs/netdiag: Forgotten the most important part, it may look + strange but I did not find another way because sources were + updated after netdiag-2.4.tar.gz (no more available on scyld ftp) + was done + +2004-07-10 15:58 gespinasse + + * src/patches/mii-diag.multi-line-string.patch: Add mii-diag to + allow ethernet link speed setup on most of pci cards when + autonegociation had failed + +2004-07-10 09:17 gespinasse + + * src/rc.d/rc.connectioncheck: Fix wrong timeout count seen after + adsl sync time + +2004-07-10 06:44 gespinasse + + * lfs/pulsar, src/patches/pulsar.patch[DEAD]: Update + +2004-07-09 21:27 gespinasse + + * src/: ppp/ip-down, rc.d/rc.connectioncheck: Let the music play in + ip-down and wait pppdexit before to restart again + +2004-07-09 20:03 alanh + + * lfs/libsafe: just make libsafe and not the exploits directory + +2004-07-09 19:08 alanh + + * src/patches/grub-0.93-graphics.patch: missed a grub 0.95 fix + +2004-07-09 19:08 alanh + + * lfs/speedtouch: upgrade speedtouch to get new modem_run command + +2004-07-09 19:05 alanh + + * lfs/grub, src/patches/grub-0.90-staticcurses.patch[DEAD]: upgrade + grub to 0.95 + +2004-07-08 22:22 gespinasse + + * src/: ppp/ip-down, rc.d/rc.connectioncheck: Don't sleep after + starting rc.connectioncheck to avoid 'Can't start RED... on quick + machines, so play sounds on rc.connectioncheck + +2004-07-08 15:05 eoberlander + + * langs/de/install/lang_de.c: Updates from Language Database. + +2004-07-07 14:36 eoberlander + + * html/cgi-bin/credits.cgi: Add Rodik to Russian section. + +2004-07-06 10:08 alanh + + * src/patches/libsafe-alpha.diff, + src/patches/libsafe-functioncaching.diff, lfs/libsafe: web site + seems down for libsafe, so move to debian to grab it. + + Also pull in a couple of patches to libsafe, and now enable it on + Alpha builds. + +2004-07-05 20:16 eoberlander + + * langs/fr/install/lang_fr.c: Updates from Language Database. + +2004-07-05 10:56 alanh + + * lfs/glibc: remove -j 3 on glibc as it seems to intermittently + cause troubles + +2004-07-04 20:01 alanh + + * lfs/: bison, flex, m4: use EXTRA_LDFLAGS + +2004-07-04 19:52 alanh + + * lfs/: bison, flex, m4: build m4,flex and bison with LFS_PASS=1 + and LFS_PASS=2 for new binutils + +2004-07-03 09:43 gespinasse + + * src/rc.d/rc.connectioncheck: Support HOLDOFF,MAXRETRIES and + BACKUPPROFILE from pppsetup.cgi + +2004-07-03 05:56 gespinasse + + * lfs/amedyn: This version should fix all know amedyn problems + +2004-07-01 22:31 alanh + + * lfs/driver.img, src/patches/linux-2.4.26-proc-stat.patch: fixes + for the Alpha build to work again + +2004-07-01 22:24 alanh + + * lfs/binutils, lfs/bison, lfs/flex, lfs/m4, + src/uClibc/make/binutils.mk, + src/uClibc/sources/binutils-001-debian.patch: Upgrade binutils to + 2.15.90.0.3 which fixes two things.... + + * as-needed etc works now with later gcc's - noted on Mandrake + platforms * fixes later gcc's assembler output on Alpha's + + And update uClibc to use this later package too. + +2004-07-01 18:59 riddles + + * html/html/include/domMenu.js: Fix Konqueror and Safari menus + +2004-07-01 15:17 alanh + + * src/patches/linux-2.4.26-scsi.patch: Fix libata compile on Alpha + +2004-07-01 09:53 alanh + + * config/kernel/kernel.config.alpha: Bring Alpha kernel + configuration up-to-date + +2004-07-01 05:37 eoberlander + + * langs/vi/cgi-bin/vi.pl: Additions from Language Database. + +2004-07-01 05:36 eoberlander + + * html/cgi-bin/credits.cgi: Update Kai's address. + +2004-06-30 20:14 alanh + + * src/install+setup/install/main.c: only mount swap if there is one + +2004-06-30 14:08 eoberlander + + * langs/fi/: cgi-bin/fi.pl, install/lang_fi.c: Updates from + Language Database. + +2004-06-29 17:48 alanh + + * lfs/openswan: openswan 1.0.6 + +2004-06-28 10:38 eoberlander + + * langs/vi/cgi-bin/vi.pl: Additions from Language Database. + +2004-06-26 16:46 gespinasse + + * src/rc.d/rc.eciadsl: Minor cleanup + +2004-06-26 16:45 gespinasse + + * src/rc.d/rc.connectioncheck: Fix waiting pppd start and wait a + maximum of time + +2004-06-26 13:24 eoberlander + + * langs/vi/cgi-bin/vi.pl: Fix typo in HTML. + +2004-06-26 13:17 eoberlander + + * langs/vi/cgi-bin/vi.pl: Additions from Language Database. + +2004-06-25 21:24 alanh + + * lfs/openswan: openswan 1.0.5 + +2004-06-25 14:56 eoberlander + + * langs/no/install/lang_no.c: Updates from Language Database. + +2004-06-25 13:42 alanh + + * lfs/logwatch: logwatch from 5.1 to 5.2.2 + +2004-06-24 11:23 eoberlander + + * langs/vi/cgi-bin/vi.pl: Additions from Language Database. + +2004-06-23 13:59 riddles + + * src/install+setup/install/main.c: Include libata in initrd + +2004-06-23 13:38 riddles + + * config/kernel/kernel.config.alpha, + config/kernel/kernel.config.i386, + config/kernel/kernel.config.i386.smp, + src/install+setup/install/probescsi.sh: Libata support + +2004-06-22 10:58 eoberlander + + * langs/el/install/lang_el.c: Updates from Language Database. + +2004-06-21 19:15 alanh + + * src/rc.d/rc.connectioncheck: Don't need to background it + +2004-06-21 18:49 alanh + + * lfs/libpcap, src/patches/libpcap-0.8.3-ppp.patch: Fix + inbound/outbound filter processing in libpcap for PPP linktypes + +2004-06-21 18:21 gespinasse + + * src/rc.d/rc.connectioncheck: Better behavior with long HOLDOFF + +2004-06-21 12:38 eoberlander + + * langs/da/install/lang_da.c: Updates from Language Database. + +2004-06-21 08:14 riddles + + * src/patches/make_devices.patch: Fix tty12 + +2004-06-21 05:00 gespinasse + + * src/: ppp/ip-down, rc.d/rc.connectioncheck: Reconnection without + 'persist' option + +2004-06-20 20:25 eoberlander + + * lfs/sysklogd: Fix bracket typo. + +2004-06-20 16:48 eoberlander + + * langs/de/install/lang_de.c: Updates from Language Database. + +2004-06-20 14:57 rkerr + + * config/etc/group, config/etc/logrotate.conf, config/etc/passwd, + lfs/logrotate, lfs/openssh, lfs/stage2, lfs/sysklogd, + src/install+setup/install/upgrade-v130-v140.c, + src/patches/sysklogd-1.3-31-rh-ksyslog-nul.diff, + src/patches/sysklogd-1.4.1-caen-owl-klogd-drop-root.diff, + src/patches/sysklogd-1.4.1-caen-owl-syslogd-bind.diff, + src/patches/sysklogd-1.4.1-caen-owl-syslogd-drop-root.diff, + src/patches/sysklogd-1.4.1-owl-syslogd-crunch_list.diff: * Swap + from using the CAEN based drop root patch in LFS to the improved + Owl version * Add syslogd and klogd users and groups to + /etc/passwd and /etc/group * Make the installer add these users + if importing old config * Modify rc.sysinit to get klogd and + syslogd to drop root and klogd to chroot * Modify logrotate so + files get recreated with root.syslogd ownership and 664 + permissions after rotation * Change permissions on /var/empty to + 711 and change sshd to use /var/empty instead of + /var/empty/sshd (sharing /var/empty is safe so long as none of + the processes chrooted there can also write there) * Apply the + following bug fixes: - sysklogd-1.3-31-rh-ksyslog-nul.diff + Fixes a single byte buffer overflow in klogd - + sysklogd-1.4.1-owl-syslogd-crunch_list.diff Fixes buffer + overflow in handling of -l and -s options in syslogd + +2004-06-20 13:39 alanh + + * lfs/uClibc: use URL_GNU + +2004-06-20 13:32 alanh + + * lfs/: libpcap, ppp: pcap-int.h is included in ppp-2.4.2 which + matches that of libpcap 0.7.x, but the structure changed for + libpcap 0.8.3 and it doesn't get installed. So pppd ends up + getting the wrong information. + + So, when installing libpcap, we also install pcap-int.h and then + when building ppp we remove it's provided version to force it to + use the newly installed one. + + This fixes the 'inbound/outbound not supported on linktype 0' + error. + +2004-06-20 08:12 eoberlander + + * langs/tr/cgi-bin/tr.pl: Additions from Language Database. + +2004-06-20 07:01 gespinasse + + * lfs/eagle, src/patches/eagle-usb-1.9.8-Makefile.patch, + src/patches/eagle-usb-1.9.8-configure.patch, + src/rc.d/rc.eagleusbadsl: Update new version eagle-usb, fix SMP + compilation (untested), enhanced script because of no 'persist' + use + +2004-06-19 19:52 eoberlander + + * langs/cs/install/lang_cs.c: Updates from Language Database. + +2004-06-19 19:37 alanh + + * lfs/glibc: add AUTOCONF=no to make install + +2004-06-19 19:32 alanh + + * lfs/rp-pppoe: rp-pppoe moved location + +2004-06-17 12:54 eoberlander + + * langs/: bz/install/lang_bz.c, cs/install/lang_cs.c, + da/install/lang_da.c, de/install/lang_de.c, el/install/lang_el.c, + es/install/lang_es.c, fi/install/lang_fi.c, fr/install/lang_fr.c, + hu/install/lang_hu.c, it/install/lang_it.c, la/install/lang_la.c, + nl/install/lang_nl.c, no/install/lang_no.c, pt/install/lang_pt.c, + sv/install/lang_sv.c, tr/install/lang_tr.c: Add new Installer + string from Language Database. + +2004-06-17 11:09 riddles + + * langs/en/install/lang_en.c, src/install+setup/install/main.c: + Display message when building INITRD, fix for bug 971723 + +2004-06-17 11:02 riddles + + * src/install+setup/install/main.c: Fix typo + +2004-06-17 09:35 riddles + + * src/install+setup/install/main.c: Finetune partitioning + +2004-06-15 06:32 gespinasse + + * lfs/capi4k-utils: Update new version + +2004-06-14 10:38 eoberlander + + * langs/fi/cgi-bin/fi.pl: Additions from Language Database. + +2004-06-13 22:03 alanh + + * src/patches/make_devices.patch: fix filename + +2004-06-13 21:57 alanh + + * src/patches/make_devices.patch: more mknod's from Bob Grant + +2004-06-13 16:25 rkerr + + * src/install+setup/libsmooth/: libsmooth.h, netstuff.c: Attach a + filter to the IP and netmask entry options to only accept dots + and numbers. This should fix the problem described by darren + where a space on the end of the IP caused hard to diagnose + problems later on. It would probably be nice to implement the + same filter for the DNS and gateway settings but I can't find + good enough documentation of newtWinEntries to work out how to do + this. + +2004-06-13 07:47 eoberlander + + * langs/es/cgi-bin/es.pl: Updates from Language Database. + +2004-06-12 13:37 eoberlander + + * html/cgi-bin/hosts.cgi: Change caption in hosts.cgi + +2004-06-11 18:32 alanh + + * lfs/uClibc: need gcc-3.3.1 for uClibc for now (may fix to support + 3.3.3 but not now) + +2004-06-11 11:55 alanh + + * lfs/bzip2: add use_mktemp patch to bzip2 + +2004-06-11 10:19 alanh + + * lfs/python: bug fix update for 2.3.3->2.3.4 + +2004-06-11 08:20 alanh + + * lfs/man: update so prefetch and check work correctly + +2004-06-11 05:29 eoberlander + + * lfs/man: Update location for patches and include increment to + filenames. + +2004-06-10 22:55 alanh + + * lfs/scsi.img, config/kernel/kernel.config.alpha, + config/kernel/kernel.config.i386, + config/kernel/kernel.config.i386.smp, + src/install+setup/install/probescsi.sh: Support the following new + disk controllers + + Compaq 5xxx array controllers Compaq SMART controllers Mylex + DAC960 controllers + + (not tested, but should work) (This will fix SF bug id #925576, + once the reporter can install 1.4b5) + +2004-06-10 21:12 alanh + + * src/rc.d/rc.connectioncheck: We don't need these sleeps, we spin + in a while loop waiting for PPP to shutdown anyway. + +2004-06-10 20:30 gespinasse + + * lfs/expect: Wrong fix, this one should be better + +2004-06-10 20:22 gespinasse + + * lfs/expect: Fix expect typo + +2004-06-10 18:33 alanh + + * src/rc.d/rc.netaddress.up: fix problem when AUTOCONNECT is "" + +2004-06-10 13:30 alanh + + * lfs/initrd: use new make_devices + +2004-06-10 11:11 alanh + + * lfs/zlib: fix typo + +2004-06-10 10:25 alanh + + * lfs/mktemp: fix mktemp + +2004-06-10 09:46 alanh + + * lfs/gawk: that gawk patch is in patches now + +2004-06-10 09:38 alanh + + * lfs/gawk: more tweaks for check/prefetch to gawk + +2004-06-10 09:25 alanh + + * lfs/zlib: zlib from 1.1.4 to 1.2.1 + +2004-06-10 09:25 alanh + + * lfs/util-linux: util-linux from 2.12 to 2.12a + +2004-06-10 09:25 alanh + + * lfs/texinfo: texinfo from 4.6 to 4.7 + +2004-06-10 09:24 alanh + + * lfs/tcl: tcl from 8.4.4 to 8.4.6 + +2004-06-10 09:24 alanh + + * lfs/sysklogd: fix up sysklogd and apply a new security patch + which allows both sysklogd and klogd to drop root privileges and + start as a user. + + Robert - Can you look into fixing the rc.sysinit script for this + ?? + +2004-06-10 09:23 alanh + + * lfs/sed: sed from 4.0.7 to 4.0.9 + +2004-06-10 09:22 alanh + + * lfs/rrdtool: rrdtool from 1.0.46 to 1.0.48 + +2004-06-10 09:22 alanh + + * lfs/psmisc: psmisc from 21.3 to 21.4 + +2004-06-10 09:22 alanh + + * lfs/procps: procps from 3.1.15 to 3.2.1 + +2004-06-10 09:21 alanh + + * lfs/perl: perl from 5.8.2 to 5.8.4 + +2004-06-10 09:21 alanh + + * lfs/ncurses: ncurses from 5.4 to 5.5 + +2004-06-10 09:20 alanh + + * lfs/mtools: update location of mtools + +2004-06-10 09:20 alanh + + * lfs/man-pages: man-pages from 1.60 to 1.66 + +2004-06-10 09:19 alanh + + * lfs/makedev, src/patches/make_devices.patch: Switch from MAKEDEV + to make_devices. + + This may need some more work, as a lot of the devices are no + longer created and we have to manually patch this file and then + update the patch in src/patches. + +2004-06-10 09:18 alanh + + * lfs/libtool: libtool from 1.5 to 1.5.6 + +2004-06-10 09:18 alanh + + * lfs/isdn4k-utils, lfs/libpcap, lfs/ppp, lfs/tcpdump, + src/patches/libpcap-0.7.2-shared.patch[DEAD], + src/patches/libpcap-0.8.3-shared.patch, + src/patches/tcpdump-3.7.2-CAN-2003-0989.patch[DEAD], + src/patches/tcpdump-3.7.2-CAN-2004-01834.patch[DEAD]: upgrade + libpcap from 0.7.2 to 0.8.3 upgrade tcpdump from 3.7.2 to 3.8.3 + and fix ppp/isdn4k-utils for new headers + +2004-06-10 09:16 alanh + + * lfs/less: less from 381 to 382 + +2004-06-10 09:16 alanh + + * lfs/kbd: kbd from 1.08 to 1.12 + +2004-06-10 09:16 alanh + + * lfs/hdparm, src/patches/hdparm.patch: hdparm from 5.4 to 5.5 + +2004-06-10 09:15 alanh + + * lfs/grub, src/patches/grub-0.90-addsyncs.patch[DEAD], + src/patches/grub-0.90-install.in.patch[DEAD], + src/patches/grub-0.90-installcopyonly.patch[DEAD], + src/patches/grub-0.90-staticcurses.patch, + src/patches/grub-0.92-automake16.patch[DEAD], + src/patches/grub-0.92-hammer.patch[DEAD], + src/patches/grub-0.93-buggybios.patch[DEAD], + src/patches/grub-0.93-graphics.patch, + src/patches/grub-0.93-largedisk.patch[DEAD]: grub from 0.93 to + 0.94 + +2004-06-10 09:13 alanh + + * lfs/glibc: glibc from 2.3.2 to 2.3.3 + +2004-06-10 09:13 alanh + + * lfs/gettext: gettext from 0.12.1 to 0.14.1 + +2004-06-10 09:12 alanh + + * lfs/gcc-2: fixes to gcc 2.95.3 + +2004-06-10 09:11 alanh + + * lfs/gcc: gcc from 3.3.1 to 3.3.3 + +2004-06-10 09:11 alanh + + * lfs/file: file from 4.04 to 4.09 + +2004-06-10 09:10 alanh + + * lfs/expect: expect from 5.39.0 to 5.41.0 + +2004-06-10 09:10 alanh + + * lfs/e2fsprogs, src/patches/e2fsprogs-1.34-install.patch[DEAD], + src/patches/e2fsprogs-1.35-install.patch: e2fsprogs from 1.34 to + 1.35 + +2004-06-10 09:09 alanh + + * lfs/coreutils: coreutils from 5.0 to 5.2.1 + +2004-06-10 09:09 alanh + + * lfs/automake: automake from 1.7.6 to 1.8.4 + +2004-06-10 09:09 alanh + + * lfs/autoconf: autoconf from 2.57 to 2.59 + +2004-06-10 09:08 alanh + + * lfs/: iana-etc, lfs-utils[DEAD], mktemp: lfs-utils no longer + exists and now it's mktemp & iana-etc + +2004-06-10 09:08 alanh + + * lfs/Config: Switch to LFS 5.1 (which links to 5.1.1) + +2004-06-10 09:07 alanh + + * lfs/gawk: fix gawk + +2004-06-09 23:00 alanh + + * lfs/ipac-ng, config/ipac-ng/ipac.conf, config/ipac-ng/rules.conf, + src/rc.d/helper/writeipac.pl: upgrade ipac-ng to 1.28 which has + several bug fixes and reduces the memory requirements for + fetchipac. + +2004-06-09 13:38 alanh + + * src/patches/linux-2.4.26-proc-stat.patch: Fix bug #967044 (no + disk graphs for root on /dev/hdc,hdd or SCSI disks) + +2004-06-09 13:34 alanh + + * src/rc.d/rc.netaddress.up: Fix Gilles last commit, in which we + actually force AUTOCONNECT=on when we detect a DHCP/STATIC RED + interface now, so we only need to test for the AUTOCONNECT + option. + +2004-06-09 09:50 alanh + + * lfs/grub, src/patches/grub-0.93-gateA20.patch[DEAD]: grr, this is + actually already handled by the buggybios patch... + +2004-06-09 09:42 alanh + + * lfs/grub, src/patches/grub-0.93-gateA20.patch: borrow a fix from + grub 0.94 to fix Gate A20 + +2004-06-09 07:04 gespinasse + + * src/rc.d/rc.netaddress.up: Revert Alan change to allow again use + of 'Connect on restart' with PPPoE/PPTP and do it only when + necessary + +2004-06-08 21:29 alanh + + * lfs/snort: bugfixes for snort (upgrade to 2.1.3) + +2004-06-08 21:28 alanh + + * lfs/openswan: bugfixes for openswan (upgrade to 1.0.4) + +2004-06-08 19:22 alanh + + * lfs/cdrom: fix dependencies + +2004-06-08 18:51 alanh + + * src/install+setup/install/upgrade-v130-v140.c: add 'deny bootp' + to resolve DHCP issues. + + We may want to re-enable bootp clients, but we'd need to resolve + the netstatus.cgi and dhcp.cgi scripts to parse 'ends never' as + the lease time. + +2004-06-07 16:46 eoberlander + + * lfs/cdrom: Add Quick Start guide to docs folder. + +2004-06-07 16:23 eoberlander + + * lfs/cdrom: Change name of install-en file to version specific to + v140. + +2004-06-07 15:44 alanh + + * lfs/cdrom: The SF support team removed this file, so re-adding + it. + +2004-06-05 06:59 eoberlander + + * langs/pt/cgi-bin/pt.pl: Additions from Language Database. + +2004-06-04 20:46 eoberlander + + * src/rc.d/rc.firewall.local: Add usage hint. + +2004-06-01 00:40 gespinasse + + * html/cgi-bin/netstatus.cgi, src/rc.d/rc.bewanadsl, + src/rc.d/rc.sysinit: Fix connection status, display some + connection speed and minor fixes + +2004-05-31 18:03 rkerr + + * html/cgi-bin/index.cgi, html/cgi-bin/updates.cgi, lfs/gnupg, + lfs/stage2, src/misc-progs/installpackage.c: Move patch + verification and install logic from CGI to helper program + +2004-05-31 17:18 alanh + + * src/patches/linux-2.4.23-ssp.patch[DEAD]: use downloaded ssp + patch for linux + +2004-05-31 17:13 alanh + + * lfs/glibc: fix download & $(TARGET) + +2004-05-31 17:03 alanh + + * lfs/glibc, config/kernel/kernel.config.alpha, + config/kernel/kernel.config.i386, + config/kernel/kernel.config.i386.smp: add FRANDOM kernel patch + for newer stack smashing protection + +2004-05-31 15:32 alanh + + * lfs/glibc: update glibc stack smash protection patch + +2004-05-31 15:15 alanh + + * lfs/: gcc, gcc-2, glibc, grub, iproute2, isdn4k-utils, perl, + pulsar: update more dependencies for make.sh check + +2004-05-31 14:55 alanh + + * lfs/apache: update openswan to 1.0.4 to fix some bugs + + update make.sh check support to check more files in + lfs/apache,linux + +2004-05-31 09:02 alanh + + * lfs/apache: update modssl to 2.8.18 + +2004-05-31 05:18 gespinasse + + * lfs/linux, src/patches/linux-2.4.27-speedtch.patch: backport + speedtch 2.4.27-pre3 patch + +2004-05-30 20:44 eoberlander + + * langs/sv/install/lang_sv.c: Update from Language Database... + +2004-05-30 15:22 eoberlander + + * langs/sv/install/lang_sv.c: Update from Language Database. I + notice that most of the updates change a single backslash to a + pair of backslashes, which seems odd to me. + +2004-05-26 06:45 gespinasse + + * src/rc.d/: rc.alcatelusb, rc.alcatelusbk, rc.amedynusbadsl, + rc.bewanadsl, rc.conexantpciadsl, rc.conexantusbadsl, + rc.eagleusbadsl, rc.eciadsl, rc.fritzdsl: Remove umount/mount + usbdevfs on usb_reset because it's not effective and necessary, + don't kill modem_run on stop and minor clean up + +2004-05-24 21:37 gespinasse + + * lfs/unzip: Update due to security issues + +2004-05-24 19:55 alanh + + * lfs/ppp, src/patches/ppp-2.4.2-close.patch: fix pppd to really + close the plugin's file descriptors before exec'ing a child + process. This fixes pppoatm.so and from what I can see the + rp-pppoe to really allow re-connections when pppd terminates. + + Basically, some plugin's do not implement the close function as + they should and the run_program() call in pppd assumes that they + should. We default back to closing the returned devfd descriptor + from the plugin. + +2004-05-24 16:18 eoberlander + + * langs/la/install/lang_la.c: Update from Language Database. + +2004-05-22 18:33 eoberlander + + * langs/da/: cgi-bin/da.pl, install/lang_da.c: Additions from + Language Database. + +2004-05-18 11:10 alanh + + * lfs/apache: update apache and mod_ssl + +2004-05-16 15:19 eoberlander + + * langs/fr/install/lang_fr.c: Update from Language Database. + +2004-05-15 22:04 gespinasse + + * html/cgi-bin/graphs.cgi: Fix back link (without ucfirst) + +2004-05-15 13:33 gespinasse + + * lfs/eagle: Fix for 3Com 3cp4218 + +2004-05-14 16:15 eoberlander + + * langs/fr/install/lang_fr.c: Update from Language Database. + +2004-05-13 19:51 gespinasse + + * lfs/fcdsl: Create another fcdsl tgz with smp module + +2004-05-12 23:33 gespinasse + + * src/misc-progs/restartsquid.c: Fix wrong error message + +2004-05-12 14:59 alanh + + * src/install+setup/install/main.c: SMP fix + +2004-05-12 14:57 alanh + + * config/kernel/kernel.config.i386.smp: add a comment and the + kernel config file for SMP + +2004-05-12 14:54 alanh + + * lfs/3cp4218, lfs/Config, lfs/amedyn, lfs/cnx_pci, lfs/cxacru, + lfs/driver.img, lfs/eagle, lfs/eciadsl, lfs/fcdsl, lfs/linux, + lfs/pcmcia-cs, lfs/pulsar, lfs/scsi.img, lfs/speedtouch, + lfs/unicorn, src/install+setup/install/main.c, + src/install+setup/setup/networking.c, config/grub/grub.conf, + config/grub/scsigrub.conf, src/rc.d/rc.network, + src/rc.d/rc.sysinit: add SMP support + +2004-05-12 11:08 riddles + + * html/cgi-bin/netstatus.cgi: Only show dhcp hostname if we got one + +2004-05-12 10:58 riddles + + * src/rc.d/: rc.updatered, rc.netaddress.up: Force killing of + dnsmasq + +2004-05-12 10:41 riddles + + * src/misc-progs/: ipsecctrl.c, restartsquid.c: Remove dependency + on RED_TYPE + +2004-05-12 07:26 eoberlander + + * langs/pt/cgi-bin/pt.pl: Additions from Language Database. + +2004-05-10 21:42 gespinasse + + * src/rc.d/rc.updatered: Fix one more insecure dependency / empty + with dhcpcd (but still an error with rc.updatered Can't read + RED_TYPE when it is not defined) + +2004-05-10 09:10 riddles + + * tools/mkflash/mkflash: Fix Grub stage2 + +2004-05-10 08:49 riddles + + * tools/mkflash/mkflash: Fix mkflash fstab + grub.conf + +2004-05-10 08:06 riddles + + * config/etc/sysctl.conf: Remove conntrack_max entry + +2004-05-09 19:52 eoberlander + + * langs/da/cgi-bin/da.pl: Additions from Language Database. + +2004-05-08 14:53 eoberlander + + * html/cgi-bin/vpnmain.cgi: Make Open or Closed text white, as + black is not clear. + +2004-05-07 18:29 eoberlander + + * html/cgi-bin/vpnmain.cgi: Change test to 'if file exists' show + Key. + +2004-05-07 12:29 eoberlander + + * langs/: bz/cgi-bin/bz.pl, es/cgi-bin/es.pl, hu/cgi-bin/hu.pl, + nl/cgi-bin/nl.pl, pt/cgi-bin/pt.pl, ro/cgi-bin/ro.pl, + ru/cgi-bin/ru.pl, tr/cgi-bin/tr.pl, vi/cgi-bin/vi.pl: Remove + colon(:). + +2004-05-07 08:35 alanh + + * lfs/pulsar, src/patches/pulsar.patch: Fix broken pulsar drivers + usage of spin_lock's + +2004-05-07 08:27 riddles + + * src/misc-progs/restartsquid.c: Add fix for static red ethernet + +2004-05-06 09:28 riddles + + * src/misc-progs/ipcopbkcfg.c: Accept wildcards in backup + +2004-05-06 09:26 riddles + + * src/misc-progs/restartsquid.c: Escape VPN and RED network for + transparent proxy + +2004-05-06 07:56 eoberlander + + * langs/fi/cgi-bin/fi.pl: Update from Language Database. + +2004-05-05 09:13 eoberlander + + * langs/da/: cgi-bin/da.pl, install/lang_da.c: Update from Language + Database. + +2004-05-04 10:03 alanh + + * config/kernel/kernel.config.i386: reverse a local change + +2004-05-03 23:13 alanh + + * config/kernel/kernel.config.i386, lfs/linux, lfs/modutils, + src/patches/patch-o-matic-20030912-connlimit.patch[DEAD], + src/patches/patch-o-matic-20030912-pptp.patch[DEAD], + src/patches/patch-o-matic-20030912-rtsp.patch[DEAD], + src/patches/patch-o-matic-20031219-connlimit.patch: update to + kernel 2.4.26 & modutils 2.4.27 and adjust patch-o-matic + accordingly + +2004-05-03 08:55 riddles + + * src/rc.d/rc.updatered: Make sure gw address is not 0.0.0.0 + +2004-05-03 08:31 riddles + + * make.sh: Unmount ccache upon cleanup and exiterror + +2004-05-03 08:19 riddles + + * src/rc.d/rc.sysinit: Remove all lock files upon reboot + +2004-04-29 19:36 eoberlander + + * src/scripts/makegraphs: Fix for SF Bug 943912. + +2004-04-29 10:16 eoberlander + + * langs/sv/: cgi-bin/sv.pl, install/lang_sv.c: Update from Language + Database. + +2004-04-28 17:43 eoberlander + + * html/cgi-bin/dhcp.cgi: Swap code around. Fix for error messages + that appear when editing fixed leases. + +2004-04-28 10:48 riddles + + * lfs/linux, lfs/openswan, src/ROOTFILES.alpha: Update Openswan to + 1.0.3 + +2004-04-26 12:30 riddles + + * src/rc.d/rc.netaddress.up: Start ipsec if it wasn't started by + red + +2004-04-25 16:50 gespinasse + + * lfs/boot.img, src/install+setup/install/main.c: Only when enough + space on disk available, allow 25% of total with upper limit to + 8GBytes, cosmetic : display HTTP/FTP for network install + +2004-04-25 06:57 gespinasse + + * config/cfgroot/backup-include: Remove syslog.conf from backup for + everybody. This file fail to follow update at install. You can + put it on user.include on your own + +2004-04-24 22:06 gespinasse + + * html/cgi-bin/: shaping.cgi, xtaccess.cgi: Stay on edit mode if an + error occur + +2004-04-24 21:45 gespinasse + + * html/cgi-bin/hosts.cgi: Stay on edit mode if an error occur + +2004-04-24 14:47 eoberlander + + * html/cgi-bin/dhcp.cgi: Partial fix for bug that prevented DHCP + settings being saved. More work needed to track down spurious + error messages that appear when editing fixed leases. + +2004-04-24 10:49 rkerr + + * html/cgi-bin/shaping.cgi: Fix for bug 941002 that doesn't break + the edit function + +2004-04-24 08:12 eoberlander + + * html/cgi-bin/shaping.cgi: Roger's fix for Bug 941002. + +2004-04-23 23:11 gespinasse + + * src/rc.d/rc.bewanadsl: Warn for unsupported model + +2004-04-23 16:31 eoberlander + + * langs/sv/: cgi-bin/sv.pl, install/lang_sv.c: Update from Language + database. + +2004-04-23 09:22 riddles + + * make.sh, lfs/arping, lfs/iproute2, lfs/libnet, + src/ROOTFILES.alpha, src/misc-progs/setaliases.c: Add arping + +2004-04-22 20:02 eoberlander + + * langs/it/cgi-bin/it.pl: Update from Language database. + +2004-04-21 10:49 riddles + + * html/cgi-bin/: ddns.cgi, dhcp.cgi, dmzholes.cgi, hosts.cgi, + portfw.cgi, vpnmain.cgi, xtaccess.cgi: Add alt texts for all + legends + +2004-04-21 10:36 riddles + + * html/cgi-bin/shaping.cgi: 1kbps is not usable for shaping + +2004-04-20 12:50 alanh + + * src/: ROOTFILES.alpha, ROOTFILES.i386: add ccache entries + +2004-04-20 12:42 alanh + + * make.sh, lfs/Config, lfs/ccache, src/uClibc/Makefile, + src/patches/ccache-2.3.patch: Implement ccache + +2004-04-20 12:35 alanh + + * lfs/: 3cp4218, Config, amedyn, cnx_pci, cxacru, eagle, fcdsl, + linux, pcmcia-cs, pulsar, unicorn: Consolidate the use of KGCC + +2004-04-20 12:34 alanh + + * lfs/newt: missed one for -fomit-frame-pointer + +2004-04-20 12:32 alanh + + * lfs/: e2fsprogs, installer, kbd, kudzu, misc-progs, pciutils, + slang, sysvinit, util-linux: build even smaller binaries for the + install disk by using -fomit-frame-pointer. + +2004-04-20 08:18 eoberlander + + * langs/da/cgi-bin/da.pl: Update from Language database. + +2004-04-19 16:27 eoberlander + + * langs/cs/cgi-bin/cs.pl: Update from Language database. + +2004-04-19 14:19 alanh + + * lfs/net-tools: since we're using sed -i no need to touch files + +2004-04-19 13:12 riddles + + * src/scripts/makegraphs: Fix diskgraphs + +2004-04-19 13:02 riddles + + * lfs/inetutils, src/patches/inetutils-1.4.2-ping-1.patch, + src/scripts/makegraphs: Fix ping timeout + +2004-04-18 20:08 rkerr + + * html/cgi-bin/dhcp.cgi: In place editing + +2004-04-18 11:22 riddles + + * lfs/pcmcia-cs: SMP fix + +2004-04-17 17:23 rkerr + + * lfs/bind: Only build nsupdate and the 3 libraries it requires + instead of building the ntire bind suite + +2004-04-17 17:10 rkerr + + * html/: html/include/ipcop.css, cgi-bin/aliases.cgi, + cgi-bin/ddns.cgi, cgi-bin/dhcp.cgi, cgi-bin/dmzholes.cgi, + cgi-bin/hosts.cgi, cgi-bin/portfw.cgi, cgi-bin/shaping.cgi, + cgi-bin/wireless.cgi, cgi-bin/xtaccess.cgi: Various XHTML fixes - + * removed invalid attributes from tags * fixed a + couple of uppercase attribute name * reordered most overlapping + form & table elements * turned off form margin and padding so + reordered elements don't mess up table formating + +2004-04-17 16:23 eoberlander + + * html/cgi-bin/logs.cgi/: firewalllog.dat, ids.dat, log.dat, + proxylog.dat, summary.dat: Add Tooltips to buttons on log pages + for 'Day before' and 'Day after'. + +2004-04-17 14:22 eoberlander + + * html/cgi-bin/ddns.cgi: Add title= for tooltips: Fix for Bug No + 936789. + +2004-04-17 13:56 eoberlander + + * html/cgi-bin/shaping.cgi: Add title= for tooltips: Fix for Bug No + 936789. + +2004-04-17 09:17 eoberlander + + * html/cgi-bin/xtaccess.cgi: Add title= for tooltips: Fix for Bug + No 936789. + +2004-04-17 07:34 eoberlander + + * html/cgi-bin/vpnmain.cgi: Rearrange Legend table onto two lines. + +2004-04-16 22:46 alanh + + * make.sh: use UTC time for logging + +2004-04-16 17:40 rkerr + + * html/cgi-bin/shaping.cgi: Change to use graphical edit/delete + icons and in place editing instead of the old option based + approach + +2004-04-16 16:19 eoberlander + + * html/cgi-bin/portfw.cgi: Forward Darren's fix into v1.4.0 branch. + +2004-04-16 12:54 eoberlander + + * langs/sv/cgi-bin/sv.pl: Update from Language database. + +2004-04-16 11:07 riddles + + * html/cgi-bin/vpnmain.cgi: Show legend + +2004-04-16 10:56 riddles + + * html/cgi-bin/: ddns.cgi, hosts.cgi: Show legend + +2004-04-16 10:51 riddles + + * html/cgi-bin/: dmzholes.cgi, portfw.cgi: Show legend + +2004-04-16 09:49 riddles + + * html/cgi-bin/xtaccess.cgi: Show legend + +2004-04-16 09:40 riddles + + * html/cgi-bin/: dmzholes.cgi, vpnmain.cgi: Move blue dot to behind + the label + +2004-04-16 09:35 riddles + + * html/cgi-bin/vpnmain.cgi: Remove back button from posted page + +2004-04-16 09:29 riddles + + * html/cgi-bin/logs.cgi/firewalllog.dat: Synchronize logbox + headings + +2004-04-16 09:25 riddles + + * html/cgi-bin/credits.cgi: Remove BACK + +2004-04-16 09:25 riddles + + * html/cgi-bin/: modem.cgi, proxy.cgi: Synchronize these/this field + may be blank + +2004-04-16 09:01 riddles + + * html/cgi-bin/portfw.cgi: Add blue dot + +2004-04-15 20:58 alanh + + * lfs/: apache, perl: fix dependencies + +2004-04-15 20:38 alanh + + * lfs/: gcc, gcc-2: fix dependencies + +2004-04-15 17:11 alanh + + * lfs/ncurses: remove -j 3 because of build issues + +2004-04-15 15:59 alanh + + * lfs/glibc: correct dependencies + +2004-04-14 22:05 gespinasse + + * src/install+setup/: install/cdrom.c, install/config.c, + install/main.c, install/net.c, install/nic.c, + install/upgrade-v130-v140.c, install/usb.c, libsmooth/main.c, + libsmooth/netstuff.c, setup/dhcp.c, setup/domainname.c, + setup/hostname.c, setup/isdn.c, setup/keymap.c, setup/main.c, + setup/misc.c, setup/networking.c, setup/passwords.c, + setup/timezone.c: Fix minor compilation warnings (built-in + function log... and unused variables + +2004-04-11 20:18 eoberlander + + * html/cgi-bin/credits.cgi: Update Marco's details. + +2004-04-11 16:33 eoberlander + + * langs/: bz/cgi-bin/bz.pl, cs/cgi-bin/cs.pl, da/cgi-bin/da.pl, + es/cgi-bin/es.pl, fi/cgi-bin/fi.pl, hu/cgi-bin/hu.pl, + it/cgi-bin/it.pl, nl/cgi-bin/nl.pl, pt/cgi-bin/pt.pl, + ro/cgi-bin/ro.pl, ru/cgi-bin/ru.pl, sv/cgi-bin/sv.pl, + tr/cgi-bin/tr.pl, vi/cgi-bin/vi.pl, zh/cgi-bin/zh.pl: Update from + Language database. + +2004-04-10 11:10 riddles + + * lfs/tcpdump, src/patches/tcpdump-3.7.2-CAN-2004-01834.patch: + Tcpdump security fix + +2004-04-09 17:35 alanh + + * lfs/: coreutils, gmp, ncurses, openssh, openssl, python: + parallelize some more of the build process + +2004-04-08 05:58 gespinasse + + * src/: ROOTFILES.alpha, ROOTFILES.i386: Fix capi4k-utils update + +2004-04-07 21:41 gespinasse + + * lfs/eciadsl, src/ROOTFILES.i386, src/rc.d/rc.eciadsl: Update ECI + driver + +2004-04-07 14:10 alanh + + * lfs/capi4k-utils, + src/patches/capi4k-utils-2004-01-19-pppd242.patch[DEAD]: no + longer require capi patch for ppp 2.4.2 + +2004-04-07 14:06 alanh + + * lfs/capi4k-utils: update capi4k-utils + +2004-04-07 12:45 riddles + + * src/misc-progs/ipsecctrl.c: Fix red interface name for alias + +2004-04-07 12:40 riddles + + * lfs/snort: Snort fixes + +2004-04-07 12:31 riddles + + * src/misc-progs/ipsecctrl.c: Add alias interfaces to valid ipsec + interfaces + +2004-04-07 11:48 riddles + + * src/misc-progs/ipsecctrl.c: Allow any source port + +2004-04-07 08:13 alanh + + * lfs/busybox, src/patches/busybox-0.60.5-wget-unlink.patch: fix + for using ftp:// in the installer + +2004-04-07 08:11 alanh + + * src/install+setup/install/net.c: fix for using ftp:// on the + installer + +2004-04-05 07:12 eoberlander + + * langs/it/cgi-bin/it.pl: Language update from database. + +2004-04-05 07:04 eoberlander + + * langs/: bz/install/lang_bz.c, cs/install/lang_cs.c, + da/install/lang_da.c, de/install/lang_de.c, el/install/lang_el.c, + es/install/lang_es.c, fi/install/lang_fi.c, fr/install/lang_fr.c, + hu/install/lang_hu.c, it/install/lang_it.c, la/install/lang_la.c, + nl/install/lang_nl.c, no/install/lang_no.c, pt/install/lang_pt.c, + sv/install/lang_sv.c, tr/install/lang_tr.c: Update all installer + files, following change to lang_en.c + +2004-04-04 20:29 alanh + + * langs/en/install/lang_en.c: fix for + +2004-04-04 17:54 gespinasse + + * lfs/pulsar, src/rc.d/rc.pulsardsl: Fix unresolved symbols for + Pulsar, but the last one with printk need library update + +2004-04-04 13:02 eoberlander + + * langs/pt/cgi-bin/pt.pl: Additions from Language Database. + +2004-04-02 22:33 alanh + + * config/kernel/kernel.config.alpha, src/ROOTFILES.alpha: Build + fixes for Alpha + +2004-04-02 07:33 eoberlander + + * html/cgi-bin/dhcp.cgi: Add the word Legend in front of the key to + actions. + +2004-04-01 18:03 eoberlander + + * html/cgi-bin/logs.cgi/proxylog.dat: Fix typo (missing < ) which + broke display of drop down list of IP numbers. + +2004-04-01 15:36 alanh + + * src/install+setup/setup/networking.c: bump for segmentation fault + +2004-03-31 17:39 eoberlander + + * src/scripts/makegraphs: Possible fix for Bug No 925779, Current + System CPU graph display error. Remove two s. + +2004-03-31 12:15 riddles + + * lfs/linux: Remove openswan dir + +2004-03-31 09:38 eoberlander + + * langs/el/cgi-bin/el.pl: Language update from database. + +2004-03-30 23:03 gespinasse + + * html/cgi-bin/upload.cgi, src/rc.d/rc.alcatelusb, + src/rc.d/rc.alcatelusbk: Fix first start with V1.2 driver and rev + 4.00 setup/upload + +2004-03-29 15:05 riddles + + * make.sh: Bump version + +2004-03-29 07:53 riddles + + * config/httpd/httpd.conf: Only allow 10 concurrent connections + +2004-03-29 07:50 riddles + + * lfs/initrd: Add isa-pnp module + +2004-03-27 16:57 eoberlander + + * html/cgi-bin/upload.cgi: Tweak formatting of tables. + +2004-03-27 15:18 eoberlander + + * html/cgi-bin/upload.cgi: Fix typo - missing <. + +2004-03-27 11:52 eoberlander + + * html/cgi-bin/upload.cgi: Rename string variable used in + upload.cgi to assist translators. New variable has been added to + Language Database. + +2004-03-27 11:26 eoberlander + + * langs/: bz/cgi-bin/bz.pl, cs/cgi-bin/cs.pl, da/cgi-bin/da.pl, + el/cgi-bin/el.pl, es/cgi-bin/es.pl, fi/cgi-bin/fi.pl, + hu/cgi-bin/hu.pl, it/cgi-bin/it.pl, nl/cgi-bin/nl.pl, + pt/cgi-bin/pt.pl, ro/cgi-bin/ro.pl, ru/cgi-bin/ru.pl, + sv/cgi-bin/sv.pl, tr/cgi-bin/tr.pl, vi/cgi-bin/vi.pl, + zh/cgi-bin/zh.pl: Two language variables renamed, to support + recent changes to pppsetup.cgi. + +2004-03-27 08:18 gespinasse + + * src/rc.d/rc.conexantpciadsl: Fix Conexant Tigris, atmard way and + silent some ifconfig down + +2004-03-26 08:40 eoberlander + + * langs/: cs/cgi-bin/cs.pl, el/cgi-bin/el.pl, fr/cgi-bin/fr.pl, + hu/cgi-bin/hu.pl, la/cgi-bin/la.pl, zh/cgi-bin/zh.pl: Language + update from database. + +2004-03-26 00:25 gespinasse + + * lfs/unicorn: Fix Bewan usb dependency from usb to pci module and + usb work now! + +2004-03-23 09:58 riddles + + * lfs/openssl: Security update + +2004-03-21 20:48 gespinasse + + * html/cgi-bin/pppsetup.cgi, html/cgi-bin/upload.cgi, + src/misc-progs/ipcopbackup.c, src/rc.d/rc.alcatelusb, + src/rc.d/rc.alcatelusbk: New driver V1.2 debugging and some other + clean-up + +2004-03-21 16:39 eoberlander + + * langs/: fr/cgi-bin/fr.pl, ru/cgi-bin/ru.pl: Language update from + database. + +2004-03-21 14:17 eoberlander + + * html/cgi-bin/vpnmain.cgi: String variables have been renamed. + +2004-03-21 01:48 gespinasse + + * html/cgi-bin/pppsetup.cgi, html/cgi-bin/upload.cgi, + lfs/speedtouch, src/ROOTFILES.alpha, src/ROOTFILES.i386, + src/install+setup/install/upgrade-v130-v140.c, + src/rc.d/rc.alcatelusb, src/rc.d/rc.alcatelusbk: Driver V1.2 for + rev4.00 and better behavior for rev0.00(green stingray) + +2004-03-20 23:03 eoberlander + + * langs/: de/cgi-bin/de.pl, fi/cgi-bin/fi.pl, fr/cgi-bin/fr.pl, + la/cgi-bin/la.pl, nl/cgi-bin/nl.pl, no/cgi-bin/no.pl, + pt/cgi-bin/pt.pl, ru/cgi-bin/ru.pl: Various updates. + +2004-03-20 18:38 eoberlander + + * html/cgi-bin/: pppsetup.cgi, proxy.cgi: Add some colons. + +2004-03-20 16:31 eoberlander + + * langs/hu/cgi-bin/hu.pl: Language update from database. + +2004-03-20 09:49 eoberlander + + * langs/fr/cgi-bin/fr.pl: Language update from database. + +2004-03-20 08:17 eoberlander + + * langs/sv/cgi-bin/sv.pl: Language update from database. + +2004-03-19 15:26 rkerr + + * html/cgi-bin/ddns.cgi: Change button text to read update rather + than edit when in edit mode to be consistent with other pages + +2004-03-19 14:12 rkerr + + * src/rc.d/rc.firewall: Rely on the state engine instead of a + hardcoded list for ICMP filtering, but deny all NEW state ICMP + except ping on green (thereby stopping timestamp requests on + green) + +2004-03-19 11:46 eoberlander + + * langs/: zh/cgi-bin/zh.pl, de/cgi-bin/de.pl: Language update from + database. + +2004-03-19 07:34 gespinasse + + * config/etc/modules.conf, lfs/cnx_pci, lfs/configroot, + src/ROOTFILES.i386, src/patches/cnx_pci_yukon.patch, + src/rc.d/rc.conexantpciadsl, src/rc.d/rc.red, + src/rc.d/rc.sysinit: Work for conexant Tigris and Yukon cards and + fix for rc.red stop and some modems + +2004-03-18 22:19 eoberlander + + * langs/la/cgi-bin/la.pl: Language update from database. + +2004-03-18 13:05 eoberlander + + * langs/no/cgi-bin/no.pl: Language update from database. + +2004-03-18 11:28 eoberlander + + * langs/: cs/cgi-bin/cs.pl, el/cgi-bin/el.pl: Language update from + database. + +2004-03-18 07:49 riddles + + * config/etc/syslog.conf: Log pppd debug info to /var/log/messages + +2004-03-18 07:46 riddles + + * html/cgi-bin/pppsetup.cgi, langs/en/cgi-bin/en.pl: Debuging + should be debugging + +2004-03-17 21:47 gespinasse + + * src/rc.d/rc.alcatelusb: Unnecessary to remove usbcore + +2004-03-17 21:41 gespinasse + + * html/cgi-bin/pppsetup.cgi, langs/en/cgi-bin/en.pl, lfs/cnx_pci, + src/rc.d/rc.red: Support debug selection from web interface + +2004-03-17 17:20 riddles + + * config/kernel/kernel.config.alpha, + config/kernel/kernel.config.i386, lfs/linux, src/ROOTFILES.alpha, + src/ROOTFILES.i386, src/install+setup/libsmooth/netstuff.c: Add + NForce2 GPL support + +2004-03-17 12:52 riddles + + * make.sh, html/cgi-bin/pppsetup.cgi, html/cgi-bin/upload.cgi, + lfs/pulsar, src/ROOTFILES.i386, + src/install+setup/install/upgrade-v130-v140.c, + src/rc.d/rc.pulsardsl, src/rc.d/rc.red: Use opensource Pulsar + driver + +2004-03-17 12:50 riddles + + * src/misc-progs/restartshaping.c: Set correct r2q on htb classes + +2004-03-17 09:07 riddles + + * src/rc.d/rc.conexantpciadsl: Fixes by Filippo Carletti + +2004-03-17 09:02 riddles + + * src/rc.d/rc.sysinit: Remove lockfile on reboot + +2004-03-17 08:07 eoberlander + + * langs/zh/cgi-bin/zh.pl: Language update from database. + +2004-03-16 21:38 eoberlander + + * langs/cs/cgi-bin/cs.pl: Language update from database. + +2004-03-16 19:36 eoberlander + + * langs/no/cgi-bin/no.pl: Language update from database. + +2004-03-15 21:56 eoberlander + + * langs/: hu/cgi-bin/hu.pl, no/cgi-bin/no.pl: Language update from + database. + +2004-03-15 20:16 riddles + + * config/kernel/kernel.config.alpha, + config/kernel/kernel.config.i386, lfs/linux, + src/patches/patch-o-matic-20030912-rtsp.patch: Add rtsp conntrack + support module + +2004-03-15 18:03 eoberlander + + * langs/fi/: cgi-bin/fi.pl, install/lang_fi.c: Language update from + database. + +2004-03-15 17:54 eoberlander + + * langs/la/cgi-bin/la.pl: Language update from database. + +2004-03-15 17:49 eoberlander + + * langs/: hu/cgi-bin/hu.pl, hu/install/lang_hu.c, de/cgi-bin/de.pl: + Language update from database. + +2004-03-15 10:06 alanh + + * src/install+setup/setup/networking.c: fix seg fault when using + RED+GREEN+ORANGE+BLUE + +2004-03-15 09:50 eoberlander + + * langs/: bz/cgi-bin/bz.pl, cs/cgi-bin/cs.pl, da/cgi-bin/da.pl, + de/cgi-bin/de.pl, el/cgi-bin/el.pl, es/cgi-bin/es.pl, + fi/cgi-bin/fi.pl, fr/cgi-bin/fr.pl, hu/cgi-bin/hu.pl, + it/cgi-bin/it.pl, la/cgi-bin/la.pl, nl/cgi-bin/nl.pl, + no/cgi-bin/no.pl, pt/cgi-bin/pt.pl, ro/cgi-bin/ro.pl, + ru/cgi-bin/ru.pl, sv/cgi-bin/sv.pl, tr/cgi-bin/tr.pl, + vi/cgi-bin/vi.pl, zh/cgi-bin/zh.pl: Language database has been + stripped of phrases unused in v140. Update all translations. + +2004-03-15 09:45 eoberlander + + * langs/en/cgi-bin/en.pl: Update English from Database. + +2004-03-15 09:30 riddles + + * config/kernel/: kernel.config.alpha, kernel.config.i386: Add + tarpit support + +2004-03-15 09:23 riddles + + * tools/check_strings.pl: Add some more characters + +2004-03-14 18:24 eoberlander + + * langs/pl/cgi-bin/pl.pl: Language update from Database. + +2004-03-14 10:48 riddles + + * lfs/linux: Add TARPIT + +2004-03-14 10:44 riddles + + * src/install+setup/install/upgrade-v130-v140.c: Fix pathnames + +2004-03-13 14:32 eoberlander + + * langs/: bz/cgi-bin/bz.pl, cs/cgi-bin/cs.pl, da/cgi-bin/da.pl, + de/cgi-bin/de.pl, el/cgi-bin/el.pl, es/cgi-bin/es.pl, + fi/cgi-bin/fi.pl, fr/cgi-bin/fr.pl, hu/cgi-bin/hu.pl, + it/cgi-bin/it.pl, la/cgi-bin/la.pl, nl/cgi-bin/nl.pl, + no/cgi-bin/no.pl, pl/cgi-bin/pl.pl, pt/cgi-bin/pt.pl, + ru/cgi-bin/ru.pl, sv/cgi-bin/sv.pl, tr/cgi-bin/tr.pl, + zh/cgi-bin/zh.pl: Language update from Database. + +2004-03-13 12:53 eoberlander + + * html/cgi-bin/: gui.cgi, logs.cgi/config.dat: Fix error messages, + and back out change to logwatch level error check in config.dat. + +2004-03-13 07:15 eoberlander + + * html/cgi-bin/wireless.cgi: Rationalise log message strings, to + avoid duplication. + +2004-03-13 06:38 eoberlander + + * html/cgi-bin/proxy.cgi: Fix typo for enabled on strings. + +2004-03-13 06:12 eoberlander + + * html/cgi-bin/: remote.cgi, logs.cgi/config.dat, + logs.cgi/summary.dat: Replace double quotes with single quotes. + +2004-03-12 22:13 eoberlander + + * html/cgi-bin/logs.cgi/config.dat: Remove redundant error message, + as logwatch level is selected from a drop down menu. + +2004-03-12 21:53 eoberlander + + * html/cgi-bin/aliases.cgi: Change translation string to avoid + duplication, and use record already in Database. + +2004-03-12 20:56 eoberlander + + * html/cgi-bin/dhcp.cgi: Change text to lowercase in translation + strings. + +2004-03-12 20:53 riddles + + * src/install+setup/libsmooth/netstuff.c: Fix intel ethernet + drivername + +2004-03-12 20:43 riddles + + * html/cgi-bin/pppsetup.cgi: Oops, needs a fix + +2004-03-12 19:51 eoberlander + + * html/cgi-bin/updates.cgi: Fix typos in error message strings. + +2004-03-12 14:53 riddles + + * config/httpd/httpd.conf, lfs/apache: Disable track/trace requests + for apache + +2004-03-12 14:41 riddles + + * config/httpd/httpd.conf: Limit Apache versionstring + +2004-03-12 14:39 riddles + + * src/rc.d/rc.firewall: Limit icmp types we accept + +2004-03-12 14:09 riddles + + * lfs/ntp: Remove query options from ntpd + +2004-03-12 14:05 riddles + + * html/cgi-bin/logs.cgi/proxylog.dat: Fix empty ip list + +2004-03-12 13:53 riddles + + * lfs/openswan, src/misc-progs/ipsecctrl.c, + src/patches/openswan-1.0.1-plutoctl.patch: Fix pluto.ctl + permissions + +2004-03-12 12:35 riddles + + * make.sh: Bump version + +2004-03-12 12:35 riddles + + * html/cgi-bin/pppsetup.cgi: Fix compile errors + +2004-03-12 09:12 riddles + + * tools/check_strings.pl: Sort keys + +2004-03-12 09:07 riddles + + * tools/check_strings.pl: Add script to check for existence of + strings in cgi's etc. + +2004-03-12 08:58 eoberlander + + * langs/: de/cgi-bin/de.pl, el/cgi-bin/el.pl, la/cgi-bin/la.pl, + pl/cgi-bin/pl.pl, zh/cgi-bin/zh.pl: Language update from + Database. + +2004-03-11 18:23 riddles + + * langs/en/cgi-bin/en.pl: Remove double string + +2004-03-11 18:20 riddles + + * html/cgi-bin/vpnmain.cgi: Remove double string + +2004-03-11 13:48 riddles + + * src/rc.d/rc.red: Restart dnsmasq for static ip connections up and + down + +2004-03-11 12:55 riddles + + * config/kernel/kernel.config.alpha, + config/kernel/kernel.config.i386, + src/install+setup/install/upgrade-v130-v140.c: Replace eepro100 + with e100 driver + +2004-03-11 12:41 riddles + + * html/cgi-bin/pppsetup.cgi, src/rc.d/rc.red: Add support for + serial connection + cleanup pppsetup.cgi a bit + +2004-03-11 12:22 riddles + + * config/cfgroot/header.pl: Fix connection status display + +2004-03-11 11:42 rkerr + + * html/cgi-bin/dhcp.cgi: Don't add a semi-colon if no WINS servers + are present + +2004-03-11 11:39 riddles + + * src/rc.d/rc.red: Always allow DHCP traffic on iface + +2004-03-11 09:00 riddles + + * config/cfgroot/header.pl: Just match any character + +2004-03-11 08:43 riddles + + * html/cgi-bin/portfw.cgi: Errormessage shouldn't be local + +2004-03-11 08:36 riddles + + * src/rc.d/rc.red: Cleanup all dhcpc instances + +2004-03-11 08:32 riddles + + * src/rc.d/rc.red: Check if iface is set + +2004-03-11 08:29 riddles + + * src/rc.d/rc.red: Add pptp sync option + +2004-03-11 08:04 eoberlander + + * langs/: la/cgi-bin/la.pl, la/install/lang_la.c, no/cgi-bin/no.pl: + Language update from Database. + +2004-03-09 20:19 eoberlander + + * langs/de/cgi-bin/de.pl: Language update from Database. + +2004-03-09 20:16 rkerr + + * html/cgi-bin/logs.cgi/summary.dat: Strip trailing blanks from log + summaries, fixes the page width problem reported by roger murer + +2004-03-09 19:19 riddles + + * config/etc/profile: Add dir alias + +2004-03-09 19:16 riddles + + * html/cgi-bin/proxy.cgi: Force to use upstream proxy + +2004-03-09 18:15 rkerr + + * langs/en/cgi-bin/en.pl, lfs/logwatch: Remove unused filters added + by updating to 5.1, and tune free space display not to display + root fs twice. Also remove cron filter (it doesn't support fcron) + +2004-03-09 17:28 alanh + + * src/misc-progs/setdmzholes.c: fix setdmzholes to really define + the interfaces as strcmp returns 0 on success. + +2004-03-09 08:01 eoberlander + + * langs/: fr/cgi-bin/fr.pl, pl/cgi-bin/pl.pl, zh/cgi-bin/zh.pl: + Language update from Database. + +2004-03-08 20:09 eoberlander + + * html/cgi-bin/credits.cgi: Update translators. + +2004-03-08 17:58 eoberlander + + * langs/: el/cgi-bin/el.pl, pl/cgi-bin/pl.pl: Language update from + Database. + +2004-03-08 08:37 riddles + + * html/cgi-bin/dhcp.cgi, langs/en/cgi-bin/en.pl, + src/install+setup/install/upgrade-v130-v140.c: Secondary WINS + server support + +2004-03-08 08:22 riddles + + * src/scripts/setddns.pl: Remove already-up-to-date message + +2004-03-08 08:07 riddles + + * src/rc.d/rc.firewall: Further limit loopback traffic + +2004-03-08 07:16 riddles + + * src/rc.d/rc.firewall: Move dmzholes + +2004-03-08 07:00 riddles + + * src/rc.d/rc.firewall: Orange dmzholes fix + +2004-03-07 06:58 eoberlander + + * langs/: de/cgi-bin/de.pl, pl/cgi-bin/pl.pl: Language update from + Database. + +2004-03-06 17:56 eoberlander + + * langs/: cs/cgi-bin/cs.pl, el/cgi-bin/el.pl, fr/cgi-bin/fr.pl, + no/cgi-bin/no.pl, pl/cgi-bin/pl.pl: Language update from + Database. + +2004-03-06 14:58 eoberlander + + * html/cgi-bin/index.cgi, langs/en/cgi-bin/en.pl: Add translation + strings for javascript menu failure. + +2004-03-06 10:45 gespinasse + + * config/cfgroot/header.pl: Fix refresh on index.cgi with dhcp + +2004-03-06 09:59 gespinasse + + * html/cgi-bin/index.cgi: Fix refresh on index.cgi but only for + PPP, next will follow + +2004-03-06 08:20 eoberlander + + * langs/pl/cgi-bin/pl.pl: Language update from Database. + +2004-03-05 09:30 riddles + + * config/cfgroot/header.pl: Delete aliases menu option unless red + ethernet is static + +2004-03-05 09:00 riddles + + * src/rc.d/rc.firewall: No need to specifically drop traffic to + ipsec+ + +2004-03-05 08:42 riddles + + * langs/en/cgi-bin/en.pl: Fix logwatch httpd header + +2004-03-05 08:41 riddles + + * config/cfgroot/header.pl: Remove proxy logs menu entry + +2004-03-05 08:37 riddles + + * src/: ROOTFILES.alpha, ROOTFILES.i386: Remove some of the + Net::DNS files + +2004-03-05 08:02 eoberlander + + * langs/: bz/install/lang_bz.c, da/cgi-bin/da.pl, de/cgi-bin/de.pl, + es/cgi-bin/es.pl, fr/cgi-bin/fr.pl, fr/install/lang_fr.c, + la/cgi-bin/la.pl, nl/cgi-bin/nl.pl, no/cgi-bin/no.pl, + pl/cgi-bin/pl.pl, ru/cgi-bin/ru.pl, sv/cgi-bin/sv.pl, + tr/cgi-bin/tr.pl: Language update from Database. + +2004-03-05 07:33 riddles + + * src/scripts/makegraphs: Force graphs to use English texts + +2004-03-05 07:14 eoberlander + + * src/: ROOTFILES.alpha, ROOTFILES.i386: Fix for Bug 909998, + missing Net::DNS file. + +2004-03-05 07:05 eoberlander + + * make.sh: Bump version number. + +2004-03-04 14:55 riddles + + * config/cfgroot/header.pl: Fix typo + +2004-03-04 12:12 riddles + + * config/httpd/httpd.conf: Start and run less servers + +2004-03-04 12:05 riddles + + * config/cfgroot/header.pl: Filter more menu entries + +2004-03-04 12:00 riddles + + * config/cfgroot/header.pl: Limit menu item display for blue and + orange + +2004-03-04 11:45 alanh + + * src/misc-progs/restartwireless.c: Use the LOG_DROP rule instead + of DROP, so we can see what's happening on the BLUE dev + +2004-03-04 11:04 alanh + + * lfs/grub, src/patches/grub-0.93-rtl8139.patch: another grub patch + +2004-03-04 11:03 alanh + + * lfs/snort: allow snort to be built with -j 3 + +2004-03-04 10:48 riddles + + * src/misc-progs/restartwireless.c: Fix jump to dmzholes + +2004-03-04 10:43 riddles + + * config/cfgroot/header.pl, html/cgi-bin/dmzholes.cgi, + langs/en/cgi-bin/en.pl, src/misc-progs/restartwireless.c: Fix + dmzholes + +2004-03-04 10:39 riddles + + * lfs/glibc: Fix patchname + +2004-03-04 08:53 riddles + + * make.sh: Update version + diff --git a/doc/How-to-make-update b/doc/How-to-make-update new file mode 100644 index 0000000000..4be2bf379d --- /dev/null +++ b/doc/How-to-make-update @@ -0,0 +1,51 @@ +Prerequisites +- have release right on sourceforge to be able to affect uploaded files to a release +- have 'IPCop development Group' private gpg key (and password) to sign the patch, import the key with gpg --import (private key file name) +- you can create your own key with whatever name you want and replace (temporarily!) the pub key in + your box (/root/.gnupg/*) for testing your patch + +Build +- ./make.sh changelog and commit : update doc/Changelog (include in the .iso) +- ./make.sh build +- ./make.sh dist : + build source package by exporting from CVS, + create a check-list of modified files in doc/updated-sources.txt +- manually check all necessary files are include in updates/1.4.x/ROOTFILES.*.1.4.x comparing with /doc/updated-sources.txt +- sign the patch with gpg --local-user "IPCop Development Group" --sign ipcop-update-1.4.x.tgz (or with another name given to the key) +- for the announce, files md5 are obtained with md5sum ipcop-* + +Sourceforge +- in case of test files, rename them with rename 1.4.x 1.4.xtest *1.4.x* +- upload files via ftp to upload.sourceforge.net in incoming directory + (may need to have more than 30s inactivity timeout to be able to connect on sourceforge) +- add a new release + for test file, status active under "IPCop test versions" package + for official release, status active under "IPCop" package + affect uploaded files (web interface Files Release System) on the release + add Changelog and text abstract at the release +- control file size under Files web page once files are affected to the package +- with ssh, update every patch list on shell.sourceforge.net /home/groups/i/ip/ipcop/htdocs/patches preceding the previous v1.4.x version with : + the content of updates/1.4x/information (and add the link to the release on sourceforge at the end of the line) +- add a new entry corresponding to the next version number in the patch list with only "----START LIST----" inside + chmod 664 the file +- In Tracker, Tracker administration, bugs, add a new group corresponding to the version number + +Update CVS : +- with the tag of the release + cvs tag IPCOP_v1_4_(x)_FINAL + +- bump VERSION and PREVIOUSTAG in make.sh +- ./make.sh newupdate + will add a new directory in updates corresponding to the new version number with files: + information (Id number should be 003 for VERSION=1.4.3) + ROOTFILES.alpha-1.4.x + ROOTFILES.i386-1.4.x + setup + .cvsignore (containing patch.tar.gz ) + +www.ipcop.org +- update with doc/packages-list.txt + http://www.ipcop.org/modules.php?op=modload&name=phpWiki&file=index&pagename=IPCopSoftwares + +News +- send news on user devel announce lists (subscribe to announce before if necessary) diff --git a/doc/README b/doc/README new file mode 100644 index 0000000000..b828a43474 --- /dev/null +++ b/doc/README @@ -0,0 +1,22 @@ +General +------- +This is the first version of IPCop. It was originally based on Smoothwall, +but the distribution is actually built from source. + +License +------- +All of the code included in this release has been distributed under the GPL. +You should find a copy of the GPL included. + +Building +------------ +First, do : chmod 755 make.sh +Build using : ./make.sh build +Cleanup using: ./make.sh clean + +The building will also rebuild the Linux kernel. With the ipsec patches +applied, I have only managed to build the kernel using kgcc. gcc 2.9.6 and +gcc 3.0.1 failed to build the kernel!!! + +If you have any questions, remarks or patches, please send me an e-mail. +Mark Wormgoor diff --git a/doc/make.sh-usage b/doc/make.sh-usage new file mode 100644 index 0000000000..576a0b16d8 --- /dev/null +++ b/doc/make.sh-usage @@ -0,0 +1,29 @@ +Standard use commands in the order you may need them. + prefetch : preload all necessary files in cache before compilation + build : compile the distribution + clean : erase build and log to recompile everything from scratch + +Optional + gettoolchain : optionally load from sourceforge a precompilated toolchain + package. This solve some compilation issues on old or very + recent distributions and save 20% of next full building time. + If you want to use it, do it before build step + +Maintainer / advanced commands + changelog : Update doc/Changelog from CVS messages log + check : Test if packages files are still available for download + This is faster on http URL with --spider,but still slow on ftp + because of real load. + checkclean : Erase all check mark on cache directory to be able to check + another time + dist : Mainly produce a diff from previous version to track wich + files have been changed + newupdate : Add on CVS structure for new update directory and files + rootfiles : Goal is to create update/x/ROOTFILES automatically in the + futur. Build md5 of all included files in iso and list of + changed or removed files (not yet fully usable at some + packages include a compilation timestamp, so md5 change at + every compilation) + toolchain : Create our own toolchain package to save 20% of build time. + shell : Enter a shell inside the chroot, used to tune lfs script + and / or during kernel upgrade to rebuild a new .config diff --git a/doc/packages-list.txt b/doc/packages-list.txt new file mode 100644 index 0000000000..97f982938a --- /dev/null +++ b/doc/packages-list.txt @@ -0,0 +1,159 @@ +!!! List of softwares used to build IPFire Version:1.4.11 +* 3c5x9setup-1.00 +* 3cp4218-2003-10-22 +* CnxADSL-TgrATMcln-20041004 +* Compress-Zlib-1.35 +* Digest-1.08 +* Digest-HMAC-1.01 +* Digest-SHA1-2.10 +* GD-2.12 +* HTML-Parser-3.45 +* HTML-Tagset-3.04 +* LPRng-3.8.28 +* Linux-PAM-0.99.3.0 +* Net-DNS-0.47 +* Net-IPv4Addr-0.10 +* Net_SSLeay.pm-1.25 +* Python-2.3.4 +* URI-1.35 +* amedyn-2004-08-04 +* apache_1.3.34 +* arping-2.05 +* as86-0.16.17 +* autoconf-2.59 +* automake-1.8.4 +* bash-2.05b +* bast-0.9.0 +* beep-1.2.2 +* bind-9.2.5 +* binutils-2.15.90.0.3 +* bison-1.875 +* busybox-0.60.5 +* bzip2-1.0.3 +* capi4k-utils-2004-10-06 +* ccache-2.3 +* cdrtools-2.01 +* coreutils-5.93 +* cxacru-2003-10-05 +* dhcp-3.0.2 +* dhcpcd-1.3.22-pl4 +* diffutils-2.8.1 +* dnsmasq-2.22 +* dosfstools-2.11 +* e2fsprogs-1.35 +* eagle-usb-2.3.2 +* eciadsl-usermode-0.11 +* ed-0.2 +* ethtool-3 +* expat-1.95.7 +* ez-ipupdate-3.0.11b8 +* fcdsl-suse8.2-03.11.02 +* fcdsl2-suse9.0-03.11.04 +* fcdslsl-suse8.2-03.11.02 +* fcdslslusb-suse8.2-03.11.04 +* fcdslusb-suse8.2-03.11.02 +* fcron-2.0.2 +* file-4.16 +* findutils-4.1.20 +* flex-2.5.4a +* gawk-3.1.3 +* gcc-3.3.3 +* gd-2.0.20 +* gdbm-1.8.3 +* gettext-0.14.1 +* glibc-2.3.3-lfs-5.1 +* gmp-4.1.2 +* gnupg-1.4.2 +* grep-2.5.1 +* groff-1.19 +* grub-0.95 +* gzip-1.3.5 +* hdparm-6.3 +* httpd-2.2.0 +* iana-etc-2.00 +* ibod +* inetutils-1.4.2 +* ipac-ng-1.31 +* ipaddr-1.2 +* iproute2-2.4.7-now-ss010824 +* iptables-1.3.5 +* iptstate-1.4 +* iputils-ss020927 +* isapnptools-1.26 +* isdn4k-utils.v3.2p1 +* kbd-1.12 +* kudzu-0.99.50 +* less-382 +* libcap-1.10 +* libnet-1.1.2.1 +* libpcap-0.8.3 +* libpng-1.2.8 +* libsafe_2.0-16 +* libtool-1.5.6 +* libusb-0.1.7 +* libwww-perl-5.803 +* linux-2.4.31 +* linux-atm-2.4.1 +* logrotate-3.7 +* logwatch-6.1.2 +* m4-1.4 +* make-3.80 +* make_devices-1.2 +* man-1.5p +* man-pages-2.17 +* mbr-1.1.8 +* mingetty-1.06 +* misc-progs +* mktemp-1.5 +* modutils-2.4.27 +* mtools-3.9.9 +* nano-1.2.4 +* nash +* nasm-0.98.36 +* ncurses-5.4 +* net-tools-1.60 +* newt-utf8_0.50.17 +* noip_updater_v1.6 +* ntp-4.2.0 +* oinkmaster-1.2 +* openssh-3.9p1 +* openssl-0.9.7i +* openswan-1.0.10 +* patch-2.5.4 +* pciutils-2.1.11 +* pcmcia-cs-3.2.8 +* pcre-4.5 +* perl-5.8.5 +* popt-1.7 +* ppp-2.4.2 +* pptp-1.6.0 +* procinfo-18 +* procps-3.2.5 +* psmisc-21.4 +* pulsar-4.0.19 +* rp-pppoe-3.5 +* rrdtool-1.0.49 +* sed-4.0.9 +* setserial-2.17 +* shadow-4.0.4.1 +* slang-1.4.5-mini +* snort-2.3.3 +* speedtouch-1.2 +* squid-2.5.STABLE12 +* squid-graph-3.1 +* stund_0.96_Aug13 +* sysklogd-1.4.1 +* syslinux-2.11 +* sysvinit-2.86 +* tar-1.13.25 +* tcpdump-3.8.3 +* texinfo-4.7 +* traceroute-1.4a12 +* uClibc-0.9.26 +* unzip552 +* util-linux-2.12r +* vim-6.3 +* vlan.1.9 +* wireless_tools.27 +* xampp-linux-1.5.1 +* zlib-1.2.3 diff --git a/doc/updated-sources.txt_old b/doc/updated-sources.txt_old new file mode 100644 index 0000000000..65042b770d --- /dev/null +++ b/doc/updated-sources.txt_old @@ -0,0 +1,124 @@ +Dateien IPCOP_v1_4_10_FINAL/config/cfgroot/general-functions.pl und ipfire-1.4.11/config/cfgroot/general-functions.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/config/cfgroot/header-menu.pl und ipfire-1.4.11/config/cfgroot/header-menu.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/config/cfgroot/proxy-acl und ipfire-1.4.11/config/cfgroot/proxy-acl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/config/etc/inittab und ipfire-1.4.11/config/etc/inittab sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.alpha und ipfire-1.4.11/config/kernel/kernel.config.alpha sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.i386 und ipfire-1.4.11/config/kernel/kernel.config.i386 sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.i386.installer und ipfire-1.4.11/config/kernel/kernel.config.i386.installer sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.i386.smp und ipfire-1.4.11/config/kernel/kernel.config.i386.smp sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/config/ssl/openssl.cnf und ipfire-1.4.11/config/ssl/openssl.cnf sind verschieden. +Nur in ipfire-1.4.11/doc: make.sh-usage. +Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/aliases.cgi und ipfire-1.4.11/html/cgi-bin/aliases.cgi sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/backup.cgi und ipfire-1.4.11/html/cgi-bin/backup.cgi sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/credits.cgi und ipfire-1.4.11/html/cgi-bin/credits.cgi sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/ddns.cgi und ipfire-1.4.11/html/cgi-bin/ddns.cgi sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/dhcp.cgi und ipfire-1.4.11/html/cgi-bin/dhcp.cgi sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/logs.cgi/log.dat und ipfire-1.4.11/html/cgi-bin/logs.cgi/log.dat sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/pppsetup.cgi und ipfire-1.4.11/html/cgi-bin/pppsetup.cgi sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/proxy.cgi und ipfire-1.4.11/html/cgi-bin/proxy.cgi sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/shutdown.cgi und ipfire-1.4.11/html/cgi-bin/shutdown.cgi sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/updates.cgi und ipfire-1.4.11/html/cgi-bin/updates.cgi sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/vpnmain.cgi und ipfire-1.4.11/html/cgi-bin/vpnmain.cgi sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/bz/install/lang_bz.c und ipfire-1.4.11/langs/bz/install/lang_bz.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/cs/install/lang_cs.c und ipfire-1.4.11/langs/cs/install/lang_cs.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/da/cgi-bin/da.pl und ipfire-1.4.11/langs/da/cgi-bin/da.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/da/install/lang_da.c und ipfire-1.4.11/langs/da/install/lang_da.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/de/cgi-bin/de.pl und ipfire-1.4.11/langs/de/cgi-bin/de.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/de/install/lang_de.c und ipfire-1.4.11/langs/de/install/lang_de.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/el/cgi-bin/el.pl und ipfire-1.4.11/langs/el/cgi-bin/el.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/el/install/lang_el.c und ipfire-1.4.11/langs/el/install/lang_el.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/en/cgi-bin/en.pl und ipfire-1.4.11/langs/en/cgi-bin/en.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/en/install/lang_en.c und ipfire-1.4.11/langs/en/install/lang_en.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/es/cgi-bin/es.pl und ipfire-1.4.11/langs/es/cgi-bin/es.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/es/install/lang_es.c und ipfire-1.4.11/langs/es/install/lang_es.c sind verschieden. +Nur in ipfire-1.4.11/langs: fa. +Dateien IPCOP_v1_4_10_FINAL/langs/fi/cgi-bin/fi.pl und ipfire-1.4.11/langs/fi/cgi-bin/fi.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/fi/install/lang_fi.c und ipfire-1.4.11/langs/fi/install/lang_fi.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/fr/cgi-bin/fr.pl und ipfire-1.4.11/langs/fr/cgi-bin/fr.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/fr/install/lang_fr.c und ipfire-1.4.11/langs/fr/install/lang_fr.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/hu/install/lang_hu.c und ipfire-1.4.11/langs/hu/install/lang_hu.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/it/install/lang_it.c und ipfire-1.4.11/langs/it/install/lang_it.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/la/install/lang_la.c und ipfire-1.4.11/langs/la/install/lang_la.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/list und ipfire-1.4.11/langs/list sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/nl/cgi-bin/nl.pl und ipfire-1.4.11/langs/nl/cgi-bin/nl.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/nl/install/lang_nl.c und ipfire-1.4.11/langs/nl/install/lang_nl.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/no/cgi-bin/no.pl und ipfire-1.4.11/langs/no/cgi-bin/no.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/no/install/lang_no.c und ipfire-1.4.11/langs/no/install/lang_no.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/pl/install/lang_pl.c und ipfire-1.4.11/langs/pl/install/lang_pl.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/pt/install/lang_pt.c und ipfire-1.4.11/langs/pt/install/lang_pt.c sind verschieden. +Nur in ipfire-1.4.11/langs: sk. +Dateien IPCOP_v1_4_10_FINAL/langs/so/install/lang_so.c und ipfire-1.4.11/langs/so/install/lang_so.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/sv/cgi-bin/sv.pl und ipfire-1.4.11/langs/sv/cgi-bin/sv.pl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/sv/install/lang_sv.c und ipfire-1.4.11/langs/sv/install/lang_sv.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/tr/install/lang_tr.c und ipfire-1.4.11/langs/tr/install/lang_tr.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/langs/vi/install/lang_vi.c und ipfire-1.4.11/langs/vi/install/lang_vi.c sind verschieden. +Nur in ipfire-1.4.11/lfs: as86. +Dateien IPCOP_v1_4_10_FINAL/lfs/boot.img und ipfire-1.4.11/lfs/boot.img sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/cdrom und ipfire-1.4.11/lfs/cdrom sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/Config und ipfire-1.4.11/lfs/Config sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/configroot und ipfire-1.4.11/lfs/configroot sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/coreutils und ipfire-1.4.11/lfs/coreutils sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/driver.img und ipfire-1.4.11/lfs/driver.img sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/eciadsl und ipfire-1.4.11/lfs/eciadsl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/gcc und ipfire-1.4.11/lfs/gcc sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/hdparm und ipfire-1.4.11/lfs/hdparm sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/iana-etc und ipfire-1.4.11/lfs/iana-etc sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/initrd und ipfire-1.4.11/lfs/initrd sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/installer und ipfire-1.4.11/lfs/installer sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/ipac-ng und ipfire-1.4.11/lfs/ipac-ng sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/iptables und ipfire-1.4.11/lfs/iptables sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/linux und ipfire-1.4.11/lfs/linux sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/man-pages und ipfire-1.4.11/lfs/man-pages sind verschieden. +Nur in ipfire-1.4.11/lfs: mbr. +Nur in ipfire-1.4.11/lfs: ndiswrapper. +Dateien IPCOP_v1_4_10_FINAL/lfs/openssl und ipfire-1.4.11/lfs/openssl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/openswan und ipfire-1.4.11/lfs/openswan sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/rrdtool und ipfire-1.4.11/lfs/rrdtool sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/scsi.img und ipfire-1.4.11/lfs/scsi.img sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/setup und ipfire-1.4.11/lfs/setup sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/stage2 und ipfire-1.4.11/lfs/stage2 sind verschieden. +Nur in ipfire-1.4.11/lfs: strip. +Dateien IPCOP_v1_4_10_FINAL/lfs/tar und ipfire-1.4.11/lfs/tar sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/tcl und ipfire-1.4.11/lfs/tcl sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/util-linux und ipfire-1.4.11/lfs/util-linux sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/vlan und ipfire-1.4.11/lfs/vlan sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/lfs/wireless und ipfire-1.4.11/lfs/wireless sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/make.sh und ipfire-1.4.11/make.sh sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/config.c und ipfire-1.4.11/src/install+setup/install/config.c sind verschieden. +Nur in ipfire-1.4.11/src/install+setup/install: install2.c. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/install.h und ipfire-1.4.11/src/install+setup/install/install.h sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/main.c und ipfire-1.4.11/src/install+setup/install/main.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/Makefile und ipfire-1.4.11/src/install+setup/install/Makefile sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/nic.c und ipfire-1.4.11/src/install+setup/install/nic.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/pcmcia.c und ipfire-1.4.11/src/install+setup/install/pcmcia.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/scsi.c und ipfire-1.4.11/src/install+setup/install/scsi.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/usb.c und ipfire-1.4.11/src/install+setup/install/usb.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/libsmooth/main.c und ipfire-1.4.11/src/install+setup/libsmooth/main.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/libsmooth/Makefile und ipfire-1.4.11/src/install+setup/libsmooth/Makefile sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/setup/main.c und ipfire-1.4.11/src/install+setup/setup/main.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/install+setup/setup/networking.c und ipfire-1.4.11/src/install+setup/setup/networking.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/ipcopbackup.c und ipfire-1.4.11/src/misc-progs/ipcopbackup.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/ipcopbkcfg.c und ipfire-1.4.11/src/misc-progs/ipcopbkcfg.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/ipcoprscfg.c und ipfire-1.4.11/src/misc-progs/ipcoprscfg.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/Makefile und ipfire-1.4.11/src/misc-progs/Makefile sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/setfilters.c und ipfire-1.4.11/src/misc-progs/setfilters.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/setuid.c und ipfire-1.4.11/src/misc-progs/setuid.c sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/setuid.h und ipfire-1.4.11/src/misc-progs/setuid.h sind verschieden. +Nur in ipfire-1.4.11/src/patches: ipac-ng-1.31-fetchcounter.patch. +Nur in ipfire-1.4.11/src/patches: ipac-ng-1.31-iptables-1.3.1.patch. +Nur in ipfire-1.4.11/src/patches: iptables-1.3.4-old-string.patch. +Nur in ipfire-1.4.11/src/patches: linux-2.4-seg-4.patch. +Dateien IPCOP_v1_4_10_FINAL/src/patches/patch-o-matic-ng-20040621_nf-log_2.4.29.patch und ipfire-1.4.11/src/patches/patch-o-matic-ng-20040621_nf-log_2.4.29.patch sind verschieden. +Nur in IPCOP_v1_4_10_FINAL/src/patches: pomng.fix. +Nur in ipfire-1.4.11/src/patches: pom-ng_proc-net-conntrack-permissions.patch. +Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.firewall und ipfire-1.4.11/src/rc.d/rc.firewall sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.red und ipfire-1.4.11/src/rc.d/rc.red sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.sysinit und ipfire-1.4.11/src/rc.d/rc.sysinit sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.updatered und ipfire-1.4.11/src/rc.d/rc.updatered sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/ROOTFILES.alpha und ipfire-1.4.11/src/ROOTFILES.alpha sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/ROOTFILES.i386 und ipfire-1.4.11/src/ROOTFILES.i386 sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/scripts/httpscert und ipfire-1.4.11/src/scripts/httpscert sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/scripts/makegraphs und ipfire-1.4.11/src/scripts/makegraphs sind verschieden. +Dateien IPCOP_v1_4_10_FINAL/src/scripts/setddns.pl und ipfire-1.4.11/src/scripts/setddns.pl sind verschieden. +Nur in ipfire-1.4.11/src/scripts: upgrade. +Nur in ipfire-1.4.11/updates: 1.4.11. diff --git a/html/CVS/Entries b/html/CVS/Entries new file mode 100644 index 0000000000..aaa91821aa --- /dev/null +++ b/html/CVS/Entries @@ -0,0 +1,2 @@ +D/cgi-bin//// +D/html//// diff --git a/html/CVS/Repository b/html/CVS/Repository new file mode 100644 index 0000000000..f93ea16971 --- /dev/null +++ b/html/CVS/Repository @@ -0,0 +1 @@ +ipcop/html diff --git a/html/CVS/Root b/html/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/html/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/html/CVS/Tag b/html/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/html/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/html/cgi-bin/CVS/Entries b/html/cgi-bin/CVS/Entries new file mode 100644 index 0000000000..8c8933b86c --- /dev/null +++ b/html/cgi-bin/CVS/Entries @@ -0,0 +1,36 @@ +/aliases.cgi/1.5.2.14/Fri Jan 13 20:14:48 2006//TIPCOP_v1_4_0 +/backup.cgi/1.2.2.15/Sun Jan 29 15:31:49 2006//TIPCOP_v1_4_0 +/base.cgi/1.1.2.10/Thu Nov 3 19:20:50 2005//TIPCOP_v1_4_0 +/changepw.cgi/1.4.2.6/Mon Mar 7 21:28:03 2005//TIPCOP_v1_4_0 +/connections.cgi/1.6.2.11/Thu Feb 24 07:44:35 2005//TIPCOP_v1_4_0 +/credits.cgi/1.11.2.30/Sun Jan 8 13:33:36 2006//TIPCOP_v1_4_0 +/ddns.cgi/1.7.2.41/Tue Feb 7 01:29:47 2006//TIPCOP_v1_4_0 +/dhcp.cgi/1.14.2.81/Fri Jan 20 12:05:29 2006//TIPCOP_v1_4_0 +/dial.cgi/1.4.2.3/Tue Feb 22 22:21:55 2005//TIPCOP_v1_4_0 +/dmzholes.cgi/1.9.2.16/Tue Oct 18 17:05:27 2005//TIPCOP_v1_4_0 +/graphs.cgi/1.9.2.6/Tue Feb 22 22:21:55 2005//TIPCOP_v1_4_0 +/gui.cgi/1.2.2.17/Wed Jul 6 09:21:22 2005//TIPCOP_v1_4_0 +/hosts.cgi/1.4.2.20/Sat Nov 5 15:46:25 2005//TIPCOP_v1_4_0 +/ids.cgi/1.8.2.18/Wed Jul 27 21:35:22 2005//TIPCOP_v1_4_0 +/index.cgi/1.15.2.18/Sat Sep 17 13:51:47 2005//TIPCOP_v1_4_0 +/ipinfo.cgi/1.4.2.3/Tue Feb 22 22:21:56 2005//TIPCOP_v1_4_0 +/modem.cgi/1.4.2.7/Tue Feb 22 22:21:56 2005//TIPCOP_v1_4_0 +/netstatus.cgi/1.9.2.20/Sat Nov 5 15:46:25 2005//TIPCOP_v1_4_0 +/networks.cgi/1.2.2.3/Fri Apr 29 23:37:06 2005//TIPCOP_v1_4_0 +/optionsfw.cgi/1.1.2.10/Mon Oct 3 00:34:10 2005//TIPCOP_v1_4_0 +/portfw.cgi/1.5.2.18/Mon May 2 16:19:49 2005//TIPCOP_v1_4_0 +/pppsetup.cgi/1.17.2.49/Thu Dec 1 16:20:35 2005//TIPCOP_v1_4_0 +/proxy.cgi/1.13.2.23/Sun Jan 29 09:29:47 2006//TIPCOP_v1_4_0 +/proxygraphs.cgi/1.2.2.5/Tue Feb 22 22:21:56 2005//TIPCOP_v1_4_0 +/remote.cgi/1.6.2.8/Tue Feb 22 22:21:56 2005//TIPCOP_v1_4_0 +/services.cgi/1.2.2.3/Fri Apr 29 23:37:07 2005//TIPCOP_v1_4_0 +/shaping.cgi/1.3.2.15/Sun Feb 27 13:42:05 2005//TIPCOP_v1_4_0 +/shutdown.cgi/1.5.2.10/Mon Jan 2 16:21:00 2006//TIPCOP_v1_4_0 +/status.cgi/1.6.2.7/Thu Feb 24 07:44:35 2005//TIPCOP_v1_4_0 +/time.cgi/1.4.2.11/Sat May 28 12:16:18 2005//TIPCOP_v1_4_0 +/updates.cgi/1.9.2.22/Thu Dec 1 20:41:53 2005//TIPCOP_v1_4_0 +/upload.cgi/1.2.2.21/Sun Aug 14 23:43:38 2005//TIPCOP_v1_4_0 +/vpnmain.cgi/1.10.2.69/Tue Jan 31 02:07:19 2006//TIPCOP_v1_4_0 +/wireless.cgi/1.4.2.15/Sat Jun 11 12:14:49 2005//TIPCOP_v1_4_0 +/xtaccess.cgi/1.6.2.15/Sat Mar 5 08:44:32 2005//TIPCOP_v1_4_0 +D/logs.cgi//// diff --git a/html/cgi-bin/CVS/Repository b/html/cgi-bin/CVS/Repository new file mode 100644 index 0000000000..d18456216e --- /dev/null +++ b/html/cgi-bin/CVS/Repository @@ -0,0 +1 @@ +ipcop/html/cgi-bin diff --git a/html/cgi-bin/CVS/Root b/html/cgi-bin/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/html/cgi-bin/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/html/cgi-bin/CVS/Tag b/html/cgi-bin/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/html/cgi-bin/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/html/cgi-bin/aliases.cgi b/html/cgi-bin/aliases.cgi new file mode 100644 index 0000000000..040eb2999a --- /dev/null +++ b/html/cgi-bin/aliases.cgi @@ -0,0 +1,482 @@ +#!/usr/bin/perl +# +# IPCop CGI's - aliases.cgi +# +# This code is distributed under the terms of the GPL +# +# (c) Steve Bootes 2002/04/13 - Manage IP Aliases +# +# $Id: aliases.cgi,v 1.5.2.14 2006/01/13 20:14:48 eoberlander Exp $ + + +# to fully troubleshot your code, uncomment diagnostics, Carp and cluck lines +#use diagnostics; # need to add the file /usr/lib/perl5/5.8.x/pods/perldiag.pod before to work +# next look at /var/log/httpd/error_log , http://www.perl.com/pub/a/2002/05/07/mod_perl.html may help +use warnings; +use strict; +#use Carp (); +#local $SIG{__WARN__} = \&Carp::cluck; + +require 'CONFIG_ROOT/general-functions.pl'; # replace CONFIG_ROOT with /var/ipcop in case of manual install +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::colouryellow} ); + @dummy = ( ${Header::table1colour} ); + @dummy = ( ${Header::table2colour} ); +undef (@dummy); + +# Files used +my $setting = "${General::swroot}/ethernet/settings"; +our $datafile = "${General::swroot}/ethernet/aliases"; + + +our %settings=(); +#Settings1 + +#Settings2 for editing the multi-line list +#Must not be saved ! +$settings{'IP'} = ''; +$settings{'ENABLED'} = 'off'; # Every check box must be set to off +$settings{'NAME'} = ''; +my @nosaved=('IP','ENABLED','NAME'); # List here ALL setting2 fields. Mandatory + +$settings{'ACTION'} = ''; # add/edit/remove +$settings{'KEY1'} = ''; # point record for ACTION + +#Define each field that can be used to sort columns +my $sortstring='^IP|^NAME'; +my $errormessage = ''; +my $warnmessage = ''; + +&Header::showhttpheaders(); + +# Read needed Ipcop netsettings +my %netsettings=(); +$netsettings{'SORT_ALIASES'} = 'NAME'; # default sort +&General::readhash($setting, \%netsettings); + +#Get GUI values +&Header::getcgihash(\%settings); + +# Load multiline data +our @current = (); +if (open(FILE, "$datafile")) { + @current = ; + close (FILE); +} + +# +# Check Settings1 first because they are needed before working on @current +# +# Remove if no Setting1 needed +# +if ($settings{'ACTION'} eq $Lang::tr{'save'}) { + + # + #Validate static Settings1 here + # + + unless ($errormessage) { # Everything is ok, save settings + #map (delete ($settings{$_}) ,(@nosaved,'ACTION','KEY1'));# Must never be saved + #&General::writehash($setting, \%settings); # Save good settings + #$settings{'ACTION'} = $Lang::tr{'save'}; # Recreate 'ACTION' + #map ($settings{$_}= '',(@nosaved,'KEY1')); # and reinit var to empty + + # Rebuild configuration file if needed + &BuildConfiguration; + } + + ERROR: # Leave the faulty field untouched +} else { + #&General::readhash($setting, \%settings); # Get saved settings and reset to good if needed +} + +## Now manipulate the multi-line list with Settings2 +# Basic actions are: +# toggle the check box +# add/update a new line +# begin editing a line +# remove a line + + +# Toggle enable/disable field. Field is in second position +if ($settings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) { + #move out new line + chomp(@current[$settings{'KEY1'}]); + my @temp = split(/\,/,@current[$settings{'KEY1'}]); + $temp[1] = $temp[1] eq 'on' ? '' : 'on'; # Toggle the field + @current[$settings{'KEY1'}] = join (',',@temp)."\n"; + $settings{'KEY1'} = ''; # End edit mode + + &General::log($Lang::tr{'ip alias changed'}); + + #Save current + open(FILE, ">$datafile") or die 'Unable to open aliases file.'; + print FILE @current; + close(FILE); + + # Rebuild configuration file + &BuildConfiguration; +} + +if ($settings{'ACTION'} eq $Lang::tr{'add'}) { + # Validate inputs + if (! &General::validip($settings{'IP'})) {$errormessage = "invalid ip"}; + $settings{'NAME'} = &Header::cleanhtml($settings{'NAME'}); + + # Make sure we haven't duplicated an alias or RED + my $spacer=''; + if ($settings{'IP'} eq $netsettings{'RED_ADDRESS'}) { + $errormessage = $Lang::tr{'duplicate ip'} . ' (RED)'; + $spacer=" & "; + } + my $idx=0; + foreach my $line (@current) { + chomp ($line); + my @temp = split (/\,/, $line); + if ( ($settings{'KEY1'} eq '')||(($settings{'KEY1'} ne '') && ($settings{'KEY1'} != $idx))) { # update + if ($temp[0] eq $settings{'IP'}) { + $errormessage .= $spacer.$Lang::tr{'duplicate ip'}; + $spacer=" & "; + } + if ($temp[2] eq $settings{'NAME'} && $temp[2] ne '') { + $errormessage .= $spacer.$Lang::tr{'duplicate name'}; + $spacer=" & "; + } + } + $idx++; + } + unless ($errormessage) { + if ($settings{'KEY1'} eq '') { #add or edit ? + unshift (@current, "$settings{'IP'},$settings{'ENABLED'},$settings{'NAME'}\n"); + &General::log($Lang::tr{'ip alias added'}); + } else { + @current[$settings{'KEY1'}] = "$settings{'IP'},$settings{'ENABLED'},$settings{'NAME'}\n"; + $settings{'KEY1'} = ''; # End edit mode + &General::log($Lang::tr{'ip alias changed'}); + } + + # Write changes to config file. + &SortDataFile; # sort newly added/modified entry + + &BuildConfiguration; # then re-build conf which use new data + +## +## if entering data line is repetitive, choose here to not erase fields between each addition +## + map ($settings{$_}='' ,@nosaved); # Clear fields + } +} + +if ($settings{'ACTION'} eq $Lang::tr{'edit'}) { + #move out new line + my $line = @current[$settings{'KEY1'}]; # KEY1 is the index in current + chomp($line); + my @temp = split(/\,/, $line); + +## +## move data fields to Setting2 for edition +## + $settings{'IP'}=$temp[0]; # Prepare the screen for editing + $settings{'ENABLED'}=$temp[1]; + $settings{'NAME'}=$temp[2]; +} + +if ($settings{'ACTION'} eq $Lang::tr{'remove'}) { + splice (@current,$settings{'KEY1'},1); # Delete line + open(FILE, ">$datafile") or die 'Unable to open aliases file.'; + print FILE @current; + close(FILE); + $settings{'KEY1'} = ''; # End remove mode + &General::log($Lang::tr{'ip alias removed'}); + + &BuildConfiguration; # then re-build conf which use new data +} + + + +## Check if sorting is asked +# If same column clicked, reverse the sort. +if ($ENV{'QUERY_STRING'} =~ /$sortstring/ ) { + my $newsort=$ENV{'QUERY_STRING'}; + my $actual=$netsettings{'SORT_ALIASES'}; + #Reverse actual sort ? + if ($actual =~ $newsort) { + my $Rev=''; + if ($actual !~ 'Rev') { + $Rev='Rev'; + } + $newsort.=$Rev; + } + $netsettings{'SORT_ALIASES'}=$newsort; + &General::writehash($setting, \%netsettings); + &SortDataFile; + $settings{'ACTION'} = 'SORT'; # Recreate 'ACTION' +} + +# Default initial value +if ($settings{'ACTION'} eq '' ) { # First launch from GUI + $settings{'ENABLED'} ='on'; +} + +&Header::openpage($Lang::tr{'external aliases configuration'}, 1, ''); +&Header::openbigbox('100%', 'left', '', $errormessage); +my %checked =(); # Checkbox manipulations + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage "; + &Header::closebox(); +} +unless (( $netsettings{'CONFIG_TYPE'} =~ /^(2|3|6|7)$/ ) && ($netsettings{'RED_TYPE'} eq 'STATIC')) +{ + &Header::openbox('100%', 'left', $Lang::tr{'capswarning'}); + print < + + $Lang::tr{'aliases not active'} + + +END +; + &Header::closebox(); +} + +# +# Second check box is for editing the list +# +$checked{'ENABLED'}{'on'} = ($settings{'ENABLED'} eq '') ? '' : "checked='checked'"; + +my $buttontext = $Lang::tr{'add'}; +if ($settings{'KEY1'} ne '') { + $buttontext = $Lang::tr{'update'}; + &Header::openbox('100%', 'left', $Lang::tr{'edit an existing alias'}); +} else { + &Header::openbox('100%', 'left', $Lang::tr{'add new alias'}); +} + +#Edited line number (KEY1) passed until cleared by 'save' or 'remove' or 'new sort order' +print < + + + + + + + + + + +
$Lang::tr{'name'}: *$Lang::tr{'alias ip'}: $Lang::tr{'enabled'} 
+
+ + + + + +
* $Lang::tr{'this field may be blank'}
+ +END +; +&Header::closebox(); + +# +# Third box shows the list, in columns +# +# Columns headers may content a link. In this case it must be named in $sortstring +# +&Header::openbox('100%', 'left', $Lang::tr{'current aliases'}); +print < + + $Lang::tr{'name'} + $Lang::tr{'alias ip'} + $Lang::tr{'action'} + +END +; + +# +# Print each line of @current list +# +# each data line is splitted into @temp. +# + +my $key = 0; +foreach my $line (@current) { + chomp($line); + my @temp = split(/\,/,$line); + + #Choose icon for checkbox + my $gif = ''; + my $gdesc = ''; + if ($temp[1] eq "on") { + $gif = 'on.gif'; + $gdesc = $Lang::tr{'click to disable'}; + } else { + $gif = 'off.gif'; + $gdesc = $Lang::tr{'click to enable'}; + } + + #Colorize each line + if ($settings{'KEY1'} eq $key) { + print ""; + } elsif ($key % 2) { + print ""; + } else { + print ""; + } + + print <$temp[2] +$temp[0] + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + +END +; + $key++; +} +print ""; + +# If table contains entries, print 'Key to action icons' +if ($key) { +print < + +  $Lang::tr{'legend'}:  + $Lang::tr{ + $Lang::tr{'click to disable'} +    + $Lang::tr{ + $Lang::tr{'click to enable'} +    + $Lang::tr{ + $Lang::tr{'edit'} +    + $Lang::tr{ + $Lang::tr{'remove'} + + +END +; +} + +&Header::closebox(); +&Header::closebigbox(); +&Header::closepage(); + +## Ouf it's the end ! + + + +# Sort the "current" array according to choices +sub SortDataFile +{ + our %entries = (); + + # Sort pair of record received in $a $b special vars. + # When IP is specified use numeric sort else alpha. + # If sortname ends with 'Rev', do reverse sort. + # + sub fixedleasesort { + my $qs=''; # The sort field specified minus 'Rev' + if (rindex ($netsettings{'SORT_ALIASES'},'Rev') != -1) { + $qs=substr ($netsettings{'SORT_ALIASES'},0,length($netsettings{'SORT_ALIASES'})-3); + if ($qs eq 'IP') { + my @a = split(/\./,$entries{$a}->{$qs}); + my @b = split(/\./,$entries{$b}->{$qs}); + ($b[0]<=>$a[0]) || + ($b[1]<=>$a[1]) || + ($b[2]<=>$a[2]) || + ($b[3]<=>$a[3]); + } else { + $entries{$b}->{$qs} cmp $entries{$a}->{$qs}; + } + } else { #not reverse + $qs=$netsettings{'SORT_ALIASES'}; + if ($qs eq 'IP') { + my @a = split(/\./,$entries{$a}->{$qs}); + my @b = split(/\./,$entries{$b}->{$qs}); + ($a[0]<=>$b[0]) || + ($a[1]<=>$b[1]) || + ($a[2]<=>$b[2]) || + ($a[3]<=>$b[3]); + } else { + $entries{$a}->{$qs} cmp $entries{$b}->{$qs}; + } + } + } + + #Use an associative array (%entries) + my $key = 0; + foreach my $line (@current) { + chomp( $line); #remove newline because can be on field 5 or 6 (addition of REMARK) + my @temp = split (',',$line); + + # Build a pair 'Field Name',value for each of the data dataline. + # Each SORTABLE field must have is pair. + # Other data fields (non sortable) can be grouped in one + + # Exemple + # F1,F2,F3,F4,F5 only F1 F2 for sorting + # my @record = ('KEY',$key++, + # 'F1',$temp[0], + # 'F2',$temp[1], + # 'DATA',join(',',@temp[2..4]) ); #group remainning values, with separator (,) + + # The KEY,key record permits doublons. If removed, then F1 becomes the key without doublon permitted. + + + my @record = ('KEY',$key++,'IP',$temp[0],'ENABLED',$temp[1],'NAME',$temp[2]); + my $record = {}; # create a reference to empty hash + %{$record} = @record; # populate that hash with @record + $entries{$record->{KEY}} = $record; # add this to a hash of hashes + } + + open(FILE, ">$datafile") or die 'Unable to open aliases file.'; + + # Each field value is printed , with the newline ! Don't forget separator and order of them. + foreach my $entry (sort fixedleasesort keys %entries) { + print FILE "$entries{$entry}->{IP},$entries{$entry}->{ENABLED},$entries{$entry}->{NAME}\n"; + } + + close(FILE); + # Reload sorted @current + open (FILE, "$datafile"); + @current = ; + close (FILE); +} + +# +# Build the configuration file for application aliases +# +sub BuildConfiguration { + # Restart service associated with this + system '/usr/local/bin/setaliases'; +} diff --git a/html/cgi-bin/backup.cgi b/html/cgi-bin/backup.cgi new file mode 100644 index 0000000000..dd9b149af8 --- /dev/null +++ b/html/cgi-bin/backup.cgi @@ -0,0 +1,652 @@ +#!/usr/bin/perl +# +# IPCop CGI's - backup.cgi: manage import/export of configuration files +# +# This code is distributed under the terms of the GPL +# +# (c) The IPCop Team +# 2005 Franck Bourdonnec, major rewrite +# +# $Id: backup.cgi,v 1.2.2.15 2006/01/29 15:31:49 eoberlander Exp $ +# +# + + +# to fully troubleshot your code, uncomment diagnostics, Carp and cluck lines +# use diagnostics; # need to add the file /usr/lib/perl5/5.8.x/pods/perldiag.pod before to work +# next look at /var/log/httpd/error_log , http://www.perl.com/pub/a/2002/05/07/mod_perl.html may help +#use warnings; +use strict; +#use Carp (); +#local $SIG{__WARN__} = \&Carp::cluck; +use File::Copy; +use Sys::Hostname; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my $errormessage = ''; +my $warnmessage = ''; +my $setdir = '/home/httpd/html/backup'; # location where sets are stored and imported +my $datafile = hostname() . '.dat'; # file containing data backup +my $datefile = $datafile . '.time'; # and creation date + +# ask if backup crypting key exists +my $tmpkeyfile = "$setdir/key"; # import the backup key + +# Get GUI values +my %settings = (); +&Header::getcgihash(\%settings, {'wantfile' => 1, 'filevar' => 'FH'}); + +## +## Backup key management +## + +# +# Export the key. root pw is required to avoid user 'noboby' uses the helper to read it and creates +# fake backup. +# +if ($settings{'ACTION'} eq $Lang::tr{'backup export key'}) { + + my $size = 0; + if ($settings{'PASSWORD1'} ne '' && $settings{'PASSWORD1'} ne $settings{'PASSWORD2'} ){ + $errormessage = $Lang::tr{'passwords do not match'} + } else { + my @lines = `/usr/local/bin/ipcopbackup -keycat $settings{'PASSWORD'}`; + # If previous operation succeded and the key need to be crypted, redo operation with pipe to openssl + if (@lines && $settings{'PASSWORD1'}) { + @lines = `/usr/local/bin/ipcopbackup -keycat $settings{'PASSWORD'}|openssl enc -a -e -aes256 -salt -pass pass:$settings{'PASSWORD1'} `; + } + if (@lines) { + use bytes; + foreach (@lines) {$size += length($_)}; + print "Pragma: no-cache\n"; + print "Cache-control: no-cache\n"; + print "Connection: close\n"; + print "Content-type: application/octet-stream\n"; + print "Content-Disposition: filename=backup.key\n"; + print "Content-Length: $size\n\n"; + print @lines; + exit (0); + } else { + $errormessage = $Lang::tr{'incorrect password'}; + } + } +} +# +# Import the key. Fail if key exists. This avoid creating fake backup. +# +if ($settings{'ACTION'} eq $Lang::tr{'backup import key'}) { + if (ref ($settings{'FH'}) ne 'Fh') { + $errormessage = $Lang::tr{'no cfg upload'}; + } else { + if (copy ($settings{'FH'}, $tmpkeyfile) != 1) { + $errormessage = $Lang::tr{'save error'}; + } else { + # if a password is given, decrypt the key received in $tmpkeyfile file with it. + # no error is produce if the password is wrong. + if ($settings{'PASSWORD1'}) { + my @lines = `openssl enc -a -d -aes256 -salt -pass pass:$settings{'PASSWORD1'} -in $tmpkeyfile`; + open(FILE,">$tmpkeyfile"); + print FILE @lines; + close (FILE); + } + $errormessage = &get_bk_error(system ('/usr/local/bin/ipcopbackup -key import')>>8); + } + } +} +# +# Import the key. Fail if key exists. Key is extracted from a non-encrypted backup (pre 1.4.10) +# +if ($settings{'ACTION'} eq $Lang::tr{'backup extract key'}) { + if (ref ($settings{'FH'}) ne 'Fh') { + $errormessage = $Lang::tr{'no cfg upload'}; + } else { + if (copy ($settings{'FH'}, '/tmp/tmptarfile.tgz') != 1) { + $errormessage = $Lang::tr{'save error'}; + } else { + system( "tar -C /tmp -xzf /tmp/tmptarfile.tgz */backup/backup.key;\ + mv -f /tmp${General::swroot}/backup/backup.key $tmpkeyfile;\ + rm -rf /tmp${General::swroot};\ + rm /tmp/tmptarfile.tgz"); + $errormessage = &get_bk_error(system ('/usr/local/bin/ipcopbackup -key import')>>8); + } + } +} +# +# Create the key. Cannot overwrite existing key to avoid difference with exported (saved) key +# +if ($settings{'ACTION'} eq $Lang::tr{'backup generate key'}) { + $errormessage = &get_bk_error(system('/usr/local/bin/ipcopbackup -key new')>>8); +} + +my $cryptkeymissing = system ('/usr/local/bin/ipcopbackup -key exist')>>8; + +&Header::showhttpheaders(); +if ($cryptkeymissing) { #If no key is present, force creation or import + &Header::openpage($Lang::tr{'backup configuration'}, 1, ''); + &Header::openbigbox('100%', 'left', '', $errormessage); + if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage "; + &Header::closebox(); + } + &Header::openbox('100%', 'left', $Lang::tr{'backup key'}); + print < + + + + + + + + + + + +
+ $Lang::tr{'backup explain key'}: +
    +
  • $Lang::tr{'backup explain key li1'} +
  • $Lang::tr{'backup explain key li2'} +
  • $Lang::tr{'backup explain key li3'} +
+
+ +
$Lang::tr{'backup key file'}: + + +
$Lang::tr{'backup protect key password'}: +
$Lang::tr{'backup clear archive'}: + + +
+ $Lang::tr{'notes'}: +
    +
  • $Lang::tr{'backup explain key no1'} +
  • $Lang::tr{'backup explain key no2'} +
+ +END +; + &floppybox(); + &Header::closebox(); + &Header::closebigbox(); + &Header::closepage(); + exit (0); +} + +## +## Sets management (create/delete/import/restore) +## + +erase_files ($setdir); #clean up + +# +# create new archive set +# +if ($settings{'ACTION'} eq $Lang::tr{'create'}) { + $errormessage = &get_bk_error(system('/usr/local/bin/ipcopbkcfg > /dev/null')>>8); + &import_set (" ".&Header::cleanhtml ($settings{'COMMENT'})) if (!$errormessage); +} +# +# delete a backup set +# +if ($settings{'ACTION'} eq $Lang::tr{'remove'}) { + erase_files (&Header::cleanhtml ($settings{'KEY'})); # remove files + rmdir($settings{'KEY'}); # remove directory +} +# +# import an archive set +# +if ($settings{'ACTION'} eq $Lang::tr{'import'}) { + if (ref ($settings{'FH'}) ne 'Fh') { + $errormessage = $Lang::tr{'no cfg upload'}; + } else { + if (!copy ($settings{'FH'}, "$setdir/$datafile")) { + $errormessage = $Lang::tr{'save error'}; + } else { + &import_set (' (imported)'); + } + } +} +# +# restore an archive +# +if ($settings{'ACTION'} eq $Lang::tr{'restore'}) { + if ($settings{'AreYouSure'} eq 'yes') { + if (!$cryptkeymissing) { # if keyfile exists + if (-e "$settings{'KEY'}/$datafile"){ # encrypted dat is required + copy_files($settings{'KEY'}, $setdir); # to working dir + $errormessage = get_rs_error(system("/usr/local/bin/ipcoprscfg" + . ($settings{'RESTOREHW'} eq 'on' ? ' --hardware' : '') + . ' >/dev/null')>>8); + if (!$errormessage) { + # restored ok, recommend restarting system + $warnmessage = $Lang::tr{'cfg restart'}; + } + erase_files ($setdir); #clean up + } else { + $errormessage = $Lang::tr{'missing dat'}."$settings{'KEY'}/$datafile"; + } + } else { # if keyfile does not exist + $errormessage = $Lang::tr{'backup missing key'}; + } + + } else { # not AreYouSure=yes + &Header::openpage($Lang::tr{'backup configuration'}, 1, ''); + &Header::openbigbox('100%', 'left'); + &Header::openbox('100%', 'left', $Lang::tr{'are you sure'}); + print < + + + + + + + + +
+ + + +
+ $Lang::tr{'restore hardware settings'}: +
+ +END +; + &Header::closebox(); + &Header::closebigbox(); + &Header::closepage(); + exit (0); + } +} +## +## Media management +## +# +# now build the list of removable device +# + +# Read partitions sizes registered with the system +my %partitions; +foreach my $li (`/usr/local/bin/ipcopbackup -proc partitions`) { # use suid helper... + # partitions{'sda1'} = 128M if /major minor blocks name/ + $partitions{$4} = &kmgt($3*1024,4) if ($li =~ /(\d+) +(\d+) +(\d+) +(.*)/); +} + +# Search usb-storage scsi device +my %medias; + +foreach (`/usr/local/bin/ipcopbackup -glob '/proc/scsi/usb-storage*/*'`) {# use suid helper... + my $m; + foreach ( `cat $_` ) { # list each line of information for the device: +# Host scsi0: usb-storage +# Vendor: SWISSBIT +# Product: Black Silver +# Serial Number: D0ED423A4F84A31E +# Protocol: Transparent SCSI +# Transport: Bulk +# GUID: 13706828d0ed423a4f84a31e +# Attached: Yes + + chomp; + my ($key,$val) = split(': ',$_,2); + $key =~ s/^ *//; # remove front space + + # convert 'scsi?' key to sda, sdb,... and use it as a %medias keyhash + if ($key =~ /Host scsi(.)/) { + $val = $m = 'sd' . chr(97+$1); + $key = 'Host'; + } + $medias{$m}{$key} = $val; # save data + } +} + +# +# Switch mounted media +# +if ($settings{'ACTION'} eq $Lang::tr{'mount'}) +{ + # Find what is really mounted under backup. Can be local hard disk or any removable media + my $mounted = &findmounted(); + #umount previous, even if same device already mouted. + system ("/usr/local/bin/ipcopbackup -U $mounted") if ($mounted ne $Lang::tr{'local hard disk'}); + $errormessage = `/usr/local/bin/ipcopbackup -M $settings{'SELECT'}` if (grep (/$settings{'SELECT'}/,%partitions)); +} +# +# Compute a full description of device +# +my $mounted = &findmounted(); +my $media_des = $mounted; # Description +if ($mounted ne $Lang::tr{'local hard disk'}) { + $_ = $mounted; # sda1 => sda + tr/0-9//d; + $media_des = "$medias{$_}{'Product'} ($media_des, $partitions{$mounted})"; +} +&Header::openpage($Lang::tr{'backup configuration'}, 1, ''); +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage "; + &Header::closebox(); +} + +$warnmessage = "$Lang::tr{'capswarning'}: $warnmessage

" if ($warnmessage); + +&Header::openbox('100%', 'left', $Lang::tr{'backup configuration'}); + +#Divide the window in two : left and right +print < + + $Lang::tr{'current media'}:$media_des + + $Lang::tr{'choose media'} + +END +; + +# Left part of window +print < +

    +
  • $Lang::tr{'backup sets'}: + + + + + +END +; + +# get list of available sets by globbing directories under $setdir +# External device (usk key) are mounted in $setdir. -R permits finding sets in hierarchy. +my $i = 0; +foreach my $set (`ls -Rt1 $setdir`) { + chop ($set); #remove ':' & newline from line + chop ($set); + if (-d $set && ($set =~ m!/.+/\d{8}_\d{6}! ) ) { # filter out things not sets ! + if ($i++ % 2) { + print ""; + } else { + print ""; + } + my $settime = read_timefile( "$set/$datefile", "$set/$datafile" ); + my $name = substr ($set,length($setdir)+1); + print< + $settime + + + + + + + + +EOF +; + } +} +print "
    $Lang::tr{'name'}$Lang::tr{'action'}
    +
    + + + +
    +
    + + +
    + + + +
    +
    " . ($i ? "
    " : "$Lang::tr{'empty'}!

    "); +print < +
  • $Lang::tr{'backup configuration'}
    + $Lang::tr{'description'}: + +

    +

    +
  • $Lang::tr{'backup import dat file'}:
    + + +
  • +
+EOF +; + +print ""; # Start right part (devices selection) +print $Lang::tr{'backup media info'}; + +print "
"; +print "
"; +my $nodev = 1; # nothing present +foreach my $media (keys %medias) { + if ( $medias{$media}{'Attached'} eq 'Yes') { # device is attached to USB bus ? + $nodev = 0; # at least one device present + my $checked = $medias{$media}{'Host'} eq $mounted ? "checked='checked'" : ''; + print ""; + print "$medias{$media}{'Product'}
"; + # list attached partitions to this media + foreach my $part (sort (keys (%partitions))) { + if ($part =~ /$medias{$media}{'Host'}./) { + my $checked = $part eq $mounted ? "checked='checked'" : ''; + print "   $part ($partitions{$part})
"; + } + } + } +} +if ($nodev) { + print "
$Lang::tr{'insert removable device'}"; + print "
"; + print "
"; +} else { + #Add an entry for the local disk + my $checked = $Lang::tr{'local hard disk'} eq $mounted ? "checked='checked'" : ''; + print ""; + print "$Lang::tr{'local hard disk'}"; + print "
"; + print "
"; +} +print "
"; +print "
"; +# +#Backup key +# +print< +
+ $Lang::tr{'backup key'}
+ $Lang::tr{'backup key info'}
+ + + +
$Lang::tr{'root user password'}: + + +
$Lang::tr{'backup protect key password'}: + +
$Lang::tr{'again'} + +
+
+ +EOF +; +# End of right table +print ""; + +&floppybox(); + +&Header::closebox(); +&Header::closebigbox(); +&Header::closepage(); + +sub floppybox { + print < +
+ + + + + + + + +
+ $Lang::tr{'backup to floppy'} +
+ $Lang::tr{'insert floppy'} + + +
+
+END +; + print "$Lang::tr{'alt information'}
" .
+    	    `/usr/local/bin/ipcopbackup -savecfg floppy` .
+	    ' 
' if ($settings{'ACTION'} eq $Lang::tr{'backup to floppy'} ); +} + +# Return device name of what is mounted under 'backup' +sub findmounted() { + my $mounted = `mount|grep ' /home/httpd/html/backup '`; + if ($mounted) { # extract device name + $mounted =~ m!^/dev/(.*) on!; # device on mountmoint options + return $1; + } else { # it's the normal subdir + return $Lang::tr{'local hard disk'}; + } +} +# read and return a date/time string from a time file +sub read_timefile() { + my $fname = shift; # name of file to read from + my $fname2 = shift; # if first file doesn't exist, get date of this file + + my $dt; + if (defined(open(FH, "<$fname"))) { + $dt = ; + chomp $dt; + close(FH); + } else { + $dt = &get_fdate($fname2); # get file date/time + write_timefile($fname, $dt); # write to expected time file + } + return $dt; +} +# write a date/time string to a time file +sub write_timefile() { + my $fname = shift; # name of file to write to + my $dt = shift; # date/time string to write + + if (open(FH, ">$fname")) { + print FH "$dt\n"; + close(FH); + } +} +# move a dat file without time stamp to subdir +sub import_set() { + my $dt = get_fdate("$setdir/$datafile") . shift; + &write_timefile("$setdir/$datefile", $dt); + + # create set directory + my $setname = "$setdir/" . get_ddate("$setdir/$datafile"); + mkdir($setname); + + # move files to the new set directory + copy_files($setdir, $setname); + erase_files ($setdir); +} + +# get date/time string from file +sub get_fdate() { + my $fname = shift; + open(DT, "/bin/date -r $fname|"); + my $dt =
; + close(DT); + chomp $dt; + $dt =~ s/\s+/ /g; # remove duplicate spaces + return $dt; +} +# get date/time string from file for use as directory name +sub get_ddate() { + my $fname = shift; + open(DT, "/bin/date -r $fname +%Y%m%d_%H%M%S|"); + my $dt =
; + close(DT); + chomp $dt; + return $dt; +} +# copy archive files from source directory to destination directory +sub copy_files() { + my $src_dir = shift; + my $dest_dir = shift; + map (copy ("$src_dir/$_", "$dest_dir/$_"), ($datafile, $datefile) ); +} +# erase set files +sub erase_files() { + my $src_dir = shift; + map (unlink ("$src_dir/$_"), ($datafile, $datefile)); +} +# get backup error text +sub get_bk_error() { + my $exit_code = shift || return ''; + if ($exit_code == 0) { + return ''; + } elsif ($exit_code == 2) { + return $Lang::tr{'err bk 2 key'}; + } elsif ($exit_code == 3) { + return $Lang::tr{'err bk 3 tar'}; + } elsif ($exit_code == 4) { + return $Lang::tr{'err bk 4 gz'}; + } elsif ($exit_code == 5) { + return $Lang::tr{'err bk 5 encrypt'}; + } else { + return $Lang::tr{'err bk 1'}; + } +} +# show any restore errors +sub get_rs_error() { + + my $exit_code = shift || return ''; + if ($exit_code == 0) { + return ''; + } elsif ($exit_code == 6) { + return $Lang::tr{'err rs 6 decrypt'}; + } elsif ($exit_code == 7) { + return $Lang::tr{'err rs 7 untartst'}; + } elsif ($exit_code == 8) { + return $Lang::tr{'err rs 8 untar'}; + } elsif ($exit_code == 9) { + return $Lang::tr{'missing dat'}; + } else { + return $Lang::tr{'err rs 1'}."($exit_code)"; + } +} +sub kmgt { + my ($value,$length,$opt_U) = @_; + if ( $value > 10**( $length + 8 ) or $opt_U eq 'T' ) { + return sprintf( "%d%s", int( ( $value / 1024**4 ) + .5 ), 'T' ); + } elsif ( $value > 10**( $length + 5 ) or $opt_U eq 'G' ) { + return sprintf( "%d%s", int( ( $value / 1024**3 ) + .5 ), 'G' ); + } elsif ( $value > 10**( $length + 2 ) or $opt_U eq 'M' ) { + return sprintf( "%d%s", int( ( $value / 1024**2 ) + .5 ), 'M' ); + } elsif ( $value > 10**($length) or $opt_U eq 'K' ) { + return sprintf( "%d%s", int( ( $value / 1024 ) + .5 ), 'K' ); + } else { + return $value; + } +} + +1; diff --git a/html/cgi-bin/base.cgi b/html/cgi-bin/base.cgi new file mode 100644 index 0000000000..cc11800f3c --- /dev/null +++ b/html/cgi-bin/base.cgi @@ -0,0 +1,488 @@ +#!/usr/bin/perl +# +# IPCop CGI's - base.cgi +# +# This code is distributed under the terms of the GPL +# +# (c) place a name here +# +# $Id: base.cgi,v 1.1.2.10 2005/11/03 19:20:50 franck78 Exp $ +# +# + + +# This file is a starting base for writting a new GUI screen using the three box model +# Box 1 : global settings for the application +# Box 2 : line editor for multiple data line +# Box 3 : the list of data line, with edit/remove buttons +# +# This example do the following +# Read global settings: +# a NAME and an interface (IT) +# Lines of data composed of: +# an ipaddress (IP), an enabled/disabled options (CB), a comment (CO) +# +# +# All you need to do is +# replace 'XY' with your app name +# define your global $settings{'var name'} +# define your strings +# write validation code for Settings1 and Settings2 +# write HTML box Settings1 and Settings2 +# adapt the sort function +# write the correct configuration file +# +# +# to fully troubleshot your code, uncomment diagnostics, Carp and cluck lines +# use diagnostics; # need to add the file /usr/lib/perl5/5.8.x/pods/perldiag.pod before to work +# next look at /var/log/httpd/error_log , http://www.perl.com/pub/a/2002/05/07/mod_perl.html may help +#use warnings; +use strict; +#use Carp (); +#local $SIG{__WARN__} = \&Carp::cluck; + +require '/var/ipcop/general-functions.pl'; # Replace all occurences of with CONFIG_ROOT + # before updating cvs IPCop file. +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +# Files used +our $setting = "${General::swroot}/XY/settings"; # particular settings +my $datafile = "${General::swroot}/XY/data"; # repeted settings (multilines) +our $conffile = "${General::swroot}/XY/XY.conf"; # Config file for application XY + +# strings to add to languages databases or in addon language file +$Lang::tr{'XY title'} = 'XY service'; +$Lang::tr{'XY settings'} = 'XY setup'; +$Lang::tr{'XY add data'} = 'add data'; +$Lang::tr{'XY edit data'} = 'edit data'; +$Lang::tr{'XY data'} = 'XY data'; + +# informationnal & log strings, no translation required +my $msg_added = 'XY added'; +my $msg_modified = 'XY modified'; +my $msg_deleted = 'XY removed'; +my $msg_datafileerror = 'XY data file error'; +our $msg_configfileerror = 'XY configuration file error'; + +my %settings=(); + +# Settings1 +$settings{'NAME'} = ''; # a string field than must be 'GOOD' or 'good' +$settings{'IT'} = ''; # a 'choose' field for color interface +$settings{'TURBO'} = 'off'; # a checkbox field to enable something + +# Settings2 for editing the multi-line list +# Must not be saved by writehash ! +$settings{'IP'} = ''; # datalines are: IPaddress,enable,comment +$settings{'CB'} = 'off'; # Every check box must be set to off +$settings{'COMMENT'} = ''; +my @nosaved=('IP','CB','COMMENT'); # List here ALL setting2 fields. Mandatory + +$settings{'ACTION'} = ''; # add/edit/remove.... +$settings{'KEY1'} = ''; # point record for ACTION + +# Define each field that can be used to sort columns +my $sortstring='^IP|^COMMENT'; +my $errormessage = ''; +my $warnmessage = ''; + +&Header::showhttpheaders(); + +# Read needed Ipcop settings (exemple) +my %mainsettings=(); +&General::readhash("${General::swroot}/main/settings", \%mainsettings); + +# Get GUI values +&Header::getcgihash(\%settings); + +# Load multiline data. Do it before use in save action +our $f = new Multilines (filename => $datafile, + fields => ['IP','CB','COMMENT'], + comment => 1 + ); + +## +## SAVE Settings1 +## +# Remove if no Settings1 needed +if ($settings{'ACTION'} eq $Lang::tr{'save'}) { + + # + #Validate static Settings1 here + # + if (($settings{"NAME"} ne "GOOD") && + ($settings{"NAME"} ne "good")) { + $errormessage = 'Enter good or GOOD in Name field'; + } + + unless ($errormessage) { # Everything is ok, save settings + map (delete ($settings{$_}) ,(@nosaved,'ACTION','KEY1'));# Must never be saved + &General::writehash($setting, \%settings); # Save good settings + $settings{'ACTION'} = $Lang::tr{'save'}; # Recreate 'ACTION' + map ($settings{$_}= '',(@nosaved,'KEY1')); # and reinit var to empty + + # Rebuild configuration file if needed + &BuildConfiguration; + } + + ERROR: # Leave the faulty field untouched +} else { + &General::readhash($setting, \%settings); # Get saved settings and reset to good if needed +} + +## +## Now manipulate the multiline list with Settings2 +## + +# Basic actions are: +# toggle the check box +# add/update a new line +# begin editing a line +# remove a line +# $KEY1 contains the index of the line manipulated + +## +## Toggle CB field. +## +if ($settings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) { + + $f->togglebyfields($settings{'KEY1'},'CB'); # toggle checkbox + $settings{'KEY1'} = ''; # End edit mode + + &General::log($msg_modified); + + # save changes + $f->savedata || die "$msg_datafileerror"; + + # Rebuild configuration file + &BuildConfiguration; +} + +## +## ADD/UPDATE a line of configuration from Settings2 +## +if ($settings{'ACTION'} eq $Lang::tr{'add'}) { + # Validate inputs + if (! &General::validip($settings{'IP'})) {$errormessage = "Specify an IP value !"}; + if (! $settings{'COMMENT'} ) {$warnmessage = "no comment specified"}; + + unless ($errormessage) { + if ($settings{'KEY1'} eq '') { #add or edit ? + # insert new data line + $f->writedata(-1, $settings{'IP'},$settings{'CB'},$settings{'COMMENT'}); + &General::log($msg_added); + } else { + # modify data line + $f->writedata($settings{'KEY1'}, $settings{'IP'},$settings{'CB'},$settings{'COMMENT'}); + $settings{'KEY1'} = ''; # End edit mode + &General::log($msg_modified); + } + # save changes + $f->savedata || die "$msg_datafileerror"; + + # Rebuild configuration file + &BuildConfiguration; + + # if entering data line is a repetitive task, choose here to not erase fields between each addition + map ($settings{$_}='' ,@nosaved); + } +} + +## +## begin EDIT: move data fields to Settings2 controls +## +if ($settings{'ACTION'} eq $Lang::tr{'edit'}) { + $f->readdata ($settings{'KEY1'}, + $settings{'IP'}, + $settings{'CB'}, + $settings{'COMMENT'}); +} +## +## REMOVE: remove selected line +## +if ($settings{'ACTION'} eq $Lang::tr{'remove'}) { + $f->deleteline ($settings{'KEY1'}); + $settings{'KEY1'} = ''; # End remove mode + &General::log($msg_deleted); + + # save changes + $f->savedata || die "$msg_datafileerror"; + + # Rebuild configuration file + &BuildConfiguration; +} + + +## +## Check if sorting is asked +## +if ($ENV{'QUERY_STRING'} =~ /$sortstring/ ) { + my $newsort=$ENV{'QUERY_STRING'}; + my $actual=$settings{'SORT_XY'}; + + # Reverse actual sort or choose new column ? + if ($actual =~ $newsort) { + $f->setsortorder ($newsort ,rindex($actual,'Rev')); + $newsort .= rindex($actual,'Rev')==-1 ? 'Rev' : ''; + } else { + $f->setsortorder ($newsort ,1); + } + $f->savedata; # Synchronise file & display + $settings{'SORT_XY'} = $newsort; + map (delete ($settings{$_}) ,(@nosaved,'ACTION','KEY1')); # Must never be saved + &General::writehash($setting, \%settings); + $settings{'ACTION'} = 'SORT'; # Recreate an 'ACTION' + map ($settings{$_}= '',(@nosaved,,'KEY1')); # and reinit var to empty +} + +## +## Remove if no Setting1 needed +## +if ($settings{'ACTION'} eq '' ) { # First launch from GUI + # Place here default value when nothing is initialized + +} + +&Header::openpage($Lang::tr{'XY title'}, 1, ''); +&Header::openbigbox('100%', 'left', '', $errormessage); +my %checked =(); # Checkbox manipulations + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage "; + &Header::closebox(); +} + +## +## First box Settings1. Remove if not needed +## +$warnmessage = "$Lang::tr{'capswarning'}: $warnmessage" if ($warnmessage); + +&Header::openbox('100%', 'left', $Lang::tr{'XY settings'}); +print "
"; +$checked{'IT'}{'RED'} = ''; +$checked{'IT'}{'GREEN'} = ''; +$checked{'IT'}{'ORANGE'} = ''; +$checked{'IT'}{'BLUE'} = ''; +$checked{'IT'}{$settings{'IT'}} = "checked='checked'"; +$checked{'TURBO'} = ($settings{'TURBO'} eq 'on') ? "checked='checked'" : ''; + +print< + + Name: + + INTERFACE + red + + Turbo: + + + green + + + + + blue + + + + + orange + + +
+END +; + +print< +
+ + * $Lang::tr{'this field may be blank'} + $warnmessage + + + + +END +; +&Header::closebox(); # end of Settings1 + +## +## Second box is for editing the an item of the list +## +$checked{'CB'} = ($settings{'CB'} eq 'on') ? "checked='checked'" : ''; + +my $buttontext = $Lang::tr{'add'}; +if ($settings{'KEY1'} ne '') { + $buttontext = $Lang::tr{'update'}; + &Header::openbox('100%', 'left', $Lang::tr{'XY edit data'}); +} else { + &Header::openbox('100%', 'left', $Lang::tr{'XY add data'}); +} + +# Edited line number (KEY1) passed until cleared by 'save' or 'remove' or 'new sort order' +print < + + + + + + + + + + +
$Lang::tr{'ip address'}:$Lang::tr{'enabled'}$Lang::tr{'remark'}: *
+
+ + + + + +
* $Lang::tr{'this field may be blank'}
+ +END +; +&Header::closebox(); + +## +## Third box shows the list +## + +# Columns headers may be a sort link. In this case it must be named in $sortstring +&Header::openbox('100%', 'left', $Lang::tr{'XY data'}); +print < + + $Lang::tr{'ip address'} + $Lang::tr{'remark'} + $Lang::tr{'action'} + +END +; + +## +## Print each line of @current list +## +my $key = 0; +$f->readreset; # beginning of data +for ($key=0; $key<$f->getnumberofline; $key++) { + + my($cb,$comment,$ip) = $f->readbyfieldsseq($key,'CB','COMMENT','IP'); + + #Choose icon for checkbox + my $gif = ''; + my $gdesc = ''; + if ($cb eq "on") { + $gif = 'on.gif'; + $gdesc = $Lang::tr{'click to disable'}; + } else { + $gif = 'off.gif'; + $gdesc = $Lang::tr{'click to enable'}; + } + + #Colorize each line + if ($settings{'KEY1'} eq $key) { + print ""; + } elsif ($key % 2) { + print ""; + } else { + print ""; + } + + print <$ip +$comment + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + +END +; +} print ""; + +# If table contains entries, print 'Key to action icons' +if ($key) { +print < + +  $Lang::tr{'legend'}:  + $Lang::tr{ + $Lang::tr{'click to disable'} +    + $Lang::tr{ + $Lang::tr{'click to enable'} +    + $Lang::tr{ + $Lang::tr{'edit'} +    + $Lang::tr{ + $Lang::tr{'remove'} + + +END +; +} + +&Header::closebox(); +&Header::closebigbox(); +&Header::closepage(); + +## Ouf it's the end ! + +## +## Build the configuration file for application XY +## +sub BuildConfiguration { + open(FILE, ">/$conffile") or die "$msg_configfileerror"; + flock(FILE, 2); + + #Global settings + print FILE "#\n# Configuration file for application XY\n#\n\n"; + print FILE "# do not edit manually\n"; + print FILE "# build for Ipcop:$mainsettings{'HOSTNAME'}\n\n\n"; + print FILE "service=$settings{'NAME'}\n"; + print FILE "activate-turbo\n" if $settings{'TURBO'} eq 'on'; + print FILE "interface=$settings{'IT'}\n\n\n"; + #write data line + { + my ($IP,$CB,$COMMENT); + $f->readreset; + while (defined ($f->readdataseq($IP,$CB,$COMMENT))) { + if ($CB eq "on") { + print FILE "$IP\t\t\t\t\t#$COMMENT\n"; + } else { + print FILE "#DISABLED $IP\t\t\t\t#$COMMENT\n"; + } + } + } + close FILE; + + # Restart service + #system '/usr/local/bin/restartyourhelper'; +} diff --git a/html/cgi-bin/changepw.cgi b/html/cgi-bin/changepw.cgi new file mode 100644 index 0000000000..b8d5c5ae08 --- /dev/null +++ b/html/cgi-bin/changepw.cgi @@ -0,0 +1,123 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: changepw.cgi,v 1.4.2.6 2005/03/07 21:28:03 eoberlander Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %cgiparams=(); +my $errormessage=''; + +&Header::showhttpheaders(); + +$cgiparams{'ACTION_ADMIN'} = ''; +$cgiparams{'ACTION_DIAL'} = ''; + +&Header::getcgihash(\%cgiparams); + +if ($cgiparams{'ACTION_ADMIN'} eq $Lang::tr{'save'}) +{ + my $password1 = $cgiparams{'ADMIN_PASSWORD1'}; + my $password2 = $cgiparams{'ADMIN_PASSWORD2'}; + if ($password1 eq $password2) + { + if ($password1 =~ m/\s|\"/) { + $errormessage = $Lang::tr{'password contains illegal characters'}; + } + elsif (length($password1) >= 6) + { + system('/usr/bin/htpasswd', '-m', '-b', "${General::swroot}/auth/users", 'admin', "${password1}"); + &General::log($Lang::tr{'admin user password has been changed'}); + } + else { + $errormessage = $Lang::tr{'passwords must be at least 6 characters in length'}; } + } + else { + $errormessage = $Lang::tr{'passwords do not match'}; } +} + +if ($cgiparams{'ACTION_DIAL'} eq $Lang::tr{'save'}) +{ + my $password1 = $cgiparams{'DIAL_PASSWORD1'}; + my $password2 = $cgiparams{'DIAL_PASSWORD2'}; + if ($password1 eq $password2) + { + if($password1 =~ m/\s|\"/) { + $errormessage = $Lang::tr{'password contains illegal characters'}; + } + elsif (length($password1) >= 6) + { + system('/usr/bin/htpasswd', '-b', "${General::swroot}/auth/users", 'dial', "${password1}"); + &General::log($Lang::tr{'dial user password has been changed'}); + } + else { + $errormessage = $Lang::tr{'passwords must be at least 6 characters in length'}; } + } + else { + $errormessage = $Lang::tr{'passwords do not match'}; } +} + +&Header::openpage($Lang::tr{'change passwords'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage\n"; + print " \n"; + &Header::closebox(); +} + +print "
\n"; + +&Header::openbox('100%', 'left', $Lang::tr{'administrator user password'}); +print < + + $Lang::tr{'username'} 'admin' + $Lang::tr{'password'}  + + $Lang::tr{'again'} + + + + +END +; +&Header::closebox(); + +&Header::openbox('100%', 'left', $Lang::tr{'dial user password'}); +print < + + $Lang::tr{'username'} 'dial' + $Lang::tr{'password'}  + + $Lang::tr{'again'}  + + + + +END +; +&Header::closebox(); + +print "\n"; + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/cgi-bin/connections.cgi b/html/cgi-bin/connections.cgi new file mode 100644 index 0000000000..8fe8f8aa9a --- /dev/null +++ b/html/cgi-bin/connections.cgi @@ -0,0 +1,329 @@ +#!/usr/bin/perl +# +# (c) 2001 Jack Beglinger +# +# (c) 2003 Dave Roberts - colour coded netfilter/iptables rewrite for 1.3 +# +# $Id: connections.cgi,v 1.6.2.11 2005/02/24 07:44:35 gespinasse Exp $ +# + +# Setup GREEN, ORANGE, IPCOP, VPN CIDR networks, masklengths and colours only once + +my @network=(); +my @masklen=(); +my @colour=(); + +use Net::IPv4Addr qw( :all ); + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::table1colour} ); +undef (@dummy); + +# Read various files + +my %netsettings=(); +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); + +open (ACTIVE, "/proc/net/ip_conntrack") or die 'Unable to open ip_conntrack'; +my @active = ; +close (ACTIVE); + +my @vpn = ('none'); +open (ACTIVE, "/proc/net/ipsec_eroute") and @vpn = ; close (ACTIVE); + +my $aliasfile = "${General::swroot}/ethernet/aliases"; +open(ALIASES, $aliasfile) or die 'Unable to open aliases file.'; +my @aliases = ; +close(ALIASES); + +# Add Green Firewall Interface +push(@network, $netsettings{'GREEN_ADDRESS'}); +push(@masklen, "255.255.255.255" ); +push(@colour, ${Header::colourfw} ); + +# Add Green Network to Array +push(@network, $netsettings{'GREEN_NETADDRESS'}); +push(@masklen, $netsettings{'GREEN_NETMASK'} ); +push(@colour, ${Header::colourgreen} ); + +# Add Green Routes to Array +my @routes = `/sbin/route -n | /bin/grep $netsettings{'GREEN_DEV'}`; +foreach my $route (@routes) { + chomp($route); + my @temp = split(/[\t ]+/, $route); + push(@network, $temp[0]); + push(@masklen, $temp[2]); + push(@colour, ${Header::colourgreen} ); +} + +# Add Firewall Localhost 127.0.0.1 +push(@network, '127.0.0.1'); +push(@masklen, '255.255.255.255' ); +push(@colour, ${Header::colourfw} ); + +# Add Orange Network +if ($netsettings{'ORANGE_DEV'}) { + push(@network, $netsettings{'ORANGE_NETADDRESS'}); + push(@masklen, $netsettings{'ORANGE_NETMASK'} ); + push(@colour, ${Header::colourorange} ); + # Add Orange Routes to Array + @routes = `/sbin/route -n | /bin/grep $netsettings{'ORANGE_DEV'}`; + foreach my $route (@routes) { + chomp($route); + my @temp = split(/[\t ]+/, $route); + push(@network, $temp[0]); + push(@masklen, $temp[2]); + push(@colour, ${Header::colourorange} ); + } +} + +# Add Blue Network +if ($netsettings{'BLUE_DEV'}) { + push(@network, $netsettings{'BLUE_NETADDRESS'}); + push(@masklen, $netsettings{'BLUE_NETMASK'} ); + push(@colour, ${Header::colourblue} ); + # Add Blue Routes to Array + @routes = `/sbin/route -n | /bin/grep $netsettings{'BLUE_DEV'}`; + foreach my $route (@routes) { + chomp($route); + my @temp = split(/[\t ]+/, $route); + push(@network, $temp[0]); + push(@masklen, $temp[2]); + push(@colour, ${Header::colourblue} ); + } +} + +# Add STATIC RED aliases +if ($netsettings{'RED_DEV'}) { + # We have a RED eth iface + if ($netsettings{'RED_TYPE'} eq 'STATIC') { + # We have a STATIC RED eth iface + foreach my $line (@aliases) + { + chomp($line); + my @temp = split(/\,/,$line); + if ( $temp[0] ) { + push(@network, $temp[0]); + push(@masklen, $netsettings{'RED_NETMASK'} ); + push(@colour, ${Header::colourfw} ); + } + } + } +} + +# Add VPNs +if ( $vpn[0] ne 'none' ) { + foreach my $line (@vpn) { + my @temp = split(/[\t ]+/,$line); + my @temp1 = split(/[\/:]+/,$temp[3]); + push(@network, $temp1[0]); + push(@masklen, ipv4_cidr2msk($temp1[1])); + push(@colour, ${Header::colourvpn} ); + } +} +if (open(IP, "${General::swroot}/red/local-ipaddress")) { + my $redip = ; + close(IP); + chomp $redip; + push(@network, $redip); + push(@masklen, '255.255.255.255' ); + push(@colour, ${Header::colourfw} ); +} + +&Header::showhttpheaders(); +&Header::openpage($Lang::tr{'connections'}, 1, ''); +&Header::openbigbox('100%', 'left'); +&Header::openbox('100%', 'left', $Lang::tr{'connection tracking'}); + +print < +$Lang::tr{'legend'} : + $Lang::tr{'lan'} + $Lang::tr{'internet'} + $Lang::tr{'dmz'} + $Lang::tr{'wireless'} + IPCop + $Lang::tr{'vpn'} + + +
+ + + + + + + + + + + +END +; + +foreach my $line (@active) +{ + my $protocol=''; + my $expires=''; + my $connstatus=''; + my $orgsip=''; + my $orgdip=''; + my $orgsp=''; + my $orgdp=''; + my $exsip=''; + my $exdip=''; + my $exsp=''; + my $exdp=''; + my $marked=''; + my $use=''; + my $orgsipcolour=''; + my $orgdipcolour=''; + my $exsipcolour=''; + my $exdipcolour=''; + + chomp($line); + my @temp = split(' ',$line); + print "\n"; + if ($temp[0] eq 'udp') { + my $offset = 0; + $marked = ''; + $protocol = $temp[0] . " (" . $temp[1] . ")"; + $expires = $temp[2]; + $connstatus = ' '; + $orgsip = substr $temp[3], 4; + $orgdip = substr $temp[4], 4; + $orgsp = substr $temp[5], 6; + $orgdp = substr $temp[6], 6; + if ($temp[7] eq '[UNREPLIED]') { + $marked = $temp[7]; + $offset = 1; + } + else { + $connstatus = ' '; + } + + $exsip = substr $temp[7 + $offset], 4; + $exdip = substr $temp[8 + $offset], 4; + $exsp = substr $temp[9 + $offset], 6; + $exdp = substr $temp[10 + $offset], 6; + if ($marked eq '[UNREPLIED]') { + $use = substr $temp[11 + $offset], 4; + } + else { + $marked = $temp[11 + $offset]; + $use = substr $marked, 0, 3; + if ($use eq 'use' ) { + $marked = ''; + $use = substr $temp[11 + $offset], 4; + } + else { + $use = substr $temp[12 + $offset], 4; + } + } + } + if ($temp[0] eq 'tcp') { + my $offset = 0; + $protocol = $temp[0] . " (" . $temp[1] . ")"; + $expires = $temp[2]; + $connstatus = $temp[3]; + $orgsip = substr $temp[4], 4; + $orgdip = substr $temp[5], 4; + $orgsp = substr $temp[6], 6; + $orgdp = substr $temp[7], 6; + if ($temp[8] eq '[UNREPLIED]') { + $marked = $temp[8]; + $offset = 1; + $use = substr $temp[13], 4; + } + else { + $marked = $temp[12]; + $use = substr $temp[13], 4; + } + + $exsip = substr $temp[8 + $offset], 4; + $exdip = substr $temp[9 + $offset], 4; + $exsp = substr $temp[10 + $offset], 6; + $exdp = substr $temp[11 + $offset], 6; + } + if ($temp[0] eq 'unknown') { + my $offset = 0; + $protocol = "??? (" . $temp[1] . ")"; + $protocol = "esp (" . $temp[1] . ")" if ($temp[1] == 50); + $protocol = " ah (" . $temp[1] . ")" if ($temp[1] == 51); + $expires = $temp[2]; + $connstatus = ' '; + $orgsip = substr $temp[3], 4; + $orgdip = substr $temp[4], 4; + $orgsp = ' '; + $orgdp = ' '; + $exsip = substr $temp[5], 4; + $exdip = substr $temp[6], 4; + $exsp = ' '; + $exdp = ' '; + $marked = ' '; + $use = ' '; + } + if ($temp[0] eq 'gre') { + my $offset = 0; + $protocol = $temp[0] . " (" . $temp[1] . ")"; + $expires = $temp[2]; + $orgsip = substr $temp[5], 4; + $orgdip = substr $temp[6], 4; + $orgsp = ' '; + $orgdp = ' '; + $exsip = substr $temp[11], 4; + $exdip = substr $temp[12], 4; + $exsp = ' '; + $exdp = ' '; + $marked = $temp[17]; + $use = $temp[18]; + } + $orgsipcolour = &ipcolour($orgsip); + $orgdipcolour = &ipcolour($orgdip); + $exsipcolour = &ipcolour($exsip); + $exdipcolour = &ipcolour($exdip); + print <$protocol + + + + + + + + +END + ; +} +print "
$Lang::tr{'protocol'}$Lang::tr{'expires'}
($Lang::tr{'seconds'})
$Lang::tr{'connection'}
$Lang::tr{'status'}
$Lang::tr{'original'}
$Lang::tr{'source ip and port'}
$Lang::tr{'original'}
$Lang::tr{'dest ip and port'}
$Lang::tr{'expected'}
$Lang::tr{'source ip and port'}
$Lang::tr{'expected'}
$Lang::tr{'dest ip and port'}
$Lang::tr{'marked'}$Lang::tr{'use'}
$expires$connstatus$orgsip:$orgsp$orgdip:$orgdp$exsip:$exsp$exdip:$exdp$marked$use
\n"; + +&Header::closebox(); +&Header::closebigbox(); +&Header::closepage(); + +sub ipcolour($) { + my $id = 0; + my $line; + my $colour = ${Header::colourred}; + my ($ip) = $_[0]; + my $found = 0; + foreach $line (@network) + { + if (!$found && ipv4_in_network( $network[$id] , $masklen[$id], $ip) ) { + $found = 1; + $colour = $colour[$id]; + } + $id++; + } + return $colour +} diff --git a/html/cgi-bin/credits.cgi b/html/cgi-bin/credits.cgi new file mode 100644 index 0000000000..3c62306e92 --- /dev/null +++ b/html/cgi-bin/credits.cgi @@ -0,0 +1,371 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: credits.cgi,v 1.11.2.30 2006/01/08 13:33:36 eoberlander Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +&Header::showhttpheaders(); + +&Header::openpage($Lang::tr{'credits'}, 1, ''); + +&Header::openbigbox('100%', 'center'); + +&Header::openbox('100%', 'left', $Lang::tr{'credits'}); + +print <
Visit us on http://www.ipcop.org/
+ +

Main Credits
+Project Member - Mark Wormgoor +(mark\@wormgoor.com)
+Project Member & Configuration backup/restore - Eric S. Johansson +(esj\@harvee.billerica.ma.us)
+Project Member - Jack Beglinger +(jackb_guppy\@yahoo.com)
+Developer - Darren Critchley +(darrenc\@telus.net)
+Developer - Robert Kerr +(LittleThor\@xsw.terminator.net)
+Developer - Alan Hourihane +(alanh\@fairlite.demon.co.uk)
+ADSL Developer - Gilles Espinasse +(g.esp.ipcop\@free.fr)
+Perl Developer - Franck Bourdonnec +(fbourdonnec\@chez.com)
+Testing - Dave Roberts +(dave\@daver.demon.co.uk)
+Website Design + Graphics - Seth Bareiss +(seth\@fureai-ch.ne.jp)
+Documentation - Harry Goldschmitt +(harry\@hgac.com)
+Red IP Aliasing - Steve Bootes +(Steve\@computingdynamics.co.uk)
+Static DHCP Addresses - Graham Smith +(grhm\@grhm.co.uk)
+Squid graphs - Robert Wood +(rob\@empathymp3.co.uk)
+Time Synchronization - Eric Oberlander +(eric\@oberlander.co.uk)
+Backup - Tim Butterfield +(timbutterfield\@mindspring.com)
+DOV Support and Improved Dual ISDN Support - Traverse Technologies +(http://www.traverse.com.au/)
+Traffic Shaping - David Kilpatrick +(dave\@thunder.com.au)
+Improved VPN Documentation - Christiaan Theron +(christiaan.theron\@virgin.net)
+

+ +

Translations
+Rebecca Ward - Translation Coordinator +(rebeccaaward\@cox.net)
+Marco van Beek - Website Translation Database Developer +(mvanbeek\@supporting-role.co.uk)
+Brazilian Portuguese:
+  Edson-Empresa +(soma2\@somainformatica.com.br)
+  Claudio Corrêa Porto +(claudio\@tsasp.com.br)
+  Adilson Oliveira +(adilson\@linuxembarcado.com.br)
+  Mauricio Andrade +(mandrade\@mma.com.br)
+  Wladimir Nunes +(wnunes\@treesystems.com.br)
+Chinese (Simplified):
+  Vince Chu +(chuhei\@beunion.net)
+  Yuan-Chen Cheng +(ycheng\@wiscore.com)
+  Sohoguard +(sohoguard\@hotmail.com)
+Chinese (Traditional):
+  Ronald Ng +(mwpmo\@hotmail.com)
+Czech:
+  Petr Dvoracek +(mandrake\@tiscali.cz)
+  Jakub Moc +(Jakub.Moc\@seznam.cz)
+Danish:
+  Michael Rasmussen +(mir\@datanom.net)
+Dutch:
+  Gerard Zwart +(zwartg\@home.nl)
+  Berdt van der Lingen +(berdt\@xs4all.nl)
+  Tony Vroon +(mrchainsaw\@users.sourceforge.net)
+  Mark Wormgoor
+  Maikel Punie +(maikel.punie\@gmail.com)
+English:
+  Jack Beglinger +(jackb_guppy\@yahoo.com)
+  James Brice +(jbrice\@jamesbrice.com
+  Tim Butterfield +(timbutterfield\@mindspring.com)
+  Chris Clancey +(chrisjc\@amoose.com)
+  Harry Goldschmitt +(harry\@hgac.com)
+  John Kastner +(john\@kastner.us)
+  Eric Oberlander +(eric\@oberlander.co.uk)
+  Stephen Pielschmidt +(stephen.pielschmidt\@sfp.com.au)
+  Peter Walker +(peter.walker\@stockfast.co.uk)
+Finnish:
+  Kai Käpölä +(kai\@kapola.fi)
+French:
+  Bertrand Sarthre +(zetrebu\@softhome.net)
+  Michel Janssens +(micj\@ixus.net)
+  Erwann Simon +(esn\@infobi.com) (wann\@ixus.net)
+  Patrick Bernaud +(patrickbernaud\@users.sourceforge.net)
+  Marc Faid\'herbe +(marc\@decad.fr)
+  Eric Legigan +(eric.legigan\@wanadoo.fr)
+  Eric Berthomier +(ebr\@infobi.com)
+  Stéphane Le Bourdon +(stephane.lebourdon\@free.fr)
+  Stéphane Thirion +(sthirion\@activlan.com)
+  Jan M. Dziewulski +(jan\@dziewulski.com)
+  +(spoutnik\@inbox.lv)
+  Eric +(darriak\@users.sourceforge.net)
+  Eric Boniface +(ericboniface\@chez.com)
+  Franck Bourdonnec +(fbourdonnec\@chez.com)
+German:
+  Dirk Loss +(dloss\@uni-muenster.de)
+  Ludwig Steininger +(antispam1eastcomp\@gmx.de)
+  Helmet +(list\@metatalk.de)
+  Markus +(mstl\@gmx.de)
+  Michael Knappe +(michael.knappe\@chello.at)
+  Michael Linke +(linke\@netmedia.de)
+  Richard Hartmann +(linux\@smhsoftware.de)
+  Ufuk Altinkaynak +(ufuk.altinkaynak\@wibo-werk.com)
+  Gerhard Abrahams +(g.abrahams\@gmx.de)
+  Benjamin Kohberg +(b.kohberg\@pci-software.de)
+  Samuel Wiktor +(samuel.wiktor\@stud.tu-ilmenau.de)
+Greek:
+  Spyros Tsiolis +(info\@abaxb2b.com)
+  A. Papageorgiou +(apap\@freemail.gr)
+  G. Xrysostomou +(gxry\@freemail.gr)
+Hungarian:
+  Ádám Makovecz +(adam\@makovecz.hu)
+  Ferenc Mányi-Szabó +(asd1234\@freemail.hu)
+Italian:
+  Fabio Gava +(fabio.gava\@bloomtech.it)
+  Antonio Stano +(admin\@securityinfos.com)
+  Marco Spreafico +(marco\@yetopen.it)
+Latino Spanish:
+  Fernando Díaz +(fernando.diaz\@adinet.com.uy)
+Lithuanian:
+  Aurimas FiÅ¡eras +(aurimas\@gmail.com)
+  Rodion Kotelnikov +(r0dik\@takas.lt)
+Norwegian:
+  Morten Grendal +(morten\@grendal.no)
+  Alexander Dawson +(daftkid\@users.sourceforge.net)
+  Mounir S. Chermiti +(mounir\@solidonline.org)
+  Runar Skraastad +(rus-\@home.no)
+  Alf-Ivar Holm +(alfh\@ifi.uio.no)
+Persian (Farsi):
+  Ali Tajik +(trosec113\@gmail.com)
+  A T Khalilian
+Polish:
+  Jack Korzeniowski +(jk2002\@mail.com)
+  Piotr +(piotr\@esse.pl)
+  Andrzej Zolnierowicz +(zolnierowicz\@users.sourceforge.net)
+  Remi Schleicher +(remi(dot)schleicher(at)phreaker(dot)net)
+Portuguese:
+  Luis Santos +(luis\@ciclo2000.com)
+  Renato Kenji Kano +(renato_kenji\@users.sourceforge.net)
+  Mark Peter +(mark\@markpeter.com)
+  Wladimir Nunes +(wnunes\@users.sourceforge.net)
+  Daniela Cattarossi +(daniela\@netpandora.com)
+Romanian:
+  Viorel Melinte +(viorel.melinte\@hidro.ro)
+Russian/Ukranian:
+  Vladimir Grichina +(vgua\@users.sourceforge.net)
+  Vitaly Tarasov +(vtarasov\@knoa.com)
+  Rodion Kotelnikov +(r0dik\@takas.lt)
+Slovak:
+  MiloÅ¡ Mráz +(Milos.Mraz\@svum.sk)
+  Drlik Zbynek +(denix\@host.sk)
+Slovenian:
+  Miha Martinec +(miha\@martinec.si)
+  Grega Varl +(gregav\@finea-holding.si)
+Somali:
+  Arnt Karlsen +(arnt\@c2i.net)
+  Mohamed Musa Ali +(alimuse\@hotmail.com)
+  Michael Spann +(dr-ms\@lycos.de)
+Spanish:
+  Curtis Anderson +(curtis_anderson\@curtisanderson.com)
+  Diego Lombardia +(Diego.Lombardia\@IT-Plus.com.ar)
+  Mark Peter +(mark\@markpeter.com)
+  QuiQue Soriano +(jqsoriano\@hotmail.com)
+  David Cabrera Lozano +(silews\@users.sourceforge.net)
+  Jose Sanchez +(jsanchez\@cyberdude.com)
+  Santiago Cassina +(scap2000\@yahoo.com)
+  Marcelo Zunino +(cezuni\@adinet.com.uy)
+  Alfredo Matignon +(amatignon\@softhome.net)
+  Juan Janczuk +(jjanzcuk\@msn.com)
+Swedish:
+  Anders Sahlman +(anders.sahlman\@dataunit.se)
+  Christer Jonson +(christer.jonson\@swipnet.se)
+Thai:
+  Touchie +(pongsathorns\@se-ed.net)
+Turkish:
+  Ismail Murat Dilek +(olive\@zoom.co.uk)
+  Emre Sumengen +
+Vietnamese:
+  Le Dinh Long +(longld\@yahoo.com)
+

+ +

Smoothwall
+IPCop is partially based on the Smoothwall GPL +version, v0.9.9. We are grateful to them for both inspiring this product and +giving us the codebase to work with. Smoothwall was developed by: +

+

+Founder and Project Manager - Richard Morrell +(richard\@smoothwall.org)
+Development Team Leader and Author - Lawrence Manning +(lawrence\@smoothwall.org)
+Dan Goscomb - Architecture team leader, Core Developer & Perl Guru +(dang\@smoothwall.org)
+Paul Tansom - Worldwide Community Liason +(paul\@smoothwall.org)
+William Anderson - Worldwide Online Team Manager & Webmanager +(neuro\@smoothwall.org)
+Rebecca Ward - Worldwide Online Support Manager +(becca\@smoothwall.org)
+Bill Ward - US Support & Evangelist +(bill\@smoothwall.org)
+Chris Ross - Chief Wizard +(chris\@smoothwall.org)
+Mark Wormgoor - ISDN Lead Developer +(mark\@wormgoor.com)
+Eric Johansson - US Team Leader +(esj\@harvee.billerica.ma.us)
+Dan Cuthbert - Lead Security Manager +(security\@smoothwall.org)
+Pierre-Yves Paulus - Belgian Team Leader and PPPoE guru +(pauluspy\@easynet.be)
+John Payne - DNS & Tech Contibutor +(john\@sackheads.org)
+Adam Wilkinson - VPN Assistance +(aaw10\@hslmc.cam.ac.uk)
+Jez Tucker - Testing +(jez\@rib-it.org)
+Pete Guyan - Tech testing & Input +(pete\@snowplains.org)
+Nigel Fenton - Development and Testing +(nigel.fenton\@btinternet.com)
+Bob Dunlop - The Guru's Guru & Code Magician +(rjd\@xyzzy.clara.co.uk)
+

+
+END +; + +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/cgi-bin/ddns.cgi b/html/cgi-bin/ddns.cgi new file mode 100644 index 0000000000..6785a8968c --- /dev/null +++ b/html/cgi-bin/ddns.cgi @@ -0,0 +1,537 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: ddns.cgi,v 1.7.2.41 2006/02/07 01:29:47 franck78 Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::table2colour}, ${Header::colouryellow} ); +undef (@dummy); + +my $ddnsprefix = $Lang::tr{'ddns noip prefix'}; +$ddnsprefix =~ s/%/$General::noipprefix/; + +# Files used +my $setting = "${General::swroot}/ddns/settings"; +our $datafile = "${General::swroot}/ddns/config"; + +my %settings=(); +#Settings1 +$settings{'BEHINDROUTER'} = 'RED_IP'; +$settings{'MINIMIZEUPDATES'} = ''; + +#Settings2 for editing the multi-line list +#Must not be saved ! +$settings{'HOSTNAME'} = ''; +$settings{'DOMAIN'} = ''; +$settings{'LOGIN'} = ''; +$settings{'PASSWORD'} = ''; +$settings{'PASSWORD2'} = ''; +$settings{'ENABLED'} = ''; +$settings{'PROXY'} = ''; +$settings{'WILDCARDS'} = ''; +$settings{'SERVICE'} = ''; + +my @nosaved=('HOSTNAME','DOMAIN','LOGIN','PASSWORD','PASSWORD2', + 'ENABLED','PROXY','WILDCARDS','SERVICE'); # List here ALL setting2 fields. Mandatory + +$settings{'ACTION'} = ''; # add/edit/remove +$settings{'KEY1'} = ''; # point record for ACTION +$settings{'KEY2'} = ''; # point record for ACTION + +my $errormessage = ''; +my $warnmessage = ''; + +&Header::showhttpheaders(); + +#Get GUI values +&Header::getcgihash(\%settings); + +# Load multiline data +our @current = (); +if (open(FILE, "$datafile")) { + @current = ; + close (FILE); +} + +# +# Check Settings1 first because they are needed before working on @current +# +if ($settings{'ACTION'} eq $Lang::tr{'save'}) { + # No user input to check. ! + #unless ($errormessage) { # Everything is ok, save settings + $settings{'BEHINDROUTERWAITLOOP'} = '-1'; # init & will update on next setddns.pl call + map (delete ($settings{$_}) ,(@nosaved,'ACTION','KEY1','KEY2'));# Must never be saved + &General::writehash($setting, \%settings); # Save good settings + $settings{'ACTION'} = $Lang::tr{'save'}; # Recreate 'ACTION' + map ($settings{$_}= '',(@nosaved,'KEY1','KEY2')); # and reinit var to empty + #} +} else { + &General::readhash($setting, \%settings); # Get saved settings and reset to good if needed +} + +# +# Now manipulate the multi-line list with Settings2 +# +# Toggle enable/disable field. Field is in second position +if ($settings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) { + #move out new line + chomp(@current[$settings{'KEY1'}]); + my @temp = split(/\,/,@current[$settings{'KEY1'}]); + my $K2=$settings{'KEY2'}; + $temp[ $K2 ] = ( $temp[ $K2 ] eq 'on') ? '' : 'on'; # Toggle the field + @current[$settings{'KEY1'}] = join (',',@temp)."\n"; + $settings{'KEY1'} = ''; # End edit mode + &General::log($Lang::tr{'ddns hostname modified'}); + + # Write changes to config file. + &WriteDataFile; # sort newly added/modified entry +} + +if ($settings{'ACTION'} eq $Lang::tr{'add'}) { + # Validate inputs + + unless ($settings{'LOGIN'} ne '') { + $errormessage = $Lang::tr{'username not set'}; + } + + # list box returns 'service optional synonyms' + # keep only first name + $settings{'SERVICE'} =~ s/ .*$//; + + # for freedns.afraid.org, only 'connect string' is mandatory + if ($settings{'SERVICE'} ne 'freedns.afraid.org') { + unless ($settings{'SERVICE'} eq 'regfish.com' || $settings{'PASSWORD'} ne '') { + $errormessage = $Lang::tr{'password not set'}; + } + unless ($settings{'PASSWORD'} eq $settings{'PASSWORD2'}) { + $errormessage = $Lang::tr{'passwords do not match'}; + } + + # Permit an empty HOSTNAME for the nsupdate, regfish, dyndns, enom, ovh, zoneedit, no-ip, easydns + unless ($settings{'SERVICE'} eq 'zoneedit.com' || $settings{'SERVICE'} eq 'nsupdate' || + $settings{'SERVICE'} eq 'dyndns-custom'|| $settings{'SERVICE'} eq 'regfish.com' || + $settings{'SERVICE'} eq 'enom.com' || $settings{'SERVICE'} eq 'dnspark.com' || + $settings{'SERVICE'} eq 'ovh.com' || $settings{'HOSTNAME'} ne '' || + $settings{'SERVICE'} eq 'no-ip.com' || $settings{'SERVICE'} eq 'easydns.com' ) { + $errormessage = $Lang::tr{'hostname not set'}; + } + unless ($settings{'HOSTNAME'} eq '' || $settings{'HOSTNAME'} =~ /^[a-zA-Z_0-9-]+$/) { + $errormessage = $Lang::tr{'invalid hostname'}; + } + unless ($settings{'DOMAIN'} ne '') { + $errormessage = $Lang::tr{'domain not set'}; + } + unless ($settings{'DOMAIN'} =~ /^[a-zA-Z_0-9.-]+$/) { + $errormessage = $Lang::tr{'invalid domain name'}; + } + unless ($settings{'DOMAIN'} =~ /[.]/) { + $errormessage = $Lang::tr{'invalid domain name'}; + } + } + + # recheck service wich don't need too much fields + if ($settings{'SERVICE'} eq 'cjb.net') { + $errormessage = ''; # clear previous error + unless ($settings{'LOGIN'} ne '') { + $errormessage = $Lang::tr{'username not set'}; + } + unless ($settings{'PASSWORD'} ne '') { + $errormessage = $Lang::tr{'password not set'}; + } + unless ($settings{'PASSWORD'} eq $settings{'PASSWORD2'}) { + $errormessage = $Lang::tr{'passwords do not match'}; + } + } + + unless ($errormessage) { + if ($settings{'KEY1'} eq '') { #add or edit ? + unshift (@current, "$settings{'SERVICE'},$settings{'HOSTNAME'},$settings{'DOMAIN'},$settings{'PROXY'},$settings{'WILDCARDS'},$settings{'LOGIN'},$settings{'PASSWORD'},$settings{'ENABLED'}\n"); + &General::log($Lang::tr{'ddns hostname added'}); + } else { + @current[$settings{'KEY1'}] = "$settings{'SERVICE'},$settings{'HOSTNAME'},$settings{'DOMAIN'},$settings{'PROXY'},$settings{'WILDCARDS'},$settings{'LOGIN'},$settings{'PASSWORD'},$settings{'ENABLED'}\n"; + $settings{'KEY1'} = ''; # End edit mode + &General::log($Lang::tr{'ddns hostname modified'}); + } + map ($settings{$_}='' ,@nosaved); # Clear fields + # Write changes to config file. + &WriteDataFile; # sort newly added/modified entry + } +} + +if ($settings{'ACTION'} eq $Lang::tr{'edit'}) { + #move out new line + my $line = @current[$settings{'KEY1'}]; # KEY1 is the index in current + chomp($line); + my @temp = split(/\,/, $line); + $settings{'SERVICE'} = $temp[0]; + $settings{'HOSTNAME'} = $temp[1]; + $settings{'DOMAIN'} = $temp[2]; + $settings{'PROXY'} = $temp[3]; + $settings{'WILDCARDS'} = $temp[4]; + $settings{'LOGIN'} = $temp[5]; + $settings{'PASSWORD'} = $settings{'PASSWORD2'} = $temp[6]; + $settings{'ENABLED'} = $temp[7]; +} + +if ($settings{'ACTION'} eq $Lang::tr{'remove'}) { + splice (@current,$settings{'KEY1'},1); # Delete line + open(FILE, ">$datafile") or die 'ddns datafile error'; + print FILE @current; + close(FILE); + $settings{'KEY1'} = ''; # End remove mode + &General::log($Lang::tr{'ddns hostname removed'}); + # Write changes to config file. + &WriteDataFile; +} + +if ($settings{'ACTION'} eq $Lang::tr{'instant update'}) { + system('/usr/local/bin/setddns.pl', '-f'); +} + + +if ($settings{'ACTION'} eq '') +{ + $settings{'SERVICE'} = 'dyndns.org'; + $settings{'ENABLED'} = 'on'; +} + +&Header::openpage($Lang::tr{'dynamic dns'}, 1, ''); +&Header::openbigbox('100%', 'left', '', $errormessage); + +my %checked =(); # Checkbox manipulations +$checked{'SERVICE'}{'cjb.net'} = ''; +$checked{'SERVICE'}{'dhs.org'} = ''; +$checked{'SERVICE'}{'dnspark.com'} = ''; +$checked{'SERVICE'}{'dtdns.com'} = ''; +$checked{'SERVICE'}{'dyndns.org'} = ''; +$checked{'SERVICE'}{'dyndns-custom'} = ''; +$checked{'SERVICE'}{'dyndns-static'} = ''; +$checked{'SERVICE'}{'dyns.cx'} = ''; +$checked{'SERVICE'}{'dynu.ca'} = ''; +$checked{'SERVICE'}{'easydns.com'} = ''; +$checked{'SERVICE'}{'enom.com'} = ''; +$checked{'SERVICE'}{'freedns.afraid.org'} = ''; +$checked{'SERVICE'}{'hn.org'} = ''; +$checked{'SERVICE'}{'no-ip.com'} = ''; +$checked{'SERVICE'}{'nsupdate'} = ''; +$checked{'SERVICE'}{'ovh.com'} = ''; +$checked{'SERVICE'}{'regfish.com'} = ''; +$checked{'SERVICE'}{'selfhost.de'} = ''; +$checked{'SERVICE'}{'tzo.com'} = ''; +$checked{'SERVICE'}{'zoneedit.com'} = ''; +$checked{'SERVICE'}{$settings{'SERVICE'}} = "selected='selected'"; + +$checked{'BEHINDROUTER'}{'RED_IP'} = ''; +$checked{'BEHINDROUTER'}{'FETCH_IP'} = ''; +$checked{'BEHINDROUTER'}{$settings{'BEHINDROUTER'}} = "checked='checked'"; +$checked{'MINIMIZEUPDATES'} = ($settings{'MINIMIZEUPDATES'} eq '' ) ? '' : "checked='checked'"; + +$checked{'PROXY'}{'on'} = ($settings{'PROXY'} eq '') ? '' : "checked='checked'"; +$checked{'WILDCARDS'}{'on'} = ($settings{'WILDCARDS'} eq '') ? '' : "checked='checked'"; +$checked{'ENABLED'}{'on'} = ($settings{'ENABLED'} eq '' ) ? '' : "checked='checked'"; + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage "; + &Header::closebox(); +} + +if ($warnmessage) { + $warnmessage = "$Lang::tr{'capswarning'}: $warnmessage"; +} +&Header::openbox('100%', 'left', $Lang::tr{'settings'}); +print "
"; +print < + + $Lang::tr{'dyn dns source choice'} + + + $Lang::tr{'use ipcop red ip'} + + + $Lang::tr{'fetch ip from'} * + + + + $Lang::tr{'ddns minimize updates'} + + +

+END +; + +print < + + * + $Lang::tr{'avoid dod'} + + + + +END +; +&Header::closebox(); # end of Settings1 + + +my $buttontext = $Lang::tr{'add'}; +if ($settings{'KEY1'} ne '') { + $buttontext = $Lang::tr{'update'}; + &Header::openbox('100%', 'left', $Lang::tr{'edit an existing host'}); +} else { + &Header::openbox('100%', 'left', $Lang::tr{'add a host'}); +} + +#Edited line number (KEY1) passed until cleared by 'save' or 'remove' +print < + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$Lang::tr{'service'}:$Lang::tr{'hostname'}: *
$Lang::tr{'behind a proxy'}$Lang::tr{'domain'}:
$Lang::tr{'enable wildcards'}$Lang::tr{'username'}
$Lang::tr{'password'}
$Lang::tr{'enabled'}$Lang::tr{'again'}
+
+ + + + + + + +
*$ddnsprefix + +
+ +END +; +&Header::closebox(); + +# +# Third box shows the list, in columns +# +&Header::openbox('100%', 'left', $Lang::tr{'current hosts'}); +print < + + $Lang::tr{'service'} + $Lang::tr{'hostname'} + $Lang::tr{'domain'} + $Lang::tr{'proxy'} + $Lang::tr{'wildcards'} + $Lang::tr{'action'} + +END +; +my $ip = &General::GetDyndnsRedIP; +my $key = 0; +foreach my $line (@current) { + chomp($line); # remove newline + my @temp = split(/\,/,$line); + + if ($temp[0] eq 'no-ip.com') { + $temp[1] =~ s!$General::noipprefix(.*)!group:$1 !; + } + + #Choose icon for checkbox + + my $gifproxy=''; + my $descproxy=''; + if ($temp[3] eq "on") { + $gifproxy = 'on.gif'; + $descproxy = $Lang::tr{'click to disable'}; + } else { + $gifproxy = 'off.gif'; + $descproxy = $Lang::tr{'click to enable'}; + } + + my $gifwildcard=''; + my $descwildcard=''; + if ($temp[4] eq "on") { + $gifwildcard = 'on.gif'; + $descwildcard = $Lang::tr{'click to disable'}; + } else { + $gifwildcard = 'off.gif'; + $descwildcard = $Lang::tr{'click to enable'}; + } + + my $sync = ""; + my $gif = ''; + my $gdesc = ''; + if ($temp[7] eq "on") { + $gif = 'on.gif'; + $gdesc = $Lang::tr{'click to disable'}; + $sync = (&General::DyndnsServiceSync ($ip,$temp[1], $temp[2]) ? "": "") ; + } else { + $gif = 'off.gif'; + $gdesc = $Lang::tr{'click to enable'}; + } + + #Colorize each line + if ($settings{'KEY1'} eq $key) { + print ""; + } elsif ($key % 2) { + print ""; + } else { + print ""; + } + + #if a field is empty, replace it with a '---' to see colorized info! + $temp[1] = '---' if (!$temp[1]); + $temp[2] = '---' if (!$temp[2]); + + print <$temp[0] +$sync$temp[1] +$sync$temp[2] + + +
+ + + + +
+ + + +
+ + + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + +END +; + $key++; +} +print ""; + +# If table contains entries, print 'Key to action icons' +if ($key) { +print < + +  $Lang::tr{'legend'}:  + $Lang::tr{ + $Lang::tr{'click to disable'} +    + $Lang::tr{ + $Lang::tr{'click to enable'} +    + $Lang::tr{ + $Lang::tr{'edit'} +    + $Lang::tr{ + $Lang::tr{'remove'} +
+ +
+ + +END +; +} + +&Header::closebox(); +&Header::closebigbox(); +&Header::closepage(); + +## Ouf it's the end ! + + +# write the "current" array +sub WriteDataFile { + #Save current + open(FILE, ">$datafile") or die 'ddns datafile error'; + print FILE @current; + close (FILE); +} diff --git a/html/cgi-bin/dhcp.cgi b/html/cgi-bin/dhcp.cgi new file mode 100644 index 0000000000..da1d8d0a3a --- /dev/null +++ b/html/cgi-bin/dhcp.cgi @@ -0,0 +1,1245 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# Copyright (C) 01-02-2002 Graham Smith +# - Fixed DHCP Leases added +# +# $Id: dhcp.cgi,v 1.14.2.81 2006/01/20 12:05:29 franck78 Exp $ +# +# Franck -rewrite for two or more interface +# nov/2004 -check range is in correct subnet +# -add NTP option +# -add display sorting of actives leases +# dec/2004 -add comment field to fixed leases +# +# to do : choose a correct format for displaying dates +# +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::colouryellow} ); +undef (@dummy); + +our %dhcpsettings=(); +our %netsettings=(); +my %mainsettings=(); +my %timesettings=(); +my $setting = "${General::swroot}/dhcp/settings"; +our $filename1 = "${General::swroot}/dhcp/advoptions"; # Field separator is TAB in this file (comma is standart) + # because we need commas in the some data +our $filename2 = "${General::swroot}/dhcp/fixleases"; +our $filename3 = "${General::swroot}/dhcp/advoptions-list"; # Describe the allowed syntax for dhcp options +my $errormessage = ''; +my $warnNTPmessage = ''; +my @nosaved=(); + +#Basic syntax allowed for new Option definition. Not implemented: RECORDS & array of RECORDS +our $OptionTypes = 'boolean|((un)?signed )?integer (8|16|32)|ip-address|text|string|encapsulate \w+|array of ip-address'; + +&Header::showhttpheaders(); +our @ITFs=('GREEN','BLUE'); + +#Settings1 for the first screen box +foreach my $itf (@ITFs) { + $dhcpsettings{"ENABLE_${itf}"} = 'off'; + $dhcpsettings{"ENABLEBOOTP_${itf}"} = 'off'; + $dhcpsettings{"START_ADDR_${itf}"} = ''; + $dhcpsettings{"END_ADDR_${itf}"} = ''; + $dhcpsettings{"DOMAIN_NAME_${itf}"} = ''; + $dhcpsettings{"DEFAULT_LEASE_TIME_${itf}"} = ''; + $dhcpsettings{"MAX_LEASE_TIME_${itf}"} = ''; + $dhcpsettings{"WINS1_${itf}"} = ''; + $dhcpsettings{"WINS2_${itf}"} = ''; + $dhcpsettings{"DNS1_${itf}"} = ''; + $dhcpsettings{"DNS2_${itf}"} = ''; + $dhcpsettings{"NTP1_${itf}"} = ''; + $dhcpsettings{"NTP2_${itf}"} = ''; +} + +$dhcpsettings{'SORT_FLEASELIST'} = 'FIPADDR'; +$dhcpsettings{'SORT_LEASELIST'} = 'IPADDR'; + +#Settings2 for editing the multi-line list +#Must not be saved with writehash ! +$dhcpsettings{'FIX_MAC'} = ''; +$dhcpsettings{'FIX_ADDR'} = ''; +$dhcpsettings{'FIX_ENABLED'} = 'off'; +$dhcpsettings{'FIX_NEXTADDR'} = ''; +$dhcpsettings{'FIX_FILENAME'} = ''; +$dhcpsettings{'FIX_ROOTPATH'} = ''; +$dhcpsettings{'FIX_REMARK'} = ''; +$dhcpsettings{'ACTION'} = ''; +$dhcpsettings{'KEY1'} = ''; +$dhcpsettings{'KEY2'} = ''; +@nosaved=('FIX_MAC','FIX_ADDR','FIX_ENABLED','FIX_NEXTADDR', + 'FIX_FILENAME','FIX_ROOTPATH','FIX_REMARK'); + +$dhcpsettings{'ADVOPT_ENABLED'} = ''; +$dhcpsettings{'ADVOPT_NAME'} = ''; +$dhcpsettings{'ADVOPT_DATA'} = ''; +unshift (@nosaved,'ADVOPT_ENABLED','ADVOPT_NAME','ADVOPT_DATA'); +foreach my $itf (@ITFs) { + $dhcpsettings{"ADVOPT_SCOPE_${itf}"} = 'off'; + unshift (@nosaved, "ADVOPT_SCOPE_${itf}"); +} + +# Read Ipcop settings +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); +&General::readhash("${General::swroot}/main/settings", \%mainsettings); +&General::readhash("${General::swroot}/time/settings", \%timesettings); + +#Get GUI values +&Header::getcgihash(\%dhcpsettings); + +open(FILE, "$filename1") or die 'Unable to open dhcp advanced options file.'; +our @current1 = ; +close(FILE); +# Extract OptionDefinition +foreach my $line (@current1) { + #chomp($line); # remove newline #don't know why, but this remove newline in @current1 .... ! + my @temp = split(/\t/,$line); + AddNewOptionDefinition ($temp[1] . ' ' . $temp[2]); +} + +open(FILE, "$filename2") or die 'Unable to open fixed leases file.'; +our @current2 = ; +close(FILE); + +# Check Settings1 first because they are needed by &buildconf +if ($dhcpsettings{'ACTION'} eq $Lang::tr{'save'}) { + foreach my $itf (@ITFs) { + if ($dhcpsettings{"ENABLE_${itf}"} eq 'on' ) { + # "Start" is defined, need "End" and vice versa + if ($dhcpsettings{"START_ADDR_${itf}"}) { + if (!(&General::validip($dhcpsettings{"START_ADDR_${itf}"}))) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid start address'}; + goto ERROR; + } + if (!$dhcpsettings{"END_ADDR_${itf}"}) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid end address'}; + goto ERROR; + } + if (! &General::IpInSubnet ( $dhcpsettings{"START_ADDR_${itf}"}, + $netsettings{"${itf}_NETADDRESS"}, + $netsettings{"${itf}_NETMASK"})) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid start address'}; + goto ERROR; + } + } + + if ($dhcpsettings{"END_ADDR_${itf}"}) { + if (!(&General::validip($dhcpsettings{"END_ADDR_${itf}"}))) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid end address'}; + goto ERROR; + } + if (!$dhcpsettings{"START_ADDR_${itf}"}) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid start address'}; + goto ERROR; + } + if (! &General::IpInSubnet ( $dhcpsettings{"END_ADDR_${itf}"}, + $netsettings{"${itf}_NETADDRESS"}, + $netsettings{"${itf}_NETMASK"})) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid end address'}; + goto ERROR; + } + #swap if necessary! (support 255.255.0.0 range, I doubt we need more) GE + my @startoct = split (/\./, $dhcpsettings{"START_ADDR_${itf}"}); + my @endoct = split (/\./, $dhcpsettings{"END_ADDR_${itf}"}); + if ( $endoct[2]*256+$endoct[3] < $startoct[2]*256+$startoct[3] ) { + ($dhcpsettings{"START_ADDR_${itf}"},$dhcpsettings{"END_ADDR_${itf}"}) = + ($dhcpsettings{"END_ADDR_${itf}"},$dhcpsettings{"START_ADDR_${itf}"}); + } + } + + if (!($dhcpsettings{"DEFAULT_LEASE_TIME_${itf}"} =~ /^\d+$/)) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid default lease time'} . $dhcpsettings{'DEFAULT_LEASE_TIME_${itf}'}; + goto ERROR; + } + + if (!($dhcpsettings{"MAX_LEASE_TIME_${itf}"} =~ /^\d+$/)) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid max lease time'} . $dhcpsettings{'MAX_LEASE_TIME_${itf}'}; + goto ERROR; + } + + if ($dhcpsettings{"DNS1_${itf}"}) { + if (!(&General::validip($dhcpsettings{"DNS1_${itf}"}))) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid primary dns'}; + goto ERROR; + } + } + if ($dhcpsettings{"DNS2_${itf}"}) { + if (!(&General::validip($dhcpsettings{"DNS2_${itf}"}))) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid secondary dns'}; + goto ERROR; + } + if (! $dhcpsettings{"DNS1_${itf}"}) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'cannot specify secondary dns without specifying primary'}; + goto ERROR; + } + } + + if ($dhcpsettings{"WINS1_${itf}"}) { + if (!(&General::validip($dhcpsettings{"WINS1_${itf}"}))) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid wins address'}; + goto ERROR; + } + } + if ($dhcpsettings{"WINS2_${itf}"}) { + if (!(&General::validip($dhcpsettings{"WINS2_${itf}"}))) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid wins address'}; + goto ERROR; + } + if (! $dhcpsettings{"WINS1_${itf}"} ) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'cannot specify secondary wins without specifying primary'}; + goto ERROR; + } + } + + if ($dhcpsettings{"NTP1_${itf}"}) { + if (!(&General::validip($dhcpsettings{"NTP1_${itf}"}))) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid primary ntp'}; + goto ERROR; + } + if ($dhcpsettings{"NTP1_${itf}"} eq $netsettings{"${itf}_ADDRESS"} && ($timesettings{'ENABLECLNTP'} ne 'on')) { + $warnNTPmessage = "DHCP on ${itf}: " . $Lang::tr{'local ntp server specified but not enabled'}; + #goto ERROR; + } + } + if ($dhcpsettings{"NTP2_${itf}"}) { + if (!(&General::validip($dhcpsettings{"NTP2_${itf}"}))) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid secondary ntp'}; + goto ERROR; + } + if ($dhcpsettings{"NTP2_${itf}"} eq $netsettings{"${itf}_ADDRESS"} && ($timesettings{'ENABLECLNTP'} ne 'on')) { + $warnNTPmessage = "DHCP on ${itf}: " . $Lang::tr{'local ntp server specified but not enabled'}; + #goto ERROR; + } + if (! $dhcpsettings{"NTP1_${itf}"}) { + $errormessage = "DHCP on ${itf}: " . $Lang::tr{'cannot specify secondary ntp without specifying primary'}; + goto ERROR; + } + } + } # enabled + }#loop interface verify + + map (delete ($dhcpsettings{$_}) ,@nosaved,'ACTION','KEY1','KEY2'); # Must not be saved + &General::writehash($setting, \%dhcpsettings); # Save good settings + $dhcpsettings{'ACTION'} = $Lang::tr{'save'}; # create an 'ACTION' + map ($dhcpsettings{$_} = '',@nosaved,'KEY1','KEY2'); # and reinit vars to empty + &buildconf; + ERROR: # Leave the faulty field untouched +} else { + &General::readhash($setting, \%dhcpsettings); # Get saved settings and reset to good if needed +} + +## Sorting of fixed leases +if ($ENV{'QUERY_STRING'} =~ /^FETHER|^FIPADDR/ ) { + my $newsort=$ENV{'QUERY_STRING'}; + my $act=$dhcpsettings{'SORT_FLEASELIST'}; + #Reverse actual sort ? + if ($act =~ $newsort) { + my $Rev=''; + if ($act !~ 'Rev') { + $Rev='Rev'; + } + $newsort.=$Rev; + } + $dhcpsettings{'SORT_FLEASELIST'}=$newsort; + map (delete ($dhcpsettings{$_}) ,@nosaved,'ACTION','KEY1','KEY2'); # Must never be saved + &General::writehash($setting, \%dhcpsettings); + &sortcurrent2; + $dhcpsettings{'ACTION'} = 'SORT'; # create an 'ACTION' + map ($dhcpsettings{$_} = '',@nosaved,'KEY1','KEY2');# and reinit vars to empty +} + +#Sorting of allocated leases +&Header::CheckSortOrder; + + +## Now manipulate the two multi-line list with Settings2. +# '1' suffix is for ADVANCED OPTIONS +# '2' suffix is for FIXED LEASES + +# Toggle enable/disable field on specified options. + +if ($dhcpsettings{'ACTION'} eq $Lang::tr{'toggle enable disable'}.'1') { + #move out new line + chomp(@current1[$dhcpsettings{'KEY1'}]); + my @temp = split(/\t/,@current1[$dhcpsettings{'KEY1'}]); #use TAB separator ! + $temp[0] = $temp[0] eq 'on' ? '' : 'on'; # Toggle the field + @current1[$dhcpsettings{'KEY1'}] = join ("\t",@temp)."\n"; + $dhcpsettings{'KEY1'} = ''; # End edit mode + &General::log($Lang::tr{'dhcp advopt modified'}); + open(FILE, ">$filename1") or die 'Unable to open dhcp advanced options file.'; + print FILE @current1; + close(FILE); + + #Write changes to dhcpd.conf. + &buildconf; +} + + + +if ($dhcpsettings{'ACTION'} eq $Lang::tr{'add'}.'1' && + $dhcpsettings{'SUBMIT'} ne $Lang::tr{'dhcp advopt help'}) { + $dhcpsettings{'ADVOPT_NAME'} =~ s/[^ \w-]//g; # prevent execution of code by removing everything except letters/space + $dhcpsettings{'ADVOPT_DATA'} =~ s/`//g; # back tik ` ? not allowed ! + + if ($dhcpsettings{'ADVOPT_DATA'} eq '') { + $errormessage=$Lang::tr{'dhcp advopt blank value'}; + } + + # Test for a new option definition string (join field name & data) + if (ExistNewOptionDefinition ($dhcpsettings{'ADVOPT_NAME'} . ' ' . $dhcpsettings{'ADVOPT_DATA'})) { + #only edit permitted if option definition exists + $errormessage = $Lang::tr{'dhcp advopt definition exists'} if ($dhcpsettings{'KEY1'} eq ''); + $dhcpsettings{'ADVOPT_ENABLED'} = 'on'; # force active + map ($dhcpsettings{"ADVOPT_SCOPE_$_"} = 'off', @ITFs); # force global + } elsif (AddNewOptionDefinition ($dhcpsettings{'ADVOPT_NAME'} . ' ' . $dhcpsettings{'ADVOPT_DATA'})) { + #was a new option definition + $dhcpsettings{'ADVOPT_ENABLED'} = 'on'; # force active + map ($dhcpsettings{"ADVOPT_SCOPE_$_"} = 'off', @ITFs); # force global + } elsif (ValidNewOption ($dhcpsettings{'ADVOPT_NAME'} . ' ' . $dhcpsettings{'ADVOPT_DATA'})) { + #was a new option + } elsif (! `grep "\$option $dhcpsettings{'ADVOPT_NAME'} " $filename3`) { + $errormessage=$Lang::tr{'dhcp advopt unknown'}.': '.$dhcpsettings{'ADVOPT_NAME'}; + } + + unless ($errormessage) { + + my $scope = ''; + foreach my $itf (@ITFs) { # buils "RED,GREEN,ORANGE,... based on selection + $scope .= $dhcpsettings{"ADVOPT_SCOPE_${itf}"} eq 'on' ? "\t$itf" : "\toff" ; + } + if ($dhcpsettings{'KEY1'} eq '') { #add or edit ? TAB separator ! + unshift (@current1, "$dhcpsettings{'ADVOPT_ENABLED'}\t$dhcpsettings{'ADVOPT_NAME'}\t$dhcpsettings{'ADVOPT_DATA'}$scope\n"); + &General::log($Lang::tr{'dhcp advopt added'}); + } else { + @current1[$dhcpsettings{'KEY1'}] = "$dhcpsettings{'ADVOPT_ENABLED'}\t$dhcpsettings{'ADVOPT_NAME'}\t$dhcpsettings{'ADVOPT_DATA'}$scope\n"; + $dhcpsettings{'KEY1'} = ''; # End edit mode + &General::log($Lang::tr{'dhcp advopt modified'}); + } + + #Write changes to dhcpd.conf. + &sortcurrent1; # sort newly added/modified entry + &buildconf; # before calling buildconf which use fixed lease file ! + } +} + +if ($dhcpsettings{'ACTION'} eq $Lang::tr{'edit'}.'1') { + #move out new line + my $line = @current1[$dhcpsettings{'KEY1'}]; + chomp($line); + my @temp = split(/\t/, $line); + $dhcpsettings{'ADVOPT_ENABLED'}=$temp[0]; + $dhcpsettings{'ADVOPT_NAME'}=$temp[1]; + $dhcpsettings{'ADVOPT_DATA'}=$temp[2]; + + # read next fields which are the name (color) of an interface if this interface is scoped + for (my $key=0; $key<@ITFs; $key++) { + my $itf = $temp[3+$key]; + if ($itf ne 'off') # Only is an interface name is read + { + $dhcpsettings{"ADVOPT_SCOPE_${itf}"} = 'on'; + } + } +} + +if ($dhcpsettings{'ACTION'} eq $Lang::tr{'remove'}.'1') { + splice (@current1,$dhcpsettings{'KEY1'},1); + open(FILE, ">$filename1") or die 'Unable to open dhcp advanced options file.'; + print FILE @current1; + close(FILE); + $dhcpsettings{'KEY1'} = ''; # End remove mode + &General::log($Lang::tr{'dhcp advopt removed'}); + #Write changes to dhcpd.conf. + &buildconf; +} +#end KEY1 + + +# Toggle enable/disable field on specified lease. +if ($dhcpsettings{'ACTION'} eq $Lang::tr{'toggle enable disable'}.'2') { + #move out new line + chomp(@current2[$dhcpsettings{'KEY2'}]); + my @temp = split(/\,/,@current2[$dhcpsettings{'KEY2'}]); + $temp[2] = $temp[2] eq 'on' ? '' : 'on'; # Toggle the field + @current2[$dhcpsettings{'KEY2'}] = join (',',@temp)."\n"; + $dhcpsettings{'KEY2'} = ''; # End edit mode + &General::log($Lang::tr{'fixed ip lease modified'}); + open(FILE, ">$filename2") or die 'Unable to open fixed leases file.'; + print FILE @current2; + close(FILE); + + #Write changes to dhcpd.conf. + &buildconf; +} + +if ($dhcpsettings{'ACTION'} eq $Lang::tr{'add'}.'2') { + $dhcpsettings{'FIX_MAC'} =~ tr/-/:/; + unless(&General::validip($dhcpsettings{'FIX_ADDR'})) { $errormessage = $Lang::tr{'invalid fixed ip address'}; } + unless(&General::validmac($dhcpsettings{'FIX_MAC'})) { $errormessage = $Lang::tr{'invalid fixed mac address'}; } + if ($dhcpsettings{'FIX_NEXTADDR'}) { + unless(&General::validip($dhcpsettings{'FIX_NEXTADDR'})) { $errormessage = $Lang::tr{'invalid fixed ip address'}; } + } + + my $key = 0; + CHECK:foreach my $line (@current2) { + my @temp = split(/\,/,$line); + if($dhcpsettings{'KEY2'} ne $key) { + # same MAC is OK on different subnets. This test is not complete because + # if ip are not inside a known subnet, I don't warn. + # Also it may be needed to put duplicate fixed lease in their right subnet definition.. + foreach my $itf (@ITFs) { + my $scoped = &General::IpInSubnet($dhcpsettings{'FIX_ADDR'}, + $netsettings{"${itf}_NETADDRESS"}, + $netsettings{"${itf}_NETMASK"}) && + $dhcpsettings{"ENABLE_${itf}"} eq 'on'; + if ( $scoped && + (lc($dhcpsettings{'FIX_MAC'}) eq lc($temp[0])) && + &General::IpInSubnet($temp[1], + $netsettings{"${itf}_NETADDRESS"}, + $netsettings{"${itf}_NETMASK"})) { + $errormessage = "$Lang::tr{'mac address in use'} $dhcpsettings{'FIX_MAC'}"; + last CHECK; + } + } + } + $key++; + } + + unless ($errormessage) { + $dhcpsettings{'FIX_REMARK'} = &Header::cleanhtml($dhcpsettings{'FIX_REMARK'}); + $dhcpsettings{'FIX_NEXTADDR'} = &Header::cleanhtml($dhcpsettings{'FIX_NEXTADDR'}); + $dhcpsettings{'FIX_FILENAME'} = &Header::cleanhtml($dhcpsettings{'FIX_FILENAME'}); + $dhcpsettings{'FIX_ROOTPATH'} = &Header::cleanhtml($dhcpsettings{'FIX_ROOTPATH'}); + if ($dhcpsettings{'KEY2'} eq '') { #add or edit ? + unshift (@current2, "$dhcpsettings{'FIX_MAC'},$dhcpsettings{'FIX_ADDR'},$dhcpsettings{'FIX_ENABLED'},$dhcpsettings{'FIX_NEXTADDR'},$dhcpsettings{'FIX_FILENAME'},$dhcpsettings{'FIX_ROOTPATH'},$dhcpsettings{'FIX_REMARK'}\n"); + &General::log($Lang::tr{'fixed ip lease added'}); + } else { + @current2[$dhcpsettings{'KEY2'}] = "$dhcpsettings{'FIX_MAC'},$dhcpsettings{'FIX_ADDR'},$dhcpsettings{'FIX_ENABLED'},$dhcpsettings{'FIX_NEXTADDR'},$dhcpsettings{'FIX_FILENAME'},$dhcpsettings{'FIX_ROOTPATH'},$dhcpsettings{'FIX_REMARK'}\n"; + $dhcpsettings{'KEY2'} = ''; # End edit mode + &General::log($Lang::tr{'fixed ip lease modified'}); + } + + #Write changes to dhcpd.conf. + &sortcurrent2; # sort newly added/modified entry + &buildconf; # before calling buildconf which use fixed lease file ! + } +} + +if ($dhcpsettings{'ACTION_ALL'} eq '+') { + my $news = 0; + foreach (keys %dhcpsettings) { + if (/^(\d+\.\d+\.\d+\.\d+)-([0-9a-fA-F:]+)$/) { # checked names are index of the line + my $ip=$1; + my $mac=$2; + if (!grep (/$2/,@current2)) { + unshift (@current2, "$mac,$ip,on,,,,imported\n"); + $news++; + } + } + } + if ($news) { + #Write changes to dhcpd.conf. + $warnNTPmessage = $Lang::tr{'fixed ip lease added'}."($news)"; + &General::log($warnNTPmessage); + &sortcurrent2; # sort newly added/modified entry + &buildconf; # before calling buildconf which use fixed lease file ! + } +} + +if ($dhcpsettings{'ACTION'} eq $Lang::tr{'edit'}.'2') { + #move out new line + my $line = @current2[$dhcpsettings{'KEY2'}]; + chomp($line); + my @temp = split(/\,/, $line); + $dhcpsettings{'FIX_MAC'}=$temp[0]; + $dhcpsettings{'FIX_ADDR'}=$temp[1]; + $dhcpsettings{'FIX_ENABLED'}=$temp[2]; + $dhcpsettings{'FIX_NEXTADDR'}=$temp[3]; + $dhcpsettings{'FIX_FILENAME'}=$temp[4]; + $dhcpsettings{'FIX_ROOTPATH'}=$temp[5]; + $dhcpsettings{'FIX_REMARK'}=$temp[6]; +} + +if ($dhcpsettings{'ACTION'} eq $Lang::tr{'remove'}.'2') { + splice (@current2,$dhcpsettings{'KEY2'},1); + open(FILE, ">$filename2") or die 'Unable to open fixed lease file.'; + print FILE @current2; + close(FILE); + $dhcpsettings{'KEY2'} = ''; # End remove mode + &General::log($Lang::tr{'fixed ip lease removed'}); + #Write changes to dhcpd.conf. + &buildconf; +} +#end KEY2 defined + + + + +if ($dhcpsettings{'ACTION'} eq '' ) { # First launch from GUI + + # Set default DHCP values only if blank and disabled + foreach my $itf (@ITFs) { + if ($dhcpsettings{"ENABLE_${itf}"} ne 'on' ) { + $dhcpsettings{"DNS1_${itf}"} = $netsettings{"${itf}_ADDRESS"}; + $dhcpsettings{"DEFAULT_LEASE_TIME_${itf}"} = '60'; + $dhcpsettings{"MAX_LEASE_TIME_${itf}"} = '120'; + $dhcpsettings{"DOMAIN_NAME_${itf}"} = $mainsettings{'DOMAINNAME'}; + } + } + $dhcpsettings{'FIX_ENABLED'} = 'on'; +} + +&Header::openpage($Lang::tr{'dhcp configuration'}, 1, ''); +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); +} +if ($warnNTPmessage) { + $warnNTPmessage = "$Lang::tr{'capswarning'}: $warnNTPmessage"; +} + +&Header::openbox('100%', 'left', 'DHCP'); +print "
"; + +foreach my $itf (@ITFs) { + my %checked=(); + $checked{'ENABLE'}{'on'} = ( $dhcpsettings{"ENABLE_${itf}"} ne 'on') ? '' : "checked='checked'"; + $checked{'ENABLEBOOTP'}{'on'} = ( $dhcpsettings{"ENABLEBOOTP_${itf}"} ne 'on') ? '' : "checked='checked'"; + + if ($netsettings{"${itf}_DEV"} ne '' ) { # Show only defined interface + my $lc_itf=lc($itf); +print < + + $Lang::tr{"$lc_itf interface"} + $Lang::tr{'enabled'} + + $Lang::tr{'ip address'}/$Lang::tr{'netmask'}:$netsettings{"${itf}_ADDRESS"}/$netsettings{"${itf}_NETMASK"} + + $Lang::tr{'start address'} * + + $Lang::tr{'end address'} * + + + $Lang::tr{'default lease time'} + + $Lang::tr{'max lease time'} + + + $Lang::tr{'domain name suffix'} * + + $Lang::tr{'dhcp allow bootp'}: + + + $Lang::tr{'primary dns'} + + $Lang::tr{'secondary dns'} * + + + $Lang::tr{'primary ntp server'}: * + + $Lang::tr{'secondary ntp server'}: * + + + $Lang::tr{'primary wins server address'}: * + + $Lang::tr{'secondary wins server address'}: * + + + +
+END +; + }# Show only defined interface +}#foreach itf +print < + + * $Lang::tr{'this field may be blank'} + $warnNTPmessage + + + + $Lang::tr{ + + + +END +; + +&Header::closebox(); + +&Header::openbox('100%', 'left', $Lang::tr{'dhcp advopt list'}); +# DHCP Advanced options settings +my %checked=(); +$checked{'ADVOPT_ENABLED'}{'on'} = ($dhcpsettings{'ADVOPT_ENABLED'} ne 'on') ? '' : "checked='checked'"; + +print "
"; +my $buttontext = $Lang::tr{'add'}; +if ($dhcpsettings{'KEY1'} ne '') { + $buttontext = $Lang::tr{'update'}; + print ""; +} else { + print "" +} + +#search if the 'option' is in the list and print the syntax model +my $opt = `grep "\$option $dhcpsettings{'ADVOPT_NAME'} " $filename3`; +if ($opt ne '') { + $opt =~ s/option $dhcpsettings{'ADVOPT_NAME'}/Syntax:/; # "option xyz abc" => "syntax: abc" + $opt =~ s/;//; + $opt = ""; +} +print < + + + + +$opt + + + +
$Lang::tr{'dhcp advopt edit'}
$Lang::tr{'dhcp advopt add'}
$opt
$Lang::tr{'dhcp advopt name'}:$Lang::tr{'dhcp advopt value'}:
$Lang::tr{'enabled'}$Lang::tr{'dhcp advopt scope'}: * +END +; + +# Put a checkbox for each interface. Checkbox visible disabled if interface is disabled +foreach my $itf (@ITFs) { + my $lc_itf=lc($itf); + $checked{'ADVOPT_SCOPE_${itf}'}{'on'} = $dhcpsettings{"ADVOPT_SCOPE_${itf}"} ne 'on' ? '' : "checked='checked'"; + print "$Lang::tr{\"${lc_itf}\"} " : "disabled='disabled' />"; + print "   "; +} + +print < +
+
+ + + + + +
* $Lang::tr{'dhcp advopt scope help'} + + + + +
+
+END +; +#Edited line number (KEY1) passed until cleared by 'save' or 'remove' or 'new sort order' + +# print help taken from the file describing options +if ($dhcpsettings{'SUBMIT'} eq $Lang::tr{'dhcp advopt help'}) { + print "
"; + print ""; + print ""; + open(FILE, "$filename3"); + my @current3 = ; + close(FILE); + foreach my $line (@current3) { + $line =~ /option ([a-z0-9-]+) (.*);/; + print "\n"; + } + print "\n"; + print ''; + print ''; + print ''; + print ''; + print '
$Lang::tr{'dhcp advopt name'}$Lang::tr{'dhcp advopt value'}
$1$2

string type"quoted string" or 00:01:FF...
ip-address type 10.0.0.1 | www.dot.com
int,uint typesnumbers
flag typeon | off
'; + print "
"; + print ""; + print ""; + print ""; + print ''; + print ''; + print ''; + print ''; + print '
$Lang::tr{'dhcp advopt custom definition'}$Lang::tr{'dhcp advopt value'}
any-name code NNN=$OptionTypes
a-stringcode 100=string
a-numbercode 101=signed integer 8
wpadcode 252=text
wpad"http://www.server.fr/path-to/proxy.pac"
'; + +} + +print < + + + + + + + +END +; +my $key = 0; +foreach my $line (@current1) { + my $gif = ''; + my $gdesc = ''; + chomp($line); # remove newline + my @temp = split(/\t/,$line); + + if ($temp[0] eq "on") { + $gif = 'on.gif'; + $gdesc = $Lang::tr{'click to disable'}; + } else { + $gif = 'off.gif'; + $gdesc = $Lang::tr{'click to enable'}; + } + + if ($dhcpsettings{'KEY1'} eq $key) { + print ""; + } elsif ($key % 2) { + print ""; + } else { + print ""; + } + + print <$temp[1] + + + + + + + +END +; + $key++; +} + +print "
$Lang::tr{'dhcp advopt name'}$Lang::tr{'dhcp advopt value'}$Lang::tr{'dhcp advopt scope'}$Lang::tr{'action'}
$temp[2] +END +; + # Prepare a global flag to make easy reading + my $global = ''; + my $disabledTogle = ''; + my $disabledEditRemove = ''; + if ( ExistNewOptionDefinition ($temp[1] . ' ' . $temp[2]) ) { + $global = $Lang::tr{'dhcp advopt definition'}; + $disabledTogle = "disabled='disabled'"; + # Search if it is a used NewOptionDefinition to also disable edit & delete + $disabledEditRemove = "disabled='disabled'" if (IsUsedNewOptionDefinition ($temp[1], $temp[2])); + } else { + $global = $Lang::tr{'dhcp advopt scope global'}; + } + + + # Print each checked interface + for (my $key=0; $key<@ITFs; $key++) { + my $itf = $temp[3+$key]; + if ($itf ne 'off') { # Only if an interface name is read + print "$itf"; + $global=''; # fall to local scope ! + } + } + print < + +
+ + + +
+
+
+ + + +
+
+
+ + + +
+
"; + +# If there are dhcp options, print Key to action icons +if ($key) { +print < + +  $Lang::tr{'legend'}:  + $Lang::tr{ + $Lang::tr{'click to disable'} +    + $Lang::tr{ + $Lang::tr{'click to enable'} +    + $Lang::tr{ + $Lang::tr{'edit'} +    + $Lang::tr{ + $Lang::tr{'remove'} + + +END +; +} +&Header::closebox(); + +&Header::openbox('100%', 'left', $Lang::tr{'current fixed leases'}); +# Fixed leases screens +$checked{'FIX_ENABLED'}{'on'} = ($dhcpsettings{'FIX_ENABLED'} ne 'on') ? '' : "checked='checked'"; + +$buttontext = $Lang::tr{'add'}; +print "
"; + +if ($dhcpsettings{'KEY2'} ne '') { + $buttontext = $Lang::tr{'update'}; + print ""; +} else { + print "" +} +print < + + + + + + + + + + + + + + + + + + +
$Lang::tr{'edit an existing lease'}
$Lang::tr{'add new lease'}
$Lang::tr{'mac address'}:$Lang::tr{'ip address'}:$Lang::tr{'remark'}: *
$Lang::tr{'enabled'}
$Lang::tr{'dhcp bootp pxe data'}
next-server: *filename: *root path: *
+
+ + + + + +
* $Lang::tr{'this field may be blank'} + + +
+
+END +; +#Edited line number (KEY2) passed until cleared by 'save' or 'remove' or 'new sort order' + +print < + + + + + + + + + + +END +; +my $ipdup = 0; +my %ipinuse = (); +my %macdupl = (); # Duplicate MACs have to be on different subnets +my %ipoutside = (); + +# mark duplicate ip or duplicate MAC +foreach my $line (@current2) { + my @temp = split(/\,/,$line); + $macdupl{$temp[0]} += 1; + if ($macdupl{$temp[0]} > 1) { + $ipdup = 1; # Flag up duplicates for use later + } + $ipinuse{$temp[1]} += 1; + if ($ipinuse{$temp[1]} > 1) { + $ipdup = 1; # Flag up duplicates for use later + } + # Mark IP addresses outwith known subnets + $ipoutside{$temp[1]} = 1; + foreach my $itf (@ITFs) { + if ( &General::IpInSubnet($temp[1], + $netsettings{"${itf}_NETADDRESS"}, + $netsettings{"${itf}_NETMASK"})) { + $ipoutside{$temp[1]} = 0; + } + } +} + +$key = 0; +foreach my $line (@current2) { + my $gif = ''; + my $gdesc = ''; + chomp($line); # remove newline + my @temp = split(/\,/,$line); + + if ($temp[2] eq "on") { + $gif = 'on.gif'; + $gdesc = $Lang::tr{'click to disable'}; + } else { + $gif = 'off.gif'; + $gdesc = $Lang::tr{'click to enable'}; + } + + if ($dhcpsettings{'KEY2'} eq $key) { + print ""; + } elsif ($key % 2) { + print ""; + } else { + print ""; + } + my $TAG0 = ''; + my $TAG1 = ''; + my $TAG2 = ''; + my $TAG3 = ''; + my $TAG4 = ''; + if ($ipinuse{$temp[1]} > 1) { + $TAG0 = ''; + $TAG1 = ''; + } + if ($macdupl{$temp[0]} > 1) { + $TAG2 = ''; + $TAG3 = ''; + } + if ($ipoutside{$temp[1]} > 0) { + $TAG4 = "bgcolor='orange'" if ($dhcpsettings{'KEY2'} ne $key); + } + + print <$TAG2$temp[0]$TAG3 + + + + + + + + + + + + +END +; + $key++; +} +print "
$Lang::tr{'mac address'}$Lang::tr{'ip address'}$Lang::tr{'remark'}next-serverfilenameroot path$Lang::tr{'action'}
$TAG0$temp[1]$TAG1$temp[6] $temp[3] $temp[4] $temp[5]  +
+ + + +
+
+
+ + + +
+
+
+ + + +
+
"; + +# If the fixed lease file contains entries, print Key to action icons +if ($key) { +my $dup = $ipdup ? "$Lang::tr{'duplicate ip bold'}" :''; +print < + +  $Lang::tr{'legend'}:  + $Lang::tr{ + $Lang::tr{'click to disable'} +    + $Lang::tr{ + $Lang::tr{'click to enable'} +    + $Lang::tr{ + $Lang::tr{'edit'} +    + $Lang::tr{ + $Lang::tr{'remove'} + + +   +   + $Lang::tr{'ip address outside subnets'} +   +   + $dup + + +END +; +} + +&Header::closebox(); + + +foreach my $itf (@ITFs) { + if ($dhcpsettings{"ENABLE_${itf}"} eq 'on') { + # display leases with a list of actions to do with the global select checkbox. + &Header::PrintActualLeases("+"); # "+" => create fixed leases from nodeaddress + last; #Print one time only for all interfaces + }; +} + +&Header::closebigbox(); +&Header::closepage(); + +## Ouf it's the end ! + +sub sortcurrent1 # by now, do not sort, just write +{ + open(FILE, ">$filename1") or die 'Unable to open dhcp advanced options file.'; + print FILE @current1; + close(FILE); +} + + +# Sort the "current2" array according to choices +sub sortcurrent2 +{ + our %entries = (); + + sub fixedleasesort { + my $qs=''; + if (rindex ($dhcpsettings{'SORT_FLEASELIST'},'Rev') != -1) { + $qs=substr ($dhcpsettings{'SORT_FLEASELIST'},0,length($dhcpsettings{'SORT_FLEASELIST'})-3); + if ($qs eq 'FIPADDR') { + my @a = split(/\./,$entries{$a}->{$qs}); + my @b = split(/\./,$entries{$b}->{$qs}); + ($b[0]<=>$a[0]) || + ($b[1]<=>$a[1]) || + ($b[2]<=>$a[2]) || + ($b[3]<=>$a[3]); + } else { + $entries{$b}->{$qs} cmp $entries{$a}->{$qs}; + } + } else { #not reverse + $qs=$dhcpsettings{'SORT_FLEASELIST'}; + if ($qs eq 'FIPADDR') { + my @a = split(/\./,$entries{$a}->{$qs}); + my @b = split(/\./,$entries{$b}->{$qs}); + ($a[0]<=>$b[0]) || + ($a[1]<=>$b[1]) || + ($a[2]<=>$b[2]) || + ($a[3]<=>$b[3]); + } else { + $entries{$a}->{$qs} cmp $entries{$b}->{$qs}; + } + } + } + + #Use an associative array (%entries) + foreach my $line (@current2) { + chomp( $line); #remove newline because can be on field 5 or 6 (addition of REMARK) + my @temp = split (',',$line); + my @record = ('FETHER',$temp[0],'FIPADDR',$temp[1],'DATA',join(',',@temp[2..6])); + my $record = {}; # create a reference to empty hash + %{$record} = @record; # populate that hash with @record + # use combination of ether & IP as key to allow duplicates in either but not both + $entries{$record->{FETHER} . $record->{FIPADDR}} = $record; # add this to a hash of hashes + } + + open(FILE, ">$filename2") or die 'Unable to open fixed lease file.'; + foreach my $entry ( sort fixedleasesort keys %entries) { + print FILE "$entries{$entry}->{FETHER},$entries{$entry}->{FIPADDR},$entries{$entry}->{DATA}\n"; + } + close(FILE); + + # Reload sorted @current2 + open (FILE, "$filename2"); + @current2 = ; + close (FILE); + undef (%entries); #This array is reused latter. Clear it. +} + +# Build the configuration file mixing settings, fixed leases and advanced options +sub buildconf { + open(FILE, ">/${General::swroot}/dhcp/dhcpd.conf") or die "Unable to write dhcpd.conf file"; + flock(FILE, 2); + + # Global settings + print FILE "ddns-update-style none;\n"; + print FILE "deny bootp; #default\n"; + print FILE "authoritative;\n"; + + # Write first new option definition + foreach my $line (@current1) { + chomp($line); # remove newline + my @temp = split(/\t/,$line); + if (ExistNewOptionDefinition ($temp[1] . ' ' . $temp[2])) { + print FILE "option $temp[1] $temp[2];\n"; + } + } + # Write other global options + foreach my $line (@current1) { + chomp($line); # remove newline + my @temp = split(/\t/,$line); + + if ($temp[0] eq 'on' && !ExistNewOptionDefinition ($temp[1] . ' ' . $temp[2])){ # active & !definition + my $global=1; + for (my $key=0; $key<@ITFs; $key++) { + my $itf = $temp[3+$key]; + if ($itf ne 'off') # Only if an interface name is read + { + $global=0; + } + } + if ($global) { + print FILE "option $temp[1] $temp[2];\n"; + } + }# on + }# foreach line + + #Subnet range definition + foreach my $itf (@ITFs) { + my $lc_itf=lc($itf); + if ($dhcpsettings{"ENABLE_${itf}"} eq 'on' ){ + print FILE "\nsubnet " . $netsettings{"${itf}_NETADDRESS"} . " netmask ". $netsettings{"${itf}_NETMASK"} . " #$itf\n"; + print FILE "{\n"; + print FILE "\trange " . $dhcpsettings{"START_ADDR_${itf}"} . ' ' . $dhcpsettings{"END_ADDR_${itf}"}.";\n" if ($dhcpsettings{"START_ADDR_${itf}"}); + print FILE "\toption subnet-mask " . $netsettings{"${itf}_NETMASK"} . ";\n"; + print FILE "\toption domain-name \"" . $dhcpsettings{"DOMAIN_NAME_${itf}"} . "\";\n"; + print FILE "\toption routers " . $netsettings{"${itf}_ADDRESS"} . ";\n"; + print FILE "\toption domain-name-servers " . $dhcpsettings{"DNS1_${itf}"} if ($dhcpsettings{"DNS1_${itf}"}); + print FILE ", " . $dhcpsettings{"DNS2_${itf}"} if ($dhcpsettings{"DNS2_${itf}"}); + print FILE ";\n" if ($dhcpsettings{"DNS1_${itf}"}); + print FILE "\toption ntp-servers " . $dhcpsettings{"NTP1_${itf}"} if ($dhcpsettings{"NTP1_${itf}"}); + print FILE ", " . $dhcpsettings{"NTP2_${itf}"} if ($dhcpsettings{"NTP2_${itf}"}); + print FILE ";\n" if ($dhcpsettings{"NTP1_${itf}"}); + print FILE "\toption netbios-name-servers " . $dhcpsettings{"WINS1_${itf}"} if ($dhcpsettings{"WINS1_${itf}"}); + print FILE ", " . $dhcpsettings{"WINS2_${itf}"} if ($dhcpsettings{"WINS2_${itf}"}); + print FILE ";\n" if ($dhcpsettings{"WINS1_${itf}"}); + print FILE "\tdefault-lease-time " . ($dhcpsettings{"DEFAULT_LEASE_TIME_${itf}"} * 60). ";\n"; + print FILE "\tmax-lease-time " . ($dhcpsettings{"MAX_LEASE_TIME_${itf}"} * 60) . ";\n"; + print FILE "\tallow bootp;\n" if ($dhcpsettings{"ENABLEBOOTP_${itf}"} eq 'on'); + + + + # Write scoped options + foreach my $line (@current1) { + chomp($line); # remove newline + my @temp = split(/\t/,$line); # Use TAB separator ! + + if ($temp[0] eq 'on'){ + for (my $key=0; $key<@ITFs; $key++) { + if ($itf eq $temp[3+$key]) # Only is an interface name is read + { + print FILE "\toption $temp[1] $temp[2];\n"; + } + } + }# on + }# foreach line + print FILE "} #$itf\n"; + + system ('/bin/touch', "${General::swroot}/dhcp/enable_${lc_itf}"); + &General::log("DHCP on ${itf}: " . $Lang::tr{'dhcp server enabled'}) + } else { + unlink "${General::swroot}/dhcp/enable_${lc_itf}"; + &General::log("DHCP on ${itf}: " . $Lang::tr{'dhcp server disabled'}) + } + } + + #write fixed leases if any. Does not handle duplicates to write them elsewhere than the global scope. + my $key = 0; + foreach my $line (@current2) { + chomp($line); + my @temp = split(/\,/,$line); + if ($temp[2] eq "on") { + print FILE "\nhost fix$key # $temp[6]\n"; + print FILE "{\n"; + print FILE "\thardware ethernet $temp[0];\n"; + print FILE "\tfixed-address $temp[1];\n"; + print FILE "\tnext-server $temp[3];\n" if ($temp[3]); + print FILE "\tfilename \"$temp[4]\";\n" if ($temp[4]); + print FILE "\toption root-path \"$temp[5]\";\n" if ($temp[5]); + print FILE "}\n"; + $key++; + } + } + close FILE; + system '/usr/local/bin/restartdhcp'; +} + +# +# Receive a string and if it match model for a new option, +# add it to the list %newOptions +# +my %NewOptions = (); + +sub AddNewOptionDefinition { + my ($line) = @_; + if ( $line =~ /^([-\w]+)( code \d+=($OptionTypes))/ ) { + $NewOptions{$1} = $2; + #&General::log ("new:<$1><$2>"); + return 1; + } + return 0; +} + +# +# Check existence of definition for a new option +# +sub ExistNewOptionDefinition { + my ($line) = @_; + + if ( $line =~ /^([-\w]+)( code \d+=($OptionTypes))/ ) { + return defined $NewOptions{$1}; + } + return 0; +} + +# +# Check if it is a new option (definition must exist) +# "code=" test eliminate a false response when definition exists +# but this string is a definition with bad $OptionTypes. +sub ValidNewOption { + my ($line) = @_; + if ($line =~ /^([-\w]+) (.*)/ ) { + return defined ( $NewOptions{$1} ) && $2 !~ /code=/; + } + return 0; +} + +# +# Check if the new option $opt is used, except the definition of itself! +# +sub IsUsedNewOptionDefinition { + my ($opt,$val) = @_; + + foreach my $line (@current1) { + #chomp($line); # remove newline #don't know why, but this remove newline in @current1 .... ! + my @temp = split(/\t/,$line); + # if we find something "opt value" & value != "code nnn=" it's ok. + return 1 if ( ($opt eq $temp[1]) && ($temp[2] !~ /code \d+=/) ); + } + return 0; +} diff --git a/html/cgi-bin/dial.cgi b/html/cgi-bin/dial.cgi new file mode 100644 index 0000000000..88f7bad3cd --- /dev/null +++ b/html/cgi-bin/dial.cgi @@ -0,0 +1,35 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: dial.cgi,v 1.4.2.3 2005/02/22 22:21:55 gespinasse Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %cgiparams=(); + +$cgiparams{'ACTION'} = ''; +&Header::getcgihash(\%cgiparams); + +if ($cgiparams{'ACTION'} eq $Lang::tr{'dial'}) { + system('/etc/rc.d/rc.red','start') == 0 + or &General::log("Dial failed: $?"); } +elsif ($cgiparams{'ACTION'} eq $Lang::tr{'hangup'}) { + system('/etc/rc.d/rc.red','stop') == 0 + or &General::log("Hangup failed: $?"); } +sleep 1; + +print "Status: 302 Moved\nLocation: /cgi-bin/index.cgi\n\n"; diff --git a/html/cgi-bin/dmzholes.cgi b/html/cgi-bin/dmzholes.cgi new file mode 100644 index 0000000000..64354eeb7e --- /dev/null +++ b/html/cgi-bin/dmzholes.cgi @@ -0,0 +1,440 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: dmzholes.cgi,v 1.9.2.16 2005/10/18 17:05:27 franck78 Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::table2colour}, ${Header::colouryellow} ); +undef (@dummy); + +my %cgiparams=(); +my %checked=(); +my %selected=(); +my %netsettings=(); +my $errormessage = ''; +my $filename = "${General::swroot}/dmzholes/config"; + +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); + +&Header::showhttpheaders(); + +$cgiparams{'ENABLED'} = 'off'; +$cgiparams{'REMARK'} = ''; +$cgiparams{'ACTION'} = ''; +$cgiparams{'SRC_IP'} = ''; +$cgiparams{'DEST_IP'} =''; +$cgiparams{'DEST_PORT'} = ''; +&Header::getcgihash(\%cgiparams); + +open(FILE, $filename) or die 'Unable to open config file.'; +my @current = ; +close(FILE); + +if ($cgiparams{'ACTION'} eq $Lang::tr{'add'}) +{ + unless($cgiparams{'PROTOCOL'} =~ /^(tcp|udp)$/) { $errormessage = $Lang::tr{'invalid input'}; } + unless(&General::validipormask($cgiparams{'SRC_IP'})) { $errormessage = $Lang::tr{'source ip bad'}; } + unless($errormessage){$errormessage = &General::validportrange($cgiparams{'DEST_PORT'},'dst');} + unless(&General::validipormask($cgiparams{'DEST_IP'})) { $errormessage = $Lang::tr{'destination ip bad'}; } + unless ($errormessage) { + $errormessage = &validNet($cgiparams{'SRC_NET'},$cgiparams{'DEST_NET'}); } + # Darren Critchley - Remove commas from remarks + $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'}); + + unless ($errormessage) + { + if($cgiparams{'EDITING'} eq 'no') { + open(FILE,">>$filename") or die 'Unable to open config file.'; + flock FILE, 2; + print FILE "$cgiparams{'PROTOCOL'},"; # [0] + print FILE "$cgiparams{'SRC_IP'},"; # [1] + print FILE "$cgiparams{'DEST_IP'},"; # [2] + print FILE "$cgiparams{'DEST_PORT'},"; # [3] + print FILE "$cgiparams{'ENABLED'},"; # [4] + print FILE "$cgiparams{'SRC_NET'},"; # [5] + print FILE "$cgiparams{'DEST_NET'},"; # [6] + print FILE "$cgiparams{'REMARK'}\n"; # [7] + } else { + open(FILE,">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + my $id = 0; + foreach my $line (@current) + { + $id++; + if ($cgiparams{'EDITING'} eq $id) { + print FILE "$cgiparams{'PROTOCOL'},"; # [0] + print FILE "$cgiparams{'SRC_IP'},"; # [1] + print FILE "$cgiparams{'DEST_IP'},"; # [2] + print FILE "$cgiparams{'DEST_PORT'},"; # [3] + print FILE "$cgiparams{'ENABLED'},"; # [4] + print FILE "$cgiparams{'SRC_NET'},"; # [5] + print FILE "$cgiparams{'DEST_NET'},"; # [6] + print FILE "$cgiparams{'REMARK'}\n"; # [7] + } else { print FILE "$line"; } + } + } + close(FILE); + undef %cgiparams; + &General::log($Lang::tr{'dmz pinhole rule added'}); + system('/usr/local/bin/setdmzholes'); + } +} +if ($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) +{ + my $id = 0; + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + foreach my $line (@current) + { + $id++; + unless ($cgiparams{'ID'} eq $id) { print FILE "$line"; } + } + close(FILE); + system('/usr/local/bin/setdmzholes'); + &General::log($Lang::tr{'dmz pinhole rule removed'}); +} +if ($cgiparams{'ACTION'} eq $Lang::tr{'toggle enable disable'}) +{ + my $id = 0; + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + foreach my $line (@current) + { + $id++; + unless ($cgiparams{'ID'} eq $id) { print FILE "$line"; } + else + { + chomp($line); + my @temp = split(/\,/,$line); + print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$cgiparams{'ENABLE'},$temp[5],$temp[6],$temp[7]\n"; + } + } + close(FILE); + system('/usr/local/bin/setdmzholes'); +} +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) +{ + my $id = 0; + foreach my $line (@current) + { + $id++; + if ($cgiparams{'ID'} eq $id) + { + chomp($line); + my @temp = split(/\,/,$line); + $cgiparams{'PROTOCOL'} = $temp[0]; + $cgiparams{'SRC_IP'} = $temp[1]; + $cgiparams{'DEST_IP'} = $temp[2]; + $cgiparams{'DEST_PORT'} = $temp[3]; + $cgiparams{'ENABLED'} = $temp[4]; + $cgiparams{'SRC_NET'} = $temp[5]; + $cgiparams{'DEST_NET'} = $temp[6]; + $cgiparams{'REMARK'} = $temp[7]; + } + } +} + +if ($cgiparams{'ACTION'} eq '') +{ + $cgiparams{'PROTOCOL'} = 'tcp'; + $cgiparams{'ENABLED'} = 'on'; + $cgiparams{'SRC_NET'} = 'orange'; + $cgiparams{'DEST_NET'} = 'blue'; +} + +$selected{'PROTOCOL'}{'udp'} = ''; +$selected{'PROTOCOL'}{'tcp'} = ''; +$selected{'PROTOCOL'}{$cgiparams{'PROTOCOL'}} = "selected='selected'"; + +$selected{'SRC_NET'}{'orange'} = ''; +$selected{'SRC_NET'}{'blue'} = ''; +$selected{'SRC_NET'}{$cgiparams{'SRC_NET'}} = "selected='selected'"; + +$selected{'DEST_NET'}{'blue'} = ''; +$selected{'DEST_NET'}{'green'} = ''; +$selected{'DEST_NET'}{$cgiparams{'DEST_NET'}} = "selected='selected'"; + +$checked{'ENABLED'}{'off'} = ''; +$checked{'ENABLED'}{'on'} = ''; +$checked{'ENABLED'}{$cgiparams{'ENABLED'}} = "checked='checked'"; + +&Header::openpage($Lang::tr{'dmz pinhole configuration'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage\n"; + print " \n"; + &Header::closebox(); +} + +print "
\n"; + +my $buttonText = $Lang::tr{'add'}; +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) { + &Header::openbox('100%', 'left', $Lang::tr{'edit a rule'}); + $buttonText = $Lang::tr{'update'}; +} else { + &Header::openbox('100%', 'left', $Lang::tr{'add a new rule'}); +} +print < + + + + + + $Lang::tr{'source net'}: + + + + + +   + + $Lang::tr{'destination net'}: + + + + + $Lang::tr{'destination ip or net'}: + + + + + $Lang::tr{'destination port'}:  + + + + + + + + + + + + + +
+ $Lang::tr{'remark title'} * + +
+ *  + $Lang::tr{'this field may be blank'} + $Lang::tr{'enabled'} + + +
+END +; +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) { + print "\n"; +} else { + print "\n"; +} +&Header::closebox(); +print "\n"; + +&Header::openbox('100%', 'left', $Lang::tr{'current rules'}); +print < + +$Lang::tr{'proto'} +$Lang::tr{'net'} +$Lang::tr{'source'} +  +$Lang::tr{'net'} +$Lang::tr{'destination'} +$Lang::tr{'remark'} +  +$Lang::tr{'action'} +END +; + +# Achim Weber: if i add a new rule, this rule is not displayed?!? +# we re-read always config. +# If something has happeened re-read config +#if($cgiparams{'ACTION'} ne '') +#{ + open(FILE, $filename) or die 'Unable to open config file.'; + @current = ; + close(FILE); +#} +my $id = 0; +foreach my $line (@current) +{ + my $protocol=''; + my $gif=''; + my $toggle=''; + my $gdesc=''; + $id++; + chomp($line); + my @temp = split(/\,/,$line); + if ($temp[0] eq 'udp') { $protocol = 'UDP'; } else { $protocol = 'TCP' } + + my $srcnetcolor = ($temp[5] eq 'blue')? ${Header::colourblue} : ${Header::colourorange}; + my $destnetcolor = ($temp[6] eq 'blue')? ${Header::colourblue} : ${Header::colourgreen}; + + if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'ID'} eq $id) { + print "\n"; } + elsif ($id % 2) { + print "\n"; } + else { + print "\n"; } + if ($temp[4] eq 'on') { $gif='on.gif'; $toggle='off'; $gdesc=$Lang::tr{'click to disable'};} + else { $gif = 'off.gif'; $toggle='on'; $gdesc=$Lang::tr{'click to enable'}; } + + # Darren Critchley - Get Port Service Name if we can - code borrowed from firewalllog.dat + my $dstprt =$temp[3]; + $_=$temp[3]; + if (/^\d+$/) { + my $servi = uc(getservbyport($temp[3], lc($temp[0]))); + if ($servi ne '' && $temp[3] < 1024) { + $dstprt = "$dstprt($servi)"; } + } + # Darren Critchley - If the line is too long, wrap the port numbers + my $dstaddr = "$temp[2] : $dstprt"; + if (length($dstaddr) > 26) { + $dstaddr = "$temp[2] :
$dstprt"; + } +print <$protocol + +$temp[1] + + +$dstaddr +$temp[7] + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +END + ; +} +print "\n"; + +# If the fixed lease file contains entries, print Key to action icons +if ( ! -z "$filename") { +print < + +   $Lang::tr{'legend'}: +   $Lang::tr{ + $Lang::tr{'click to disable'} +     $Lang::tr{ + $Lang::tr{'click to enable'} +     $Lang::tr{ + $Lang::tr{'edit'} +     $Lang::tr{ + $Lang::tr{'remove'} + + +END +; +} + +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); + +sub validNet +{ + my $srcNet = $_[0]; + my $destNet = $_[1]; + + if ($srcNet eq $destNet) { + return $Lang::tr{'dmzpinholes for same net not necessary'}; } + unless ($srcNet =~ /^(blue|orange)$/) { + return $Lang::tr{'select source net'}; } + unless ($destNet =~ /^(blue|green)$/) { + return $Lang::tr{'select dest net'}; } + + return ''; +} + +sub haveOrangeNet +{ + if ($netsettings{'CONFIG_TYPE'} == 1) {return 1;} + if ($netsettings{'CONFIG_TYPE'} == 3) {return 1;} + if ($netsettings{'CONFIG_TYPE'} == 5) {return 1;} + if ($netsettings{'CONFIG_TYPE'} == 7) {return 1;} + return 0; +} + +sub haveBlueNet +{ + if ($netsettings{'CONFIG_TYPE'} == 4) {return 1;} + if ($netsettings{'CONFIG_TYPE'} == 5) {return 1;} + if ($netsettings{'CONFIG_TYPE'} == 6) {return 1;} + if ($netsettings{'CONFIG_TYPE'} == 7) {return 1;} + return 0; +} diff --git a/html/cgi-bin/graphs.cgi b/html/cgi-bin/graphs.cgi new file mode 100644 index 0000000000..5c6f91512e --- /dev/null +++ b/html/cgi-bin/graphs.cgi @@ -0,0 +1,148 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: graphs.cgi,v 1.9.2.6 2005/02/22 22:21:55 gespinasse Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %cgiparams=(); +my %pppsettings=(); +my %netsettings=(); +my @cgigraphs=(); +my @graphs=(); +my $iface=''; + +&Header::showhttpheaders(); + +my $graphdir = "/home/httpd/html/graphs"; +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); + +$ENV{'QUERY_STRING'} =~ s/&//g; +@cgigraphs = split(/graph=/,$ENV{'QUERY_STRING'}); +$cgigraphs[1] = '' unless defined $cgigraphs[1]; + +if ($cgigraphs[1] =~ /(network|GREEN|BLUE|ORANGE|RED)/) { + &Header::openpage($Lang::tr{'network traffic graphs'}, 1, ''); +} else { + &Header::openpage($Lang::tr{'system graphs'}, 1, ''); +} +&Header::openbigbox('100%', 'left'); + +if ($cgigraphs[1] =~ /(GREEN|BLUE|ORANGE|RED|cpu|memory|swap|disk)/) { + my $graph = $cgigraphs[1]; + my $graphname = ucfirst(lc($cgigraphs[1])); + &Header::openbox('100%', 'center', "$graphname $Lang::tr{'graph'}"); + + if (-e "$graphdir/${graph}-day.png") { + my $ftime = localtime((stat("$graphdir/${graph}-day.png"))[9]); + print "
"; + print "$Lang::tr{'the statistics were last updated at'}: $ftime


\n"; + print "
"; + print "
"; + print "
"; + print ""; + } else { + print $Lang::tr{'no information available'}; + } + &Header::closebox(); + print "
"; + if ($cgigraphs[1] =~ /(GREEN|BLUE|ORANGE|RED)/) { + print ""; + } else { + print ""; + } + print "$Lang::tr{'back'}
\n"; + ; +} elsif ($cgigraphs[1] =~ /network/) { + push (@graphs, ('GREEN')); + if ($netsettings{'BLUE_DEV'}) { + push (@graphs, ('BLUE')); } + if ($netsettings{'ORANGE_DEV'}) { + push (@graphs, ('ORANGE')); } + push (@graphs, ("RED")); + + foreach my $graphname (@graphs) { + &Header::openbox('100%', 'center', "$graphname $Lang::tr{'graph'}"); + + if (-e "$graphdir/${graphname}-day.png") { + my $ftime = localtime((stat("$graphdir/${graphname}-day.png"))[9]); + print "
$Lang::tr{'the statistics were last updated at'}: $ftime

\n"; + print ""; + print ""; + print ""; + } else { + print $Lang::tr{'no information available'}; + } + print "
\n"; + &Header::closebox(); + } +} else { + &Header::openbox('100%', 'center', "CPU $Lang::tr{'graph'}"); + if (-e "$graphdir/cpu-day.png") { + my $ftime = localtime((stat("$graphdir/cpu-day.png"))[9]); + print "
$Lang::tr{'the statistics were last updated at'}: $ftime

\n"; + print ""; + print ""; + print ""; + } else { + print $Lang::tr{'no information available'}; + } + print "
\n"; + &Header::closebox(); + + &Header::openbox('100%', 'center', "Memory $Lang::tr{'graph'}"); + if (-e "$graphdir/memory-day.png") { + my $ftime = localtime((stat("$graphdir/memory-day.png"))[9]); + print "
$Lang::tr{'the statistics were last updated at'}: $ftime

\n"; + print ""; + print ""; + print ""; + } else { + print $Lang::tr{'no information available'}; + } + print "
\n"; + &Header::closebox(); + + &Header::openbox('100%', 'center', "Swap $Lang::tr{'graph'}"); + if (-e "$graphdir/swap-day.png") { + my $ftime = localtime((stat("$graphdir/swap-day.png"))[9]); + print "
$Lang::tr{'the statistics were last updated at'}: $ftime

\n"; + print ""; + print ""; + print ""; + } else { + print $Lang::tr{'no information available'}; + } + print "
\n"; + &Header::closebox(); + + &Header::openbox('100%', 'center', "Disk $Lang::tr{'graph'}"); + if (-e "$graphdir/disk-day.png") { + my $ftime = localtime((stat("$graphdir/disk-day.png"))[9]); + print "
$Lang::tr{'the statistics were last updated at'}: $ftime

\n"; + print ""; + print ""; + print ""; + } else { + print $Lang::tr{'no information available'}; + } + print "
\n"; + &Header::closebox(); +} + +&Header::closebigbox(); +&Header::closepage(); diff --git a/html/cgi-bin/gui.cgi b/html/cgi-bin/gui.cgi new file mode 100644 index 0000000000..319542878d --- /dev/null +++ b/html/cgi-bin/gui.cgi @@ -0,0 +1,229 @@ +#!/usr/bin/perl +# +# IPCop CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) Bill Ward +# +# $Id: gui.cgi,v 1.2.2.17 2005/07/06 09:21:22 franck78 Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %cgiparams=(); +my %mainsettings=(); +my %checked=(); +my $errormessage=''; + + +$cgiparams{'JAVASCRIPT'} = 'off'; +$cgiparams{'WINDOWWITHHOSTNAME'} = 'off'; +$cgiparams{'REFRESHINDEX'} = 'off'; +$cgiparams{'ACTION'} = ''; +&Header::getcgihash(\%cgiparams); + +&Header::showhttpheaders(); +&General::readhash("${General::swroot}/main/settings",\%mainsettings); +if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}") +{ + open(FILE,"${General::swroot}/langs/list"); + my $found=0; + while () + { + my $lang=''; + my $engname=''; + my $natname=''; + chomp; + ($lang,$engname,$natname) = split (/:/, $_,3); + if ($cgiparams{'lang'} eq $lang) + { + $found=1; + } + } + close (FILE); + if ( $found == 0 ) + { + $errormessage="$errormessage

$Lang::tr{'invalid input'}"; + goto SAVE_ERROR; + } + + if ($cgiparams{'JAVASCRIPT'} !~ /^(on|off)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto SAVE_ERROR; + } + + # Set flag if index page is to refresh whilst ppp is up. + # Default is NO refresh. + if ($cgiparams{'REFRESHINDEX'} ne 'off') { + system ('/bin/touch', "${General::swroot}/main/refreshindex"); + } else { + unlink "${General::swroot}/main/refreshindex"; + } + + # Beep on ip-up or ip-down. Default is ON. + if ($cgiparams{'PPPUPDOWNBEEP'} ne 'on') { + $cgiparams{'PPPUPDOWNBEEP'} = 'off'; + system ('/bin/touch', "${General::swroot}/ppp/nobeeps"); + } else { + unlink "${General::swroot}/ppp/nobeeps"; + } + + # write cgi vars to the file. + $mainsettings{'LANGUAGE'} = $cgiparams{'lang'}; + $mainsettings{'JAVASCRIPT'} = $cgiparams{'JAVASCRIPT'}; + $mainsettings{'WINDOWWITHHOSTNAME'} = $cgiparams{'WINDOWWITHHOSTNAME'}; + $mainsettings{'PPPUPDOWNBEEP'} = $cgiparams{'PPPUPDOWNBEEP'}; + $mainsettings{'REFRESHINDEX'} = $cgiparams{'REFRESHINDEX'}; + &General::writehash("${General::swroot}/main/settings", \%mainsettings); + &Lang::reload($cgiparams{'lang'}); + SAVE_ERROR: +} else { + if ($mainsettings{'JAVASCRIPT'}) { + $cgiparams{'JAVASCRIPT'} = $mainsettings{'JAVASCRIPT'}; + } else { + $cgiparams{'JAVASCRIPT'} = 'on'; + } + + if ($mainsettings{'WINDOWWITHHOSTNAME'}) { + $cgiparams{'WINDOWWITHHOSTNAME'} = $mainsettings{'WINDOWWITHHOSTNAME'}; + } else { + $cgiparams{'WINDOWWITHHOSTNAME'} = 'off'; + } + + if ($mainsettings{'PPPUPDOWNBEEP'}) { + $cgiparams{'PPPUPDOWNBEEP'} = $mainsettings{'PPPUPDOWNBEEP'}; + } else { + $cgiparams{'PPPUPDOWNBEEP'} = 'on'; + } + + if($mainsettings{'REFRESHINDEX'}) { + $cgiparams{'REFRESHINDEX'} = $mainsettings{'REFRESHINDEX'}; + } else { + $cgiparams{'REFRESHINDEX'} = 'off'; + } +} + +# Default settings +if ($cgiparams{'ACTION'} eq "$Lang::tr{'restore defaults'}") +{ + $cgiparams{'JAVASCRIPT'} = 'on'; + $cgiparams{'WINDOWWITHHOSTNAME'} = 'off'; + $cgiparams{'PPPUPDOWNBEEP'} = 'on'; + $cgiparams{'REFRESHINDEX'} = 'off'; +} + +$checked{'JAVASCRIPT'}{'off'} = ''; +$checked{'JAVASCRIPT'}{'on'} = ''; +$checked{'JAVASCRIPT'}{$cgiparams{'JAVASCRIPT'}} = "checked='checked'"; + +$checked{'WINDOWWITHHOSTNAME'}{'off'} = ''; +$checked{'WINDOWWITHHOSTNAME'}{'on'} = ''; +$checked{'WINDOWWITHHOSTNAME'}{$cgiparams{'WINDOWWITHHOSTNAME'}} = "checked='checked'"; + +$checked{'PPPUPDOWNBEEP'}{'off'} = ''; +$checked{'PPPUPDOWNBEEP'}{'on'} = ''; +$checked{'PPPUPDOWNBEEP'}{$cgiparams{'PPPUPDOWNBEEP'}} = "checked='checked'"; + +$checked{'REFRESHINDEX'}{'off'} = ''; +$checked{'REFRESHINDEX'}{'on'} = ''; +$checked{'REFRESHINDEX'}{$cgiparams{'REFRESHINDEX'}} = "checked='checked'"; + +&Header::openpage($Lang::tr{'gui settings'}, 1, ''); +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%','left',$Lang::tr{'error messages'}); + print "${errormessage} \n"; + &Header::closebox(); +} + +&Header::openbox('100%','left',$Lang::tr{'gui settings'}); + +print < + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

$Lang::tr{'display'}

+ $Lang::tr{'enable javascript'}
$Lang::tr{'display hostname in window title'}
$Lang::tr{'refresh index page while connected'}
 $Lang::tr{'languagepurpose'}
 

$Lang::tr{'sound'}

$Lang::tr{'beep when ppp connects or disconnects'}

+

+ + + + + +
+
+ +END +; +&Header::closebox(); +&Header::closebigbox(); +&Header::closepage(); + + + diff --git a/html/cgi-bin/hosts.cgi b/html/cgi-bin/hosts.cgi new file mode 100644 index 0000000000..b8b43bc674 --- /dev/null +++ b/html/cgi-bin/hosts.cgi @@ -0,0 +1,449 @@ +#!/usr/bin/perl +# +# IPCop CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) Alan Hourihane +# +# $Id: hosts.cgi,v 1.4.2.20 2005/11/05 15:46:25 gespinasse Exp $ +# +# Franck +# use dhcp.cgi model to rewrite this code + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::colouryellow} ); +undef (@dummy); + +# Files used +my $setting = "${General::swroot}/main/settings"; +our $datafile = "${General::swroot}/main/hosts"; #(our: used in subroutine) + +our %settings = (); +#Settings1 +# removed + +#Settings2 for editing the multi-line list +#Must not be saved ! +$settings{'EN'} = ''; # reuse for dummy field in position zero +$settings{'IP'} = ''; +$settings{'HOST'} = ''; +$settings{'DOM'} = ''; +my @nosaved=('EN','IP','HOST','DOM'); # List here ALL setting2 fields. Mandatory + +$settings{'ACTION'} = ''; # add/edit/remove +$settings{'KEY1'} = ''; # point record for ACTION + +#Define each field that can be used to sort columns +my $sortstring='^IP|^HOST|^DOM'; +$settings{'SORT_HOSTSLIST'} = 'HOST'; +my $errormessage = ''; +my $warnmessage = ''; + +&Header::showhttpheaders(); + +#Get GUI values +&Header::getcgihash(\%settings); + +# Load multiline data +our @current = (); +if (open(FILE, "$datafile")) { + @current = ; + close (FILE); +} + +## Settings1 Box not used... +&General::readhash("${General::swroot}/main/settings", \%settings); + + +## Now manipulate the multi-line list with Settings2 +# Basic actions are: +# toggle the check box +# add/update a new line +# begin editing a line +# remove a line + + +# Toggle enable/disable field. Field is in second position +if ($settings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) { + #move out new line + chomp(@current[$settings{'KEY1'}]); + my @temp = split(/\,/,@current[$settings{'KEY1'}]); + + $temp[0] = $temp[0] ne '' ? '' : 'on'; # Toggle the field + @current[$settings{'KEY1'}] = join (',',@temp)."\n"; + $settings{'KEY1'} = ''; # End edit mode + + &General::log($Lang::tr{'hosts config changed'}); + + #Save current + open(FILE, ">$datafile") or die 'hosts datafile error'; + print FILE @current; + close(FILE); + + # Rebuild configuration file + &BuildConfiguration; +} + +if ($settings{'ACTION'} eq $Lang::tr{'add'}) { + # Validate inputs + unless(&General::validip($settings{'IP'})) { + $errormessage = $Lang::tr{'invalid fixed ip address'}; + } + + unless(&General::validhostname($settings{'HOST'})) { + $errormessage = $Lang::tr{'invalid hostname'}; + } + + if ($settings{'DOM'} && ! &General::validdomainname($settings{'DOM'})) { + $errormessage = $Lang::tr{'invalid domain name'}; + } + + + unless ($errormessage) { + if ($settings{'KEY1'} eq '') { #add or edit ? + unshift (@current, "$settings{'EN'},$settings{'IP'},$settings{'HOST'},$settings{'DOM'}\n"); + &General::log($Lang::tr{'hosts config added'}); + } else { + @current[$settings{'KEY1'}] = "$settings{'EN'},$settings{'IP'},$settings{'HOST'},$settings{'DOM'}\n"; + $settings{'KEY1'} = ''; # End edit mode + &General::log($Lang::tr{'hosts config changed'}); + } + + # Write changes to config file. + &SortDataFile; # sort newly added/modified entry + &BuildConfiguration; # then re-build new host + + #map ($settings{$_}='' ,@nosaved); # Clear fields + } +} + +if ($settings{'ACTION'} eq $Lang::tr{'edit'}) { + #move out new line + my $line = @current[$settings{'KEY1'}]; # KEY1 is the index in current + chomp($line); + my @temp = split(/\,/, $line); + $settings{'EN'}=$temp[0]; # Prepare the screen for editing + $settings{'IP'}=$temp[1]; + $settings{'HOST'}=$temp[2]; + $settings{'DOM'}=$temp[3]; +} + +if ($settings{'ACTION'} eq $Lang::tr{'remove'}) { + splice (@current,$settings{'KEY1'},1); # Delete line + open(FILE, ">$datafile") or die 'hosts datafile error'; + print FILE @current; + close(FILE); + $settings{'KEY1'} = ''; # End remove mode + &General::log($Lang::tr{'hosts config changed'}); + + &BuildConfiguration; # then re-build conf which use new data +} + + + +## Check if sorting is asked +# If same column clicked, reverse the sort. +if ($ENV{'QUERY_STRING'} =~ /$sortstring/ ) { + my $newsort=$ENV{'QUERY_STRING'}; + my $actual=$settings{'SORT_HOSTSLIST'}; + #Reverse actual sort ? + if ($actual =~ $newsort) { + my $Rev=''; + if ($actual !~ 'Rev') { + $Rev='Rev'; + } + $newsort.=$Rev; + } + $settings{'SORT_HOSTSLIST'}=$newsort; + map (delete ($settings{$_}) ,(@nosaved,'ACTION','KEY1'));# Must never be saved + &General::writehash($setting, \%settings); + &SortDataFile; + $settings{'ACTION'} = 'SORT'; # Create an 'ACTION' + map ($settings{$_} = '' ,@nosaved,'KEY1'); # and reinit vars to empty +} + +if ($settings{'ACTION'} eq '' ) { # First launch from GUI + # Place here default value when nothing is initialized + $settings{'EN'} = 'on'; + $settings{'DOM'} = $settings{'DOMAINNAME'}; +} + +&Header::openpage($Lang::tr{'hostname'}, 1, ''); +&Header::openbigbox('100%', 'left', '', $errormessage); +my %checked=(); # Checkbox manipulations + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage "; + &Header::closebox(); +} + +# +# Remove if no Setting1 needed +# +#if ($warnmessage) { +# $warnmessage = "$Lang::tr{'capswarning'}: $warnmessage"; +#} +#&Header::openbox('100%', 'left', $Lang::tr{'settings'}); +#print "
"; +#print < +# +# $Lang::tr{'domain name'} : $settings{'DOMAINNAME'} +# +# +#END +#; +# +#print < +#
+# +# +# $warnmessage +# +# +# +# +#END +#; +#&Header::closebox(); # end of Settings1 + + +# +# Second check box is for editing the list +# +$checked{'EN'}{'on'} = ($settings{'EN'} eq '' ) ? '' : "checked='checked'"; + +my $buttontext = $Lang::tr{'add'}; +if ($settings{'KEY1'} ne '') { + $buttontext = $Lang::tr{'update'}; + &Header::openbox('100%', 'left', $Lang::tr{'edit an existing host'}); +} else { + &Header::openbox('100%', 'left', $Lang::tr{'add a host'}); +} + +#Edited line number (KEY1) passed until cleared by 'save' or 'remove' or 'new sort order' +print < + + + + + + + + + + + + + +
$Lang::tr{'host ip'}: $Lang::tr{'hostname'}:
$Lang::tr{'domain name'}: *$Lang::tr{'enabled'}
+
+ + + + + +
* $Lang::tr{'this field may be blank'}
+ +END +; +&Header::closebox(); + +# +# Third box shows the list, in columns +# +# Columns headers may content a link. In this case it must be named in $sortstring +# +&Header::openbox('100%', 'left', $Lang::tr{'current hosts'}); +print < + + $Lang::tr{'host ip'} + $Lang::tr{'hostname'} + $Lang::tr{'domain name'} + $Lang::tr{'action'} + +END +; + +# +# Print each line of @current list +# + +my $key = 0; +foreach my $line (@current) { + chomp($line); # remove newline + my @temp=split(/\,/,$line); + $temp[3] ='' unless defined $temp[3]; # not always populated + + #Choose icon for checkbox + my $gif = ''; + my $gdesc = ''; + if ($temp[0] ne '' ) { + $gif = 'on.gif'; + $gdesc = $Lang::tr{'click to disable'}; + } else { + $gif = 'off.gif'; + $gdesc = $Lang::tr{'click to enable'}; + } + + #Colorize each line + if ($settings{'KEY1'} eq $key) { + print ""; + } elsif ($key % 2) { + print ""; + } else { + print ""; + } + print <$temp[1] +$temp[2] +$temp[3] + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + +END +; + $key++; +} +print ""; + +# If table contains entries, print 'Key to action icons' +if ($key) { +print < + +  $Lang::tr{'legend'}:  + $Lang::tr{ + $Lang::tr{'click to disable'} +    + $Lang::tr{ + $Lang::tr{'click to enable'} +    + $Lang::tr{ + $Lang::tr{'edit'} +    + $Lang::tr{ + $Lang::tr{'remove'} + + +END +; +} + +&Header::closebox(); +&Header::closebigbox(); +&Header::closepage(); + +## Ouf it's the end ! + +# Sort the "current" array according to choices +sub SortDataFile +{ + our %entries = (); + + # Sort pair of record received in $a $b special vars. + # When IP is specified use numeric sort else alpha. + # If sortname ends with 'Rev', do reverse sort. + # + sub fixedleasesort { + my $qs=''; # The sort field specified minus 'Rev' + if (rindex ($settings{'SORT_HOSTSLIST'},'Rev') != -1) { + $qs=substr ($settings{'SORT_HOSTSLIST'},0,length($settings{'SORT_HOSTSLIST'})-3); + if ($qs eq 'IP') { + my @a = split(/\./,$entries{$a}->{$qs}); + my @b = split(/\./,$entries{$b}->{$qs}); + ($b[0]<=>$a[0]) || + ($b[1]<=>$a[1]) || + ($b[2]<=>$a[2]) || + ($b[3]<=>$a[3]); + } else { + $entries{$b}->{$qs} cmp $entries{$a}->{$qs}; + } + } else { #not reverse + $qs=$settings{'SORT_HOSTSLIST'}; + if ($qs eq 'IP') { + my @a = split(/\./,$entries{$a}->{$qs}); + my @b = split(/\./,$entries{$b}->{$qs}); + ($a[0]<=>$b[0]) || + ($a[1]<=>$b[1]) || + ($a[2]<=>$b[2]) || + ($a[3]<=>$b[3]); + } else { + $entries{$a}->{$qs} cmp $entries{$b}->{$qs}; + } + } + } + + #Use an associative array (%entries) + my $key = 0; + foreach my $line (@current) { + chomp( $line); #remove newline because can be on field 5 or 6 (addition of REMARK) + my @temp = ( '','','', ''); + @temp = split (',',$line); + + # Build a pair 'Field Name',value for each of the data dataline. + # Each SORTABLE field must have is pair. + # Other data fields (non sortable) can be grouped in one + + my @record = ('KEY',$key++,'EN',$temp[0],'IP',$temp[1],'HOST',$temp[2],'DOM',$temp[3]); + my $record = {}; # create a reference to empty hash + %{$record} = @record; # populate that hash with @record + $entries{$record->{KEY}} = $record; # add this to a hash of hashes + } + + open(FILE, ">$datafile") or die 'hosts datafile error'; + + # Each field value is printed , with the newline ! Don't forget separator and order of them. + foreach my $entry (sort fixedleasesort keys %entries) { + print FILE "$entries{$entry}->{EN},$entries{$entry}->{IP},$entries{$entry}->{HOST},$entries{$entry}->{DOM}\n"; + } + + close(FILE); + # Reload sorted @current + open (FILE, "$datafile"); + @current = ; + close (FILE); +} + +# +# Build the configuration file +# +sub BuildConfiguration { + system '/usr/local/bin/rebuildhosts'; +} diff --git a/html/cgi-bin/ids.cgi b/html/cgi-bin/ids.cgi new file mode 100644 index 0000000000..56c9c77f65 --- /dev/null +++ b/html/cgi-bin/ids.cgi @@ -0,0 +1,313 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: ids.cgi,v 1.8.2.18 2005/07/27 21:35:22 franck78 Exp $ +# + +use LWP::UserAgent; +use File::Copy; +use File::Temp qw/ tempfile tempdir /; +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %snortsettings=(); +my %checked=(); +my %netsettings=(); +our $errormessage = ''; +our $md5 = '0';# not '' to avoid displaying the wrong message when INSTALLMD5 not set +our $realmd5 = ''; +our $results = ''; +our $tempdir = ''; +our $url=''; +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); + +&Header::showhttpheaders(); + +$snortsettings{'ENABLE_SNORT'} = 'off'; +$snortsettings{'ENABLE_SNORT_GREEN'} = 'off'; +$snortsettings{'ENABLE_SNORT_BLUE'} = 'off'; +$snortsettings{'ENABLE_SNORT_ORANGE'} = 'off'; +$snortsettings{'ACTION'} = ''; +$snortsettings{'RULESTYPE'} = ''; +$snortsettings{'OINKCODE'} = ''; +$snortsettings{'INSTALLDATE'} = ''; +$snortsettings{'INSTALLMD5'} = ''; + +&Header::getcgihash(\%snortsettings, {'wantfile' => 1, 'filevar' => 'FH'}); + +if ($snortsettings{'RULESTYPE'} eq 'subscripted') { + $url="http://www.snort.org/pub-bin/oinkmaster.cgi/$snortsettings{'OINKCODE'}/snortrules-snapshot-2.3_s.tar.gz"; +} else { + $url="http://www.snort.org/pub-bin/oinkmaster.cgi/$snortsettings{'OINKCODE'}/snortrules-snapshot-2.3.tar.gz"; +} + +if ($snortsettings{'ACTION'} eq $Lang::tr{'save'}) +{ + $errormessage = $Lang::tr{'invalid input for oink code'} unless ( + ($snortsettings{'OINKCODE'} =~ /^[a-z0-9]+$/) || + ($snortsettings{'RULESTYPE'} eq 'nothing' ) ); + + &General::writehash("${General::swroot}/snort/settings", \%snortsettings); + if ($snortsettings{'ENABLE_SNORT'} eq 'on') + { + system ('/bin/touch', "${General::swroot}/snort/enable"); + } else { + unlink "${General::swroot}/snort/enable"; + } + if ($snortsettings{'ENABLE_SNORT_GREEN'} eq 'on') + { + system ('/bin/touch', "${General::swroot}/snort/enable_green"); + } else { + unlink "${General::swroot}/snort/enable_green"; + } + if ($snortsettings{'ENABLE_SNORT_BLUE'} eq 'on') + { + system ('/bin/touch', "${General::swroot}/snort/enable_blue"); + } else { + unlink "${General::swroot}/snort/enable_blue"; + } + if ($snortsettings{'ENABLE_SNORT_ORANGE'} eq 'on') + { + system ('/bin/touch', "${General::swroot}/snort/enable_orange"); + } else { + unlink "${General::swroot}/snort/enable_orange"; + } + + system('/usr/local/bin/restartsnort','red','orange','blue','green'); +} else { + # INSTALLMD5 is not in the form, so not retrieved by getcgihash + &General::readhash("${General::swroot}/snort/settings", \%snortsettings); +} + +if ($snortsettings{'ACTION'} eq $Lang::tr{'download new ruleset'}) { + $md5 = &getmd5; + if (($snortsettings{'INSTALLMD5'} ne $md5) && defined $md5 ) { + chomp($md5); + my $filename = &downloadrulesfile(); + if (defined $filename) { + # Check MD5sum + $realmd5 = `/usr/bin/md5sum $filename`; + chomp ($realmd5); + $realmd5 =~ s/^(\w+)\s.*$/$1/; + if ($md5 ne $realmd5) { + $errormessage = "$Lang::tr{'invalid md5sum'}"; + } else { + $results = "$Lang::tr{'installed updates'}\n
";
+				$results .=`/usr/local/bin/oinkmaster.pl -s -u file://$filename -C /var/ipcop/snort/oinkmaster.conf -o /etc/snort 2>&1`;
+				$results .= "
"; + } + unlink ($filename); + } + } +} + +$checked{'ENABLE_SNORT'}{'off'} = ''; +$checked{'ENABLE_SNORT'}{'on'} = ''; +$checked{'ENABLE_SNORT'}{$snortsettings{'ENABLE_SNORT'}} = "checked='checked'"; +$checked{'ENABLE_SNORT_GREEN'}{'off'} = ''; +$checked{'ENABLE_SNORT_GREEN'}{'on'} = ''; +$checked{'ENABLE_SNORT_GREEN'}{$snortsettings{'ENABLE_SNORT_GREEN'}} = "checked='checked'"; +$checked{'ENABLE_SNORT_BLUE'}{'off'} = ''; +$checked{'ENABLE_SNORT_BLUE'}{'on'} = ''; +$checked{'ENABLE_SNORT_BLUE'}{$snortsettings{'ENABLE_SNORT_BLUE'}} = "checked='checked'"; +$checked{'ENABLE_SNORT_ORANGE'}{'off'} = ''; +$checked{'ENABLE_SNORT_ORANGE'}{'on'} = ''; +$checked{'ENABLE_SNORT_ORANGE'}{$snortsettings{'ENABLE_SNORT_ORANGE'}} = "checked='checked'"; +$checked{'RULESTYPE'}{'nothing'} = ''; +$checked{'RULESTYPE'}{'registered'} = ''; +$checked{'RULESTYPE'}{'subscripted'} = ''; +$checked{'RULESTYPE'}{$snortsettings{'RULESTYPE'}} = "checked='checked'"; + +&Header::openpage($Lang::tr{'intrusion detection system'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage\n"; + print " \n"; + &Header::closebox(); +} + +&Header::openbox('100%', 'left', $Lang::tr{'intrusion detection system2'}); +print < + + + +END +; +if ($netsettings{'BLUE_DEV'} ne '') { +print < + + +END +; +} +if ($netsettings{'ORANGE_DEV'} ne '') { +print < + + +END +; +} +print < + + + + + + + + + + + + + + + + + + + + + + + + + "; +} else { + if ( $snortsettings{'ACTION'} eq $Lang::tr{'download new ruleset'} && $md5 eq $realmd5 ) { + $snortsettings{'INSTALLMD5'} = $realmd5; + $snortsettings{'INSTALLDATE'} = `/bin/date +'%Y-%m-%d'`; + &General::writehash("${General::swroot}/snort/settings", \%snortsettings); + } + print " $Lang::tr{'updates installed'}: $snortsettings{'INSTALLDATE'}"; +} +print < +
+ GREEN Snort
+ BLUE Snort
+ ORANGE Snort
+ RED Snort

$Lang::tr{'ids rules update'}
+ $Lang::tr{'no'}
+ $Lang::tr{'registered user rules'}
+ $Lang::tr{'subscripted user rules'}

+ $Lang::tr{'ids rules license'} http://www.snort.org.
+
+ $Lang::tr{'ids rules license2'} USER PREFERENCES, $Lang::tr{'ids rules license3'}
+
Oink Code: 
+END +; + +if ($snortsettings{'INSTALLMD5'} eq $md5) { + print " $Lang::tr{'rules already up to date'}
+
+ + + + + + +
  +   +
+ +END +; + +if ($results ne '') { + print "$results"; +} + +&Header::closebox(); +&Header::closebigbox(); +&Header::closepage(); + +sub getmd5 { + # Retrieve MD5 sum from $url.md5 file + # + my $md5buf = &geturl("$url.md5"); + return undef unless $md5buf; + + if (0) { # 1 to debug + my $filename=''; + my $fh=''; + ($fh, $filename) = tempfile('/tmp/XXXXXXXX',SUFFIX => '.md5' ); + binmode ($fh); + syswrite ($fh, $md5buf->content); + close($fh); + } + return $md5buf->content; +} +sub downloadrulesfile { + my $return = &geturl($url); + return undef unless $return; + + if (index($return->content, "\037\213") == -1 ) { # \037\213 is .gz beginning + $errormessage = $Lang::tr{'invalid loaded file'}; + return undef; + } + + my $filename=''; + my $fh=''; + ($fh, $filename) = tempfile('/tmp/XXXXXXXX',SUFFIX => '.tar.gz' );#oinkmaster work only with this extension + binmode ($fh); + syswrite ($fh, $return->content); + close($fh); + return $filename; +} + +sub geturl ($) { + my $url=$_[0]; + + unless (-e "${General::swroot}/red/active") { + $errormessage = $Lang::tr{'could not download latest updates'}; + return undef; + } + + my $downloader = LWP::UserAgent->new; + $downloader->timeout(5); + + my %proxysettings=(); + &General::readhash("${General::swroot}/proxy/settings", \%proxysettings); + + if ($_=$proxysettings{'UPSTREAM_PROXY'}) { + my ($peer, $peerport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/); + if ($proxysettings{'UPSTREAM_USER'}) { + $downloader->proxy("http","http://$proxysettings{'UPSTREAM_USER'}:$proxysettings{'UPSTREAM_PASSWORD'}@"."$peer:$peerport/"); + } else { + $downloader->proxy("http","http://$peer:$peerport/"); + } + } + + my $return = $downloader->get($url,'Cache-Control','no-cache'); + + if ($return->code == 403) { + $errormessage = $Lang::tr{'access refused with this oinkcode'}; + return undef; + } elsif (!$return->is_success()) { + $errormessage = $Lang::tr{'could not download latest updates'}; + return undef; + } + + return $return; + +} diff --git a/html/cgi-bin/index.cgi b/html/cgi-bin/index.cgi new file mode 100644 index 0000000000..bd36a98621 --- /dev/null +++ b/html/cgi-bin/index.cgi @@ -0,0 +1,204 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: index.cgi,v 1.15.2.18 2005/09/17 13:51:47 gespinasse Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %cgiparams=(); +my %pppsettings=(); +my %modemsettings=(); +my %netsettings=(); +my %ddnssettings=(); +my $warnmessage = ''; +my $refresh = ''; + +&Header::showhttpheaders(); + +$cgiparams{'ACTION'} = ''; +&Header::getcgihash(\%cgiparams); +$pppsettings{'VALID'} = ''; +$pppsettings{'PROFILENAME'} = 'None'; +&General::readhash("${General::swroot}/ppp/settings", \%pppsettings); +&General::readhash("${General::swroot}/modem/settings", \%modemsettings); +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); +&General::readhash("${General::swroot}/ddns/settings", \%ddnssettings); + +my $connstate = &Header::connectionstatus(); +if ($connstate =~ /$Lang::tr{'dod waiting'}/ || -e "${General::swroot}/main/refreshindex") { + $refresh = ""; +} elsif ($connstate =~ /$Lang::tr{'connecting'}/) { + $refresh = ""; +} + +&Header::openpage($Lang::tr{'main page'}, 1, $refresh); +&Header::openbigbox('', 'center'); +&Header::openbox('100%', 'center', &Header::cleanhtml(`/bin/uname -n`,"y")); + +# hide buttons only when pppsettings mandatory used and not valid +if ( ( $pppsettings{'VALID'} eq 'yes' ) || + ( $netsettings{'CONFIG_TYPE'} =~ /^(2|3|6|7)$/ && $netsettings{'RED_TYPE'} =~ /^(DHCP|STATIC)$/ ) ) { + print < + +
+ +
+    +
+ +
+    +
+ +
+ +END + ; +} + +print ""; +if ( !( $netsettings{'CONFIG_TYPE'} =~ /^(2|3|6|7)$/ && $netsettings{'RED_TYPE'} =~ /^(DHCP|STATIC)$/ ) ) { + print "$Lang::tr{'current profile'} $pppsettings{'PROFILENAME'}
\n"; +} + +if ( ( $pppsettings{'VALID'} eq 'yes'&& $modemsettings{'VALID'} eq 'yes' ) || + ( $netsettings{'CONFIG_TYPE'} =~ /^(2|3|6|7)$/ && $netsettings{'RED_TYPE'} =~ /^(DHCP|STATIC)$/ )) { + print $connstate; + print "
\n"; + if ($connstate =~ /$Lang::tr{'connected'}/) { + my $fetch_ip='nothing'; + if ($ddnssettings{'BEHINDROUTER'} eq 'FETCH_IP') { + if (open(IPADDR,"${General::swroot}/ddns/ipcache")) { + $fetch_ip = ; + close IPADDR; + chomp ($fetch_ip); + my $host_name = (gethostbyaddr(pack("C4", split(/\./, $fetch_ip)), 2))[0]; + print "
$Lang::tr{'ip address'} (internet): $fetch_ip
$Lang::tr{'ipcops hostname'} (internet): $host_name
"; + } + } + if (open(IPADDR,"${General::swroot}/red/local-ipaddress")) { + my $ipaddr = ; + close IPADDR; + chomp ($ipaddr); + if ($ipaddr ne $fetch_ip){ #do not show info twice + my $host_name = (gethostbyaddr(pack("C4", split(/\./, $ipaddr)), 2))[0]; + print "
$Lang::tr{'ip address'}: $ipaddr
$Lang::tr{'ipcops hostname'}: $host_name
"; + } + } + } + +} elsif ($modemsettings{'VALID'} eq 'no') { + print "$Lang::tr{'modem settings have errors'}\n
\n"; +} else { + print "$Lang::tr{'profile has errors'}\n
\n"; +} + + +# Memory usage warning +my @free = `/usr/bin/free`; +$free[1] =~ m/(\d+)/; +my $mem = $1; +$free[2] =~ m/(\d+)/; +my $used = $1; +my $pct = int 100 * ($mem - $used) / $mem; +if ($used / $mem > 90) { + $warnmessage .= "
  • $Lang::tr{'high memory usage'}: $pct% !
  • \n"; +} + +# Diskspace usage warning +my @temp=(); +my $temp2=(); +my @df = `/bin/df -B M -x rootfs`; +foreach my $line (@df) { + next if $line =~ m/^Filesystem/; + if ($line =~ m/root/ ) { + $line =~ m/^.* (\d+)M.*$/; + @temp = split(/ +/,$line); + if ($1<5) { + # available:plain value in MB, and not %used as 10% is too much to waste on small disk + # and root size should not vary during time + $warnmessage .= "
  • $Lang::tr{'filesystem full'}: $temp[0] $Lang::tr{'free'}=$1M !
  • \n"; + } + + } else { + # $line =~ m/^.* (\d+)m.*$/; + $line =~ m/^.* (\d+)\%.*$/; + if ($1>90) { + @temp = split(/ /,$line); + $temp2=int(100-$1); + $warnmessage .= "
  • $Lang::tr{'filesystem full'}: $temp[0] $Lang::tr{'free'}=$temp2% !
  • \n"; + } + } +} + +# Patches warning +open(AV, "<${General::swroot}/patches/available") or die "Could not open available patches database ($!)"; +my @av = ; +close(AV); +open(PF, "<${General::swroot}/patches/installed") or die "Could not open installed patches file. ($!)
    "; +while() +{ + next if $_ =~ m/^#/; + @temp = split(/\|/,$_); + @av = grep(!/^$temp[0]/, @av); +} +close(PF); + +if ($#av != -1) +{ + $warnmessage .= "
  • $Lang::tr{'there are updates'}
  • "; +} +my $age = &General::age("/${General::swroot}/patches/available"); +if ($age =~ m/(\d{1,3})d/) { + if ($1 >= 7) { + $warnmessage .= "
  • $Lang::tr{'updates is old1'} $age $Lang::tr{'updates is old2'}
  • \n"; + } +} + +if ($warnmessage) { + print "
      $warnmessage
    "; +} + +print "

    "; +system('/usr/bin/uptime'); +print "

    \n"; + +&Header::closebox(); + +# Test browser, and direct User where to turn off Javascript if necessary +# only display message if Javascript is currently enabled +if (${Header::javascript}) { +print <\n +if(navigator.platform.indexOf("MacPPC")>(-1)){ + document.write( + "

    " + + "$Lang::tr{'javascript menu error1'}" + + " $Lang::tr{'gui settings'} " + + "$Lang::tr{'javascript menu error2'}" + + "

    " + ) +} + +END +; +} + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/cgi-bin/ipinfo.cgi b/html/cgi-bin/ipinfo.cgi new file mode 100644 index 0000000000..38e90b08e5 --- /dev/null +++ b/html/cgi-bin/ipinfo.cgi @@ -0,0 +1,103 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# (c) 2002 Josh Grubman - Multiple registry IP lookup code +# +# $Id: ipinfo.cgi,v 1.4.2.3 2005/02/22 22:21:56 gespinasse Exp $ +# + +use IO::Socket; +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %cgiparams=(); + +&Header::showhttpheaders(); + +&Header::getcgihash(\%cgiparams); + +$ENV{'QUERY_STRING'} =~s/&//g; +my @addrs = split(/ip=/,$ENV{'QUERY_STRING'}); + +my %whois_servers = ("RIPE"=>"whois.ripe.net","APNIC"=>"whois.apnic.net","LACNIC"=>"whois.lacnic.net"); + +&Header::openpage($Lang::tr{'ip info'}, 1, ''); + +&Header::openbigbox('100%', 'left'); +my @lines=(); +my $extraquery=''; +foreach my $addr (@addrs) { +next if $addr eq ""; + $extraquery=''; + @lines=(); + my $whoisname = "whois.arin.net"; + my $iaddr = inet_aton($addr); + my $hostname = gethostbyaddr($iaddr, AF_INET); + if (!$hostname) { $hostname = $Lang::tr{'lookup failed'}; } + + my $sock = new IO::Socket::INET ( PeerAddr => $whoisname, PeerPort => 43, Proto => 'tcp'); + if ($sock) + { + print $sock "$addr\n"; + while (<$sock>) { + $extraquery = $1 if (/NetType: Allocated to (\S+)\s+/); + push(@lines,$_); + } + close($sock); + if ($extraquery) { + undef (@lines); + $whoisname = $whois_servers{$extraquery}; + my $sock = new IO::Socket::INET ( PeerAddr => $whoisname, PeerPort => 43, Proto => 'tcp'); + if ($sock) + { + print $sock "$addr\n"; + while (<$sock>) { + push(@lines,$_); + } + } + else + { + @lines = ( "$Lang::tr{'unable to contact'} $whoisname" ); + } + } + } + else + { + @lines = ( "$Lang::tr{'unable to contact'} $whoisname" ); + } + + &Header::openbox('100%', 'left', $addr . ' (' . $hostname . ') : '.$whoisname); + print "
    \n";
    +	foreach my $line (@lines) {
    +		print &Header::cleanhtml($line,"y");
    +	}
    +	print "
    \n"; + &Header::closebox(); +} + +print < + + + + +
    $Lang::tr{'back'}
    + +END +; + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/cgi-bin/logs.cgi/CVS/Entries b/html/cgi-bin/logs.cgi/CVS/Entries new file mode 100644 index 0000000000..d4edcee815 --- /dev/null +++ b/html/cgi-bin/logs.cgi/CVS/Entries @@ -0,0 +1,7 @@ +/config.dat/1.2.2.10/Tue Jun 14 12:32:07 2005//TIPCOP_v1_4_0 +/firewalllog.dat/1.4.2.18/Tue Aug 23 12:01:50 2005//TIPCOP_v1_4_0 +/ids.dat/1.6.2.16/Tue Jun 14 08:25:30 2005//TIPCOP_v1_4_0 +/log.dat/1.6.2.22/Tue Jan 3 12:47:17 2006//TIPCOP_v1_4_0 +/proxylog.dat/1.4.2.25/Thu Jul 7 17:32:24 2005//TIPCOP_v1_4_0 +/summary.dat/1.3.2.14/Sun Jul 10 00:48:42 2005//TIPCOP_v1_4_0 +D diff --git a/html/cgi-bin/logs.cgi/CVS/Repository b/html/cgi-bin/logs.cgi/CVS/Repository new file mode 100644 index 0000000000..5ddf0f6e06 --- /dev/null +++ b/html/cgi-bin/logs.cgi/CVS/Repository @@ -0,0 +1 @@ +ipcop/html/cgi-bin/logs.cgi diff --git a/html/cgi-bin/logs.cgi/CVS/Root b/html/cgi-bin/logs.cgi/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/html/cgi-bin/logs.cgi/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/html/cgi-bin/logs.cgi/CVS/Tag b/html/cgi-bin/logs.cgi/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/html/cgi-bin/logs.cgi/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/html/cgi-bin/logs.cgi/config.dat b/html/cgi-bin/logs.cgi/config.dat new file mode 100644 index 0000000000..6e82cf4f6f --- /dev/null +++ b/html/cgi-bin/logs.cgi/config.dat @@ -0,0 +1,165 @@ +#!/usr/bin/perl +# +# IPCop CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The IPCop Team +# +# $Id: config.dat,v 1.2.2.10 2005/06/14 12:32:07 eoberlander Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %logsettings=(); +my %checked=(); +my %selected=(); +my $errormessage=''; + +&Header::showhttpheaders(); + +$logsettings{'LOGVIEW_REVERSE'} = 'off'; +$logsettings{'LOGVIEW_VIEWSIZE'} = '150'; +$logsettings{'LOGWATCH_LEVEL'} = 'Low'; +$logsettings{'LOGWATCH_KEEP'} = '56'; +my @VS = ('15','50','100','150','250','500'); +$logsettings{'ENABLE_REMOTELOG'} = 'off'; +$logsettings{'REMOTELOG_ADDR'} = ''; +$logsettings{'ACTION'} = ''; +&Header::getcgihash(\%logsettings); + +if ($logsettings{'ACTION'} eq $Lang::tr{'save'}) +{ + if ($logsettings{'ENABLE_REMOTELOG'} eq 'on') + { + unless ( &General::validfqdn($logsettings{'REMOTELOG_ADDR'}) || + &General::validip ($logsettings{'REMOTELOG_ADDR'})) + { + $errormessage = $Lang::tr{'invalid logserver address'}; + } + } + unless ($logsettings{'LOGWATCH_KEEP'} =~ /^\d+$/) + { + $errormessage = $Lang::tr{'invalid keep time'}; + } + unless ($logsettings{'LOGWATCH_LEVEL'} =~ /^Low|Med|High$/) + { + $errormessage = $Lang::tr{'invalid input'}; + } + unless ($errormessage) + { + &General::writehash("${General::swroot}/logging/settings", \%logsettings); + system('/usr/local/bin/restartsyslogd') == 0 + or $errormessage = "$Lang::tr{'bad return code'} " . $?/256; + } + +} + +&General::readhash("${General::swroot}/logging/settings", \%logsettings); + +$checked{'ENABLE_REMOTELOG'}{'off'} = ''; +$checked{'ENABLE_REMOTELOG'}{'on'} = ''; +$checked{'ENABLE_REMOTELOG'}{$logsettings{'ENABLE_REMOTELOG'}} = "checked='checked'"; + +$checked{'LOGVIEW_REVERSE'}{'off'} = ''; +$checked{'LOGVIEW_REVERSE'}{'on'} = ''; +$checked{'LOGVIEW_REVERSE'}{$logsettings{'LOGVIEW_REVERSE'}} = "checked='checked'"; + +$selected{'LOGWATCH_LEVEL'}{'Low'} = ''; +$selected{'LOGWATCH_LEVEL'}{'Med'} = ''; +$selected{'LOGWATCH_LEVEL'}{'High'} = ''; +$selected{'LOGWATCH_LEVEL'}{$logsettings{'LOGWATCH_LEVEL'}} = "selected='selected'"; + +map ($selected{'LOGVIEW_VIEWSIZE'}{$_} = '', @VS); +$selected{'LOGVIEW_VIEWSIZE'}{$logsettings{'LOGVIEW_VIEWSIZE'}} = "selected='selected'"; + +&Header::openpage($Lang::tr{'log settings'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); +} + +print "
    \n"; + +&Header::openbox('100%', 'left', $Lang::tr{'log viewing options'}); +print < + + + $Lang::tr{'reverse sort'} + $Lang::tr{'log lines per page'}:  +  $Lang::tr{'days'} + $Lang::tr{'detail level'}: + + + +END +; +&Header::closebox(); + +&Header::openbox('100%', 'left', $Lang::tr{'remote logging'}); +print < + + $Lang::tr{'enabled'} + $Lang::tr{'log server address'} + + +END +; +&Header::closebox(); + + + +print < + + + + +
    + +END +; + +print "\n"; + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/cgi-bin/logs.cgi/firewalllog.dat b/html/cgi-bin/logs.cgi/firewalllog.dat new file mode 100644 index 0000000000..1ace47f8db --- /dev/null +++ b/html/cgi-bin/logs.cgi/firewalllog.dat @@ -0,0 +1,411 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: firewalllog.dat,v 1.4.2.18 2005/08/23 12:01:50 eoberlander Exp $ +# +# July 28, 2003 - Darren Critchley - darren@kdi.ca +# - added source mac adapter to layout +# +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +use POSIX(); + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::table2colour} ); +undef (@dummy); + +my %cgiparams=(); +my %logsettings=(); +my $errormessage = ''; + +my @shortmonths = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', + 'Sep', 'Oct', 'Nov', 'Dec' ); +my @longmonths = ( $Lang::tr{'january'}, $Lang::tr{'february'}, $Lang::tr{'march'}, + $Lang::tr{'april'}, $Lang::tr{'may'}, $Lang::tr{'june'}, $Lang::tr{'july'}, $Lang::tr{'august'}, + $Lang::tr{'september'}, $Lang::tr{'october'}, $Lang::tr{'november'}, + $Lang::tr{'december'} ); + +my @now = localtime(); +my $dow = $now[6]; +my $doy = $now[7]; +my $tdoy = $now[7]; +my $year = $now[5]+1900; + +$cgiparams{'DAY'} = $now[3]; +$cgiparams{'MONTH'} = $now[4]; +$cgiparams{'ACTION'} = ''; + +&Header::getcgihash(\%cgiparams); +$logsettings{'LOGVIEW_REVERSE'} = 'off'; +&General::readhash("${General::swroot}/logging/settings", \%logsettings); +${Header::viewsize} = defined ($logsettings{'LOGVIEW_VIEWSIZE'}) ? $logsettings{'LOGVIEW_VIEWSIZE'} : 150; + +my $start = ($logsettings{'LOGVIEW_REVERSE'} eq 'on') ? 0x7FFFF000 : 0; #index of firts line number to display + +if ($ENV{'QUERY_STRING'} && $cgiparams{'ACTION'} ne $Lang::tr{'update'}) +{ + my @temp = split(',',$ENV{'QUERY_STRING'}); + $start = $temp[0]; + $cgiparams{'MONTH'} = $temp[1]; + $cgiparams{'DAY'} = $temp[2]; +} + +if (!($cgiparams{'MONTH'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11)$/) || + !($cgiparams{'DAY'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)$/)) +{ + $cgiparams{'DAY'} = $now[3]; + $cgiparams{'MONTH'} = $now[4]; +} +elsif($cgiparams{'ACTION'} eq '>>') +{ + my @temp_then=(); + my @temp_now = localtime(time); + $temp_now[4] = $cgiparams{'MONTH'}; + $temp_now[3] = $cgiparams{'DAY'}; + if ($cgiparams{'DAY'}) { + @temp_then = localtime(POSIX::mktime(@temp_now) + 86400); + ## Retrieve the same time on the next day + + ## 86400 seconds in a day + } else { + $temp_now[3] = 1; + $temp_now[4] = ($temp_now[4]+1) %12; + @temp_then = localtime(POSIX::mktime(@temp_now) ); + $temp_then[3] = 0; + } + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; +} +elsif($cgiparams{'ACTION'} eq '<<') +{ + my @temp_then=(); + my @temp_now = localtime(time); + $temp_now[4] = $cgiparams{'MONTH'}; + $temp_now[3] = $cgiparams{'DAY'}; + if ($cgiparams{'DAY'}) { + @temp_then = localtime(POSIX::mktime(@temp_now) - 86400); + ## Retrieve the same time on the next day - + ## 86400 seconds in a day + } else { + $temp_now[3] = 1; + $temp_now[4] = ($temp_now[4]-1) %12; + @temp_then = localtime(POSIX::mktime(@temp_now) ); + $temp_then[3] = 0; + } + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; +} + +# Find in which file.gz is the log. Can be calculated because WEEKLY ROTATING of access.log +my $gzindex; +my $date = $cgiparams{'DAY'} == 0 ? '' : $cgiparams{'DAY'} <= 9 ? "0$cgiparams{'DAY'}" : "$cgiparams{'DAY'}"; + +{ + my $xday; + + # Calculate time. If future date, calculate for past year !!! + if (( $cgiparams{'MONTH'} eq $now[4]) && ($cgiparams{'DAY'} > $now[3]) || + ( $cgiparams{'MONTH'} > $now[4] ) ) { + $xday = POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1901 ); + $date = "$longmonths[$cgiparams{'MONTH'}] $date, ". int($year-1); + } else { + $xday = POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1900 ); + $date = "$longmonths[$cgiparams{'MONTH'}] $date, $year"; + } + + # calculate end of active week (saturday 23H59) + my @then = (); + @then = localtime(time()); + my $sunday = POSIX::mktime( 0, 0, 0, @then[3], @then[4], @then[5]); + $sunday += (6-$then[6]) * 86400; + + # Convert delta in second to full weeks + $gzindex = int (($sunday-$xday)/604800 ); +} + +my $monthstr = $shortmonths[$cgiparams{'MONTH'}]; +my $daystr = $cgiparams{'DAY'} == 0 ? '..' : $cgiparams{'DAY'} <= 9 ? " $cgiparams{'DAY'}" : "$cgiparams{'DAY'}"; + +my $lines = 0; +my @log=(); + +my $loop = 1; +my $filestr = 0; +my $lastdatetime; # for debug +my $search_for_end = 0; + +while ($gzindex >=0 && $loop) { + # calculate file name + if ($gzindex == 0) { + $filestr = "/var/log/messages"; + } else { + $filestr = "/var/log/messages.$gzindex"; + $filestr = "$filestr.gz" if -f "$filestr.gz"; + } + # now read file if existing + if (open (FILE,($filestr =~ /.gz$/ ? "gzip -dc $filestr |" : $filestr))) { + #&General::log("reading $filestr"); + READ:while () { + my $line = $_; + if ($line =~ /^${monthstr} ${daystr} ..:..:.. [\w\-]+ kernel:.*IN=.*$/) { + # when standart viewing, just keep in memory the correct slice + # it starts a '$start' and size is $viewport + # If export, then keep all lines... + if ($cgiparams{'ACTION'} eq $Lang::tr{'export'}){ + $log[$lines++] = "$line"; + } else { + if ($lines++ < ($start + $Header::viewsize)) { + push(@log,"$line"); + if (@log > $Header::viewsize) { + shift (@log); + } + #} else { dont do this optimisation, need to count lines ! + # $datetime = $maxtime; # we have read viewsize lines, stop main loop + # last READ; # exit read file + } + } + $search_for_end = 1; # we find the start of slice, can look for end now + } else { + if ($search_for_end == 1) { + #finish read files when date is over (test month equality only) + $line =~ /^(...) (..) ..:..:..*$/; + $loop = 0 if ( ($1 ne $monthstr) || ( ($daystr ne '..') && ($daystr ne $2) ) ); + } + } + } + close (FILE); + } + $gzindex--; # will try next gz file eg 40,39,38,.... because it may have holes when ipcop stopped + # for a long time +}# while + +# $errormessage = "$Lang::tr{'date not in logs'}: $filestr $Lang::tr{'could not be opened'}"; + +if ($cgiparams{'ACTION'} eq $Lang::tr{'export'}) +{ + print "Content-type: text/plain\n\n"; + print "IPCop firewall log\r\n"; + print "$Lang::{'date'}: $date\r\n\r\n"; + + if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @log = reverse @log; } + + foreach $_ (@log) + { + /^... (..) (..:..:..) [\w\-]+ kernel:.*(IN=.*)$/; + my $day = $1; + $day =~ tr / /0/; + my $time = $cgiparams{'DAY'} ? "$2" : "$day/$2" ; + print "$time $3\r\n"; + + } + exit 0; +} + +&Header::showhttpheaders(); + +&Header::openpage($Lang::tr{'firewall log'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); +} + +&Header::openbox('100%', 'left', "$Lang::tr{'settings'}:"); + +print < + + + + + + + + + + + +
    $Lang::tr{'month'}:  +  $Lang::tr{'day'}:  +
    + +END +; + +&Header::closebox(); + +&Header::openbox('100%', 'left', $Lang::tr{'log'}); +print "

    $Lang::tr{'firewall hits'} $date: $lines

    "; + +$start = $lines - ${Header::viewsize} if ($start >= $lines - ${Header::viewsize}); +$start = 0 if ($start < 0); + +my $prev; + if ($start == 0) { + $prev = -1; + } else { + $prev = $start - ${Header::viewsize}; + $prev = 0 if ( $prev < 0); + } + +my $next; + if ($start == $lines - ${Header::viewsize}) { + $next = -1; + } else { + $next = $start + ${Header::viewsize}; + $next = $lines - ${Header::viewsize} if ($next >= $lines - ${Header::viewsize}); + } + +if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @log = reverse @log; } +if ($lines != 0) { &oldernewer(); } + +print < + + $Lang::tr{'time'} + $Lang::tr{'chain'} + $Lang::tr{'iface'} + $Lang::tr{'proto'} + $Lang::tr{'source'} + $Lang::tr{'src port'} + $Lang::tr{'mac address'} + $Lang::tr{'destination'} + $Lang::tr{'dst port'} + +END +; + + +$lines = 0; +foreach $_ (@log) +{ + /^... (..) (..:..:..) [\w\-]+ kernel:(.*)(IN=.*)$/; + my $day = $1; + $day =~ tr / /0/; + my $time = $cgiparams{'DAY'} ? "$2" : "$day/$2" ; + my $comment = $3; + my $packet = $4; + + + $packet =~ /IN=(\w+)/; my $iface=$1; + $packet =~ /SRC=([\d\.]+)/; my $srcaddr=$1; + $packet =~ /DST=([\d\.]+)/; my $dstaddr=$1; + $packet =~ /MAC=([\w+\:]+)/; my $macaddr=$1; + $packet =~ /PROTO=(\w+)/; my $proto=$1; + $packet =~ /SPT=(\d+)/; my $srcport=$1; + $packet =~ /DPT=(\d+)/; my $dstport=$1; + my $servi = uc(getservbyport($srcport, lc($proto))); + if ($servi ne '' && $srcport < 1024) { + $srcport = "$srcport($servi)"; } + $servi = uc(getservbyport($dstport, lc($proto))); + if ($servi ne '' && $dstport < 1024) { + $dstport = "$dstport($servi)";} + my @mactemp = split(/:/,$macaddr); + $macaddr = "$mactemp[6]:$mactemp[7]:$mactemp[8]:$mactemp[9]:$mactemp[10]:$mactemp[11]"; + if ($lines % 2) { + print "\n"; } + else { + print "\n"; } + print <$time + $comment + $iface + $proto + + + +
    $srcaddr
    + + $srcport + $macaddr + + + +
    $dstaddr
    + + $dstport + +END + ; + $lines++; +} + +print ""; + +&oldernewer(); + +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); + +sub oldernewer +{ +print < + +END +; + +print ""; +if ($prev != -1) { + print "$Lang::tr{'older'}"; } +else { + print "$Lang::tr{'older'}"; } +print "\n"; + +print ""; +if ($next >= 0) { + print "$Lang::tr{'newer'}"; } +else { + print "$Lang::tr{'newer'}"; } +print "\n"; + +print < + +END +; +} diff --git a/html/cgi-bin/logs.cgi/ids.dat b/html/cgi-bin/logs.cgi/ids.dat new file mode 100644 index 0000000000..09dde00116 --- /dev/null +++ b/html/cgi-bin/logs.cgi/ids.dat @@ -0,0 +1,458 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# Copyright (C) 18-03-2002 Mark Wormgoor +# - Added links to Snort database and ipinfo.cgi +# +# $Id: ids.dat,v 1.6.2.16 2005/06/14 08:25:30 eoberlander Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +use POSIX(); + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::table1colour}, ${Header::table2colour} ); +undef (@dummy); + +my %cgiparams=(); +my %logsettings=(); +my @log=(); +my $errormessage = ''; + +my @shortmonths = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', + 'Sep', 'Oct', 'Nov', 'Dec' ); +my @longmonths = ( $Lang::tr{'january'}, $Lang::tr{'february'}, $Lang::tr{'march'}, + $Lang::tr{'april'}, $Lang::tr{'may'}, $Lang::tr{'june'}, $Lang::tr{'july'}, $Lang::tr{'august'}, + $Lang::tr{'september'}, $Lang::tr{'october'}, $Lang::tr{'november'}, + $Lang::tr{'december'} ); + +my @now = localtime(time); +my $dow = $now[6]; +my $doy = $now[7]; +my $tdoy = $now[7]; +my $year = $now[5]+1900; + +$cgiparams{'DAY'} = $now[3]; +$cgiparams{'MONTH'} = $now[4]; +$cgiparams{'ACTION'} = ''; + +&Header::getcgihash(\%cgiparams); +$logsettings{'LOGVIEW_REVERSE'} = 'off'; +&General::readhash("${General::swroot}/logging/settings", \%logsettings); +${Header::viewsize} = defined ($logsettings{'LOGVIEW_VIEWSIZE'}) ? $logsettings{'LOGVIEW_VIEWSIZE'} : 150; +$Header::viewsize /= 5; # each ids is displayed on 5 lines + +$now[4] = $cgiparams{'MONTH'}+1; +if($now[4] < 10) { + $now[4] = "0$now[4]"; } + +my $start = -1; +if ($ENV{'QUERY_STRING'} && $cgiparams{'ACTION'} ne $Lang::tr{'update'}) +{ + my @temp = split(',',$ ENV{'QUERY_STRING'}); + $start = $temp[0]; + $cgiparams{'MONTH'} = $temp[1]; + $cgiparams{'DAY'} = $temp[2]; +} + +if (!($cgiparams{'MONTH'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11)$/) || + !($cgiparams{'DAY'} =~ /^(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)$/)) +{ + $cgiparams{'DAY'} = $now[3]; + $cgiparams{'MONTH'} = $now[4]; +} +elsif($cgiparams{'ACTION'} eq '>>') +{ + my @temp_then=(); + my @temp_now = localtime(time); + $temp_now[4] = $cgiparams{'MONTH'}; + $temp_now[3] = $cgiparams{'DAY'}; + @temp_then = localtime(POSIX::mktime(@temp_now) + 86400); + ## Retrieve the same time on the next day + + ## 86400 seconds in a day + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; +} +elsif($cgiparams{'ACTION'} eq '<<') +{ + my @temp_then=(); + my @temp_now = localtime(time); + $temp_now[4] = $cgiparams{'MONTH'}; + $temp_now[3] = $cgiparams{'DAY'}; + @temp_then = localtime(POSIX::mktime(@temp_now) - 86400); + ## Retrieve the same time on the previous day - + ## 86400 seconds in a day + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; +} + + +if (($cgiparams{'DAY'} ne $now[3]) || ($cgiparams{'MONTH'} ne $now[4])) +{ + my @then = (); + if ( ( $cgiparams{'MONTH'} eq $now[4]) && ($cgiparams{'DAY'} > $now[3]) || + ( $cgiparams{'MONTH'} > $now[4] ) ) { + @then = localtime(POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1901 )); + } else { + @then = localtime(POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1900 )); + } + $tdoy = $then[7]; + my $lastleap=($year-1)%4; + if ($tdoy>$doy) { + if ($lastleap == 0 && $tdoy < 60) { + $doy=$doy+366; + } else { + $doy=$doy+365; + } + } +} +my $datediff=0; +my $dowd=0; +my $multifile=0; +if ($tdoy ne $doy) { + $datediff=int(($doy-$tdoy)/7); + $dowd=($doy-$tdoy)%7; + if (($dow-$dowd)<1) { + $datediff=$datediff+1; + } + if (($dow-$dowd)==0) { + $multifile=1; + } +} + +my $longmonthstr = $longmonths[$cgiparams{'MONTH'}]; +my $monthnum = $cgiparams{'MONTH'} + 1; +my $monthstr = $monthnum <= 9 ? "0$monthnum" : "$monthnum"; +my $daystr = $cgiparams{'DAY'} <= 9 ? "0$cgiparams{'DAY'}" : "$cgiparams{'DAY'}"; + +my $lines = 0; +my ($title,$classification,$priority,$date,$time,$srcip,$srcport,$destip,$destport, $sid, @refs); + +&processevent; + +if ($multifile) { + $datediff=$datediff-1; + &processevent; +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'export'}) +{ + print "Content-type: text/plain\n\n"; + print "IPCop IDS snort log\r\n"; + print "Date: $cgiparams{'DAY'} $longmonths[$cgiparams{'MONTH'}]\r\n"; + print "\r\n"; + + if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @log = reverse @log; } + + foreach $_ (@log) + { + my ($datetime,$title,$priority,$classification,$srcip,$srcport,$destip,$destport,$sid,$refs) = split(/\|/); + $refs =~ s/,$//; + print "Date: $datetime\n"; + print "Name: $title\n"; + print "Priority: $priority\n"; + print "Type: $classification\n"; + print "IP Info: "; + print "$srcip"; + if ($srcport != "n/a") { + print ":$srcport"; + } + print " -> "; + print "$destip"; + if ($destport != "n/a") { + print ":$destport"; + } + print "\n"; + print "SID: $sid\n"; + print "Refs: $refs\n\n"; + } + + exit; +} + +&Header::showhttpheaders(); + +&Header::openpage($Lang::tr{'ids log viewer'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); +} + +&Header::openbox('100%', 'left', "$Lang::tr{'settings'}:"); + +print < + + + + + + + + + + + +
    $Lang::tr{'month'}:  +  $Lang::tr{'day'}:  +
    + +END +; + +&Header::closebox(); + +&Header::openbox('100%', 'left', $Lang::tr{'log'}); +print "

    $Lang::tr{'snort hits'} $longmonthstr $daystr: $lines

    "; + +if ($start == -1) { + $start = $lines - ${Header::viewsize}; } +if ($start >= $lines - ${Header::viewsize}) { $start = $lines - ${Header::viewsize}; }; +if ($start < 0) { $start = 0; } + +my $prev = $start - ${Header::viewsize}; +my $next = $start + ${Header::viewsize}; + +if ($prev < 0) { $prev = 0; } +if ($next >= $lines) { $next = -1 } +if ($start == 0) { $prev = -1; } +my @slice = splice(@log, $start, ${Header::viewsize}); + +if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @slice = reverse @slice; } + +if ($lines != 0) { + +&oldernewer(); + +$lines = 0; + +print < +END +; + +foreach $_ (@slice) +{ + if ($lines % 2) { + print "\n"; } + else { + print "\n"; } + my ($datetime,$title,$priority,$classification,$srcip,$srcport,$destip,$destport,$sid,$refs) = split(/\|/); + print < + +$Lang::tr{'date'}:$datetime +$Lang::tr{'name'}:$title + +$Lang::tr{'priority'}:$priority +$Lang::tr{'type'}:$classification + +$Lang::tr{'ipinfo'}: + +END + ; + if ($srcip ne "n/a") { + print "$srcip"; + } else { + print "$srcip"; + } + print ":$srcport -> "; + if ($destip ne "n/a") { + print "$destip"; + } else { + print "$destip"; + } + print ":$destport"; +print < + +$Lang::tr{'references'}: +END +; + foreach my $ref (split(/,/,$refs)) { + if ($ref =~ m/url (.*)/) { + print "$1
    "; + } elsif ($ref =~ m/cve (.*)/) { + print "$1
    "; + } elsif ($ref =~ m/nessus (.*)/) { + print "Nessus $1
    "; + } elsif ($ref =~ m/bugtraq (.*)/) { + print "Bugtraq $1
    "; + } else { + print "$ref
    "; + } + } + print $Lang::tr{'none found'} unless $refs =~ /,/; +print <SID: + +END + ; + if ($sid ne "n/a") { + print "$sid\n"; + } else { + print $sid; + } +print < + + +END + ; + $lines++; +} + +print ""; + +} + +&oldernewer(); + +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); + +sub processevent +{ + our ($title,$classification,$priority,$date,$time,$srcip,$srcport,$destip,$destport, $sid, @refs); + + my $filestr=''; + if ($datediff==0) { + $filestr="/var/log/snort/alert"; + } else { + $filestr="/var/log/snort/alert.$datediff"; + $filestr = "$filestr.gz" if -f "$filestr.gz"; + } + if (!(open (LOG,($filestr =~ /.gz$/ ? "gzip -dc $filestr |" : $filestr)))) { + $errormessage="$errormessage$Lang::tr{'date not in logs'}: $filestr $Lang::tr{'could not be opened'}"; + } else { + my $line = 0; + + while() { + $line++; + if ($_ =~ m/\[\*\*\]/) { + unless ($line == 1 || $date ne "$monthstr/$daystr") { + &append; + $line = 1; + } + ($title,$classification,$priority,$date,$time,$srcip,$srcport,$destip,$destport, $sid) = ("n/a","n/a","n/a","n/a","n/a","n/a","n/a","n/a","n/a", "n/a"); + @refs = (); + $_ =~ m/:([0-9]{1,4})\] (.*) \[\*\*\]/; + $title = &Header::cleanhtml($2,"y"); + } + if ($_ =~ m/Classification: (.*)\] \[Priority: (\d)\]/) { + $classification = &Header::cleanhtml($1,"y"); + $priority = $2; + } + if ($_ =~ m/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}) \-\> ([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/) { + $srcip = $1 . "." . $2 . "." . $3 . "." . $4; + $destip = $5 . "." . $6 . "." . $7 . "." . $8; + } + if ($_ =~ m/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\:([0-9]{1,6}) \-\> ([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\:([0-9]{1,6})/) { + $srcip = $1 . "." . $2 . "." . $3 . "." . $4; + $srcport = $5; + $destip = $6 . "." . $7 . "." . $8 . "." . $9; + $destport = $10; + } + + if ($_ =~ m/^([0-9\/]{3,5})\-([0-9\:]{5,8})\.([0-9]{1,14})/) { + ($date,$time) = ($1,$2); + } + if ($_ =~ m/\[Xref \=\>.*\]/) { + $_ =~ s/\]\[Xref \=\> /, /g; + $_ =~ m/\[Xref \=\> (.*)\]/; + push(@refs, $1); + } + if ($_ =~ m/\[1:([0-9]+):[0-9]+\]/) { + $sid = $1; + } + } + $line++; + unless ($line == 1 || $date ne "$monthstr/$daystr") { &append; } + close(LOG); + } +} + +sub append +{ + our ($title,$classification,$priority,$date,$time,$srcip,$srcport,$destip,$destport, $sid, @refs); + + $log[$lines] = "$date $time|$title|$priority|$classification|$srcip|$srcport|$destip|$destport|$sid|"; + foreach $_ (@refs) { + $log[$lines] = "$log[$lines]$_,"; } + $lines++; +} + +sub oldernewer +{ +print < + +END +; + +print ""; +if ($prev != -1) { + print "$Lang::tr{'older'}"; } +else { + print "$Lang::tr{'older'}"; } +print "\n"; + +print ""; +if ($next != -1) { + print "$Lang::tr{'newer'}"; } +else { + print "$Lang::tr{'newer'}"; } +print "\n"; + +print < + +END +; +} diff --git a/html/cgi-bin/logs.cgi/log.dat b/html/cgi-bin/logs.cgi/log.dat new file mode 100644 index 0000000000..87701ad448 --- /dev/null +++ b/html/cgi-bin/logs.cgi/log.dat @@ -0,0 +1,426 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: log.dat,v 1.6.2.22 2006/01/03 12:47:17 franck78 Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +use POSIX(); + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::table2colour} ); +undef (@dummy); + +my %cgiparams=(); +my %logsettings=(); +my $errormessage = ''; + +my @shortmonths = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', + 'Sep', 'Oct', 'Nov', 'Dec' ); +my @longmonths = ( $Lang::tr{'january'}, $Lang::tr{'february'}, $Lang::tr{'march'}, + $Lang::tr{'april'}, $Lang::tr{'may'}, $Lang::tr{'june'}, $Lang::tr{'july'}, $Lang::tr{'august'}, + $Lang::tr{'september'}, $Lang::tr{'october'}, $Lang::tr{'november'}, + $Lang::tr{'december'} ); + +my @now = localtime(); +my $dow = $now[6]; +my $doy = $now[7]; +my $tdoy = $now[7]; +my $year = $now[5]+1900; + +$cgiparams{'DAY'} = $now[3]; +$cgiparams{'MONTH'} = $now[4]; +$cgiparams{'ACTION'} = ''; +$cgiparams{'SECTION'} = 'ipcop'; + +my %sections = ( + 'ipcop' => '(ipcop)', + 'red' => '(red.*|kernel: usb.*|pppd\[.*\]|chat\[.*\]|pppoe\[.*\]|pptp\[.*\]|pppoa\[.*\]|pppoa3\[.*\]|pppoeci\[.*\]|ipppd|ipppd\[.*\]|kernel: ippp\d|kernel: isdn.*|ibod\[.*\]|kernel: eth.*|dhcpcd\[.*\]|modem_run\[.*\])', + 'dns' => '(dnsmasq\[.*\])', + 'dhcp' => '(dhcpd)', + 'cron' => '(fcron\[.*\])', + 'ntp' => '(ntpd(?:ate)?\[.*\])', + 'ssh' => '(sshd(?:\(.*\))?\[.*\])', + 'auth' => '(\w+\(pam_unix\)\[.*\])', + 'kernel' => '(kernel)', + 'ipsec' => '(ipsec_[\w_]+|pluto\[.*\])', + 'snort' => '(snort)', + 'installpackage' => '(installpackage\[.*\])' + ); + +# Translations for the %sections array. +my %trsections = ( + 'ipcop' => 'IPCop', + 'red' => 'RED', + 'dns' => 'DNS', + 'dhcp' => "$Lang::tr{'dhcp server'}", + 'cron' => 'Cron', + 'ntp' => 'NTP', + 'ssh' => 'SSH', + 'auth' => "$Lang::tr{'loginlogout'}", + 'kernel' => "$Lang::tr{'kernel'}", + 'ipsec' => 'IPSec', + 'snort' => 'Snort', + 'installpackage' => "$Lang::tr{'update transcript'}" + ); + + +&Header::getcgihash(\%cgiparams); +$logsettings{'LOGVIEW_REVERSE'} = 'off'; +&General::readhash("${General::swroot}/logging/settings", \%logsettings); +${Header::viewsize} = defined ($logsettings{'LOGVIEW_VIEWSIZE'}) ? $logsettings{'LOGVIEW_VIEWSIZE'} : 150; + +my $start = ($logsettings{'LOGVIEW_REVERSE'} eq 'on') ? 0x7FFFF000 : 0; #index of firts line number to display + +if ($ENV{'QUERY_STRING'} && $cgiparams{'ACTION'} ne $Lang::tr{'update'}) +{ + my @temp = split(',',$ENV{'QUERY_STRING'}); + $start = $temp[0]; + $cgiparams{'MONTH'} = $temp[1]; + $cgiparams{'DAY'} = $temp[2]; + $cgiparams{'SECTION'} = $temp[3]; +} + +if (!($cgiparams{'MONTH'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11)$/) || + !($cgiparams{'DAY'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)$/)) +{ + $cgiparams{'DAY'} = $now[3]; + $cgiparams{'MONTH'} = $now[4]; +} +elsif($cgiparams{'ACTION'} eq '>>') +{ + my @temp_then=(); + my @temp_now = localtime(time); + $temp_now[4] = $cgiparams{'MONTH'}; + $temp_now[3] = $cgiparams{'DAY'}; + if ($cgiparams{'DAY'}) { + @temp_then = localtime(POSIX::mktime(@temp_now) + 86400); + ## Retrieve the same time on the next day + + ## 86400 seconds in a day + } else { + $temp_now[3] = 1; + $temp_now[4] = ($temp_now[4]+1) %12; + @temp_then = localtime(POSIX::mktime(@temp_now) ); + $temp_then[3] = 0; + } + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; +} +elsif($cgiparams{'ACTION'} eq '<<') +{ + my @temp_then=(); + my @temp_now = localtime(time); + $temp_now[4] = $cgiparams{'MONTH'}; + $temp_now[3] = $cgiparams{'DAY'}; + if ($cgiparams{'DAY'}) { + @temp_then = localtime(POSIX::mktime(@temp_now) - 86400); + ## Retrieve the same time on the next day - + ## 86400 seconds in a day + } else { + $temp_now[3] = 1; + $temp_now[4] = ($temp_now[4]-1) %12; + @temp_then = localtime(POSIX::mktime(@temp_now) ); + $temp_then[3] = 0; + } + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; +} + +# Find in which file.gz is the log. Can be calculated because WEEKLY ROTATING of access.log +my $gzindex; +my $date = $cgiparams{'DAY'} == 0 ? '' : $cgiparams{'DAY'} <= 9 ? "0$cgiparams{'DAY'}" : "$cgiparams{'DAY'}"; + +{ + my $xday; + + # Calculate time. If future date, calculate for past year !!! + if (( $cgiparams{'MONTH'} eq $now[4]) && ($cgiparams{'DAY'} > $now[3]) || + ( $cgiparams{'MONTH'} > $now[4] ) ) { + $xday = POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1901 ); + $date = "$longmonths[$cgiparams{'MONTH'}] $date, ". int($year-1); + } else { + $xday = POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1900 ); + $date = "$longmonths[$cgiparams{'MONTH'}] $date, $year"; + } + + # calculate end of active week (saturday 23H59) + my @then = (); + @then = localtime(time()); + my $sunday = POSIX::mktime( 0, 0, 0, @then[3], @then[4], @then[5]); + $sunday += (6-$then[6]) * 86400; + + # Convert delta in second to full weeks + $gzindex = int (($sunday-$xday)/604800 ); +} + +my $monthstr = $shortmonths[$cgiparams{'MONTH'}]; +my $daystr = $cgiparams{'DAY'} == 0 ? '..' : $cgiparams{'DAY'} <= 9 ? " $cgiparams{'DAY'}" : "$cgiparams{'DAY'}"; +my $section = $sections{$cgiparams{'SECTION'}}; + +my $lines = 0; +my @log=(); + +my $loop = 1; +my $filestr = 0; +my $lastdatetime; # for debug +my $search_for_end = 0; + +while ($gzindex >=0 && $loop) { + # calculate file name + if ($gzindex == 0) { + $filestr = "/var/log/messages"; + } else { + $filestr = "/var/log/messages.$gzindex"; + $filestr = "$filestr.gz" if -f "$filestr.gz"; + } + # now read file if existing + if (open (FILE,($filestr =~ /.gz$/ ? "gzip -dc $filestr |" : $filestr))) { + #&General::log("reading $filestr"); + READ:while () { + my $line = $_; + if ($line =~ /^${monthstr} ${daystr} ..:..:.. [\w\-]+ ${section}: (.*)/) { + # when standart viewing, just keep in memory the correct slice + # it starts a '$start' and size is $viewport + # If export, then keep all lines... + if ($cgiparams{'ACTION'} eq $Lang::tr{'export'}){ + $log[$lines++] = "$line"; + } else { + if ($lines++ < ($start + $Header::viewsize)) { + push(@log,"$line"); + if (@log > $Header::viewsize) { + shift (@log); + } + #} else { dont do this optimisation, need to count lines ! + # $datetime = $maxtime; # we have read viewsize lines, stop main loop + # last READ; # exit read file + } + } + $search_for_end = 1; # we find the start of slice, can look for end now + } else { + if ($search_for_end == 1) { + #finish read files when date is over (test month equality only) + $line =~ /^(...) (..) ..:..:..*$/; + $loop = 0 if ( ($1 ne $monthstr) || ( ($daystr ne '..') && ($daystr ne $2) ) ); + } + } + } + close (FILE); + } + $gzindex--; # will try next gz file eg 40,39,38,.... because it may have holes when ipcop stopped + # for a long time +}# while + +# $errormessage = "$Lang::tr{'date not in logs'}: $filestr $Lang::tr{'could not be opened'}"; + +if ($cgiparams{'ACTION'} eq $Lang::tr{'export'}) +{ + print "Content-type: text/plain\n\n"; + print "IPCop diagnostics\r\n"; + print "$Lang::tr{'section'}: $cgiparams{'SECTION'}\n"; + print "$Lang::tr{'date'}: $date\r\n\r\n"; + + if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @log = reverse @log; } + + foreach $_ (@log) + { + /^... (..) (..:..:..) [\w\-]+ ${section}: (.*)$/; + my $day = $1; + $day =~ tr / /0/; + my $time = $cgiparams{'DAY'} ? "$2" : "$day/$2" ; + print "$time $3 $4\r\n"; + } + exit 0; +} + +&Header::showhttpheaders(); + +&Header::openpage($Lang::tr{'firewall log'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); +} + +&Header::openbox('100%', 'left', "$Lang::tr{'settings'}:"); + +print < + + + + + + + + + + + + + +
    $Lang::tr{'section'}:  + $Lang::tr{'month'}:  +  $Lang::tr{'day'}:  +
    + +END +; + +&Header::closebox(); + +&Header::openbox('100%', 'left', $Lang::tr{'log'}); +print "

    $Lang::tr{'total hits for log section'} $cgiparams{'SECTION'} $date: $lines

    "; + +$start = $lines - ${Header::viewsize} if ($start >= $lines - ${Header::viewsize}); +$start = 0 if ($start < 0); + +my $prev; + if ($start == 0) { + $prev = -1; + } else { + $prev = $start - ${Header::viewsize}; + $prev = 0 if ( $prev < 0); + } + +my $next; + if ($start == $lines - ${Header::viewsize}) { + $next = -1; + } else { + $next = $start + ${Header::viewsize}; + $next = $lines - ${Header::viewsize} if ($next >= $lines - ${Header::viewsize}); + } + +if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @log = reverse @log; } +if ($lines != 0) { &oldernewer(); } + +print < + + $Lang::tr{'time'} + $Lang::tr{'section'} +   + +END +; + +$lines = 0; +#print ''; +foreach $_ (@log) +{ + /^... (..) (..:..:..) [\w\-]+ ${section}: (.*)$/; + my $day = $1; + $day =~ tr / /0/; + my $time = $cgiparams{'DAY'} ? "$2" : "$day/$2" ; + my $sec = $3; + my $data = $4; + # correct the cut position, just when section=RED + if (($cgiparams{'SECTION'} eq 'red' ) && ($sec =~ /(kernel:)(.*)/)) { + $sec = 'kernel'; + $data = $2.': '.$data; + } + my $d = substr ($data,0,80); + while (length($data)>80){ #very basic breaking of lines... + $data = substr ($data,80); #permit correct display in table cell + $d .= ' ' . substr ($data,0,80); + } + + + if ($lines % 2) { + print ""; } + else { + print ""; } + print "$time$sec" .&Header::cleanhtml ("$d", 'y') . "\n"; + $lines++; +} +#print ''; +print ""; + +&oldernewer(); + +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); + +sub oldernewer +{ +print < + +END +; + +print ""; +if ($prev != -1) { + print "$Lang::tr{'older'}"; } +else { + print "$Lang::tr{'older'}"; } +print "\n"; + +print ""; +if ($next >= 0) { + print "$Lang::tr{'newer'}"; } +else { + print "$Lang::tr{'newer'}"; } +print "\n"; + +print < + +END +; +} diff --git a/html/cgi-bin/logs.cgi/proxylog.dat b/html/cgi-bin/logs.cgi/proxylog.dat new file mode 100644 index 0000000000..f790e2ff18 --- /dev/null +++ b/html/cgi-bin/logs.cgi/proxylog.dat @@ -0,0 +1,494 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: proxylog.dat,v 1.4.2.25 2005/07/07 17:32:24 eoberlander Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +use POSIX(); + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::table2colour} ); +undef (@dummy); + +my %cgiparams=(); +my %logsettings=(); +my %ips=(); +my %selected=(); +my %checked=(); +my @log=(); +my $errormessage = ''; + +my @shortmonths = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', + 'Sep', 'Oct', 'Nov', 'Dec' ); +my @longmonths = ( $Lang::tr{'january'}, $Lang::tr{'february'}, $Lang::tr{'march'}, + $Lang::tr{'april'}, $Lang::tr{'may'}, $Lang::tr{'june'}, $Lang::tr{'july'}, $Lang::tr{'august'}, + $Lang::tr{'september'}, $Lang::tr{'october'}, $Lang::tr{'november'}, + $Lang::tr{'december'} ); + +my @now = localtime(); +my $dow = $now[6]; # day of week +my $doy = $now[7]; # day of year (0..364) +my $tdoy = $now[7]; +my $year = $now[5]+1900; + +$cgiparams{'DAY'} = $now[3]; +$cgiparams{'MONTH'} = $now[4]; +$cgiparams{'SOURCE_IP'} = 'ALL'; +$cgiparams{'FILTER'} = "[.](gif|jpeg|jpg|png|css|js)\$"; +$cgiparams{'ENABLE_FILTER'} = 'off'; +$cgiparams{'ACTION'} = ''; + +&Header::getcgihash(\%cgiparams); +$logsettings{'LOGVIEW_REVERSE'} = 'off'; +&General::readhash("${General::swroot}/logging/settings", \%logsettings); +${Header::viewsize} = defined ($logsettings{'LOGVIEW_VIEWSIZE'}) ? $logsettings{'LOGVIEW_VIEWSIZE'} : 150; + +if ($cgiparams{'ACTION'} eq '') +{ + $cgiparams{'ENABLE_FILTER'} = 'on'; +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'restore defaults'}) +{ + $cgiparams{'FILTER'} = "[.](gif|jpeg|jpg|png|css|js)\$"; + $cgiparams{'ENABLE_FILTER'} = 'off'; +} + +{ + my %save=(); + $save{'FILTER'} = $cgiparams{'FILTER'}; + $save{'ENABLE_FILTER'} = $cgiparams{'ENABLE_FILTER'}; + &General::writehash("${General::swroot}/proxy/viewersettings", \%save); + &General::readhash("${General::swroot}/proxy/viewersettings", \%save); +} + +my $start = ($logsettings{'LOGVIEW_REVERSE'} eq 'on') ? 0x7FFFF000 : 0; #index of first line number to display + +if ($ENV{'QUERY_STRING'} && $cgiparams{'ACTION'} ne $Lang::tr{'update'}) +{ + my @temp = split(',',$ENV{'QUERY_STRING'}); + $start = $temp[0]; + $cgiparams{'MONTH'} = $temp[1]; + $cgiparams{'DAY'} = $temp[2]; + $cgiparams{'SOURCE_IP'} = $temp[3]; +} + +if (!($cgiparams{'MONTH'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11)$/) || + !($cgiparams{'DAY'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)$/)) +{ + $cgiparams{'DAY'} = $now[3]; + $cgiparams{'MONTH'} = $now[4]; +} +elsif($cgiparams{'ACTION'} eq '>>') +{ + my @temp_then=(); + my @temp_now = localtime(time); + $temp_now[4] = $cgiparams{'MONTH'}; + $temp_now[3] = $cgiparams{'DAY'}; + if ($cgiparams{'DAY'}) { + @temp_then = localtime(POSIX::mktime(@temp_now) + 86400); + ## Retrieve the same time on the next day + + ## 86400 seconds in a day + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; + } else { + $temp_now[3] = 1; + $temp_now[4] = ($temp_now[4]+1) %12; + @temp_then = localtime(POSIX::mktime(@temp_now) ); + @temp_then[3] = 0; + } + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; +} +elsif($cgiparams{'ACTION'} eq '<<') +{ + my @temp_then=(); + my @temp_now = localtime(time); + $temp_now[4] = $cgiparams{'MONTH'}; + $temp_now[3] = $cgiparams{'DAY'}; + if ($cgiparams{'DAY'}) { + @temp_then = localtime(POSIX::mktime(@temp_now) - 86400); + ## Retrieve the same time on the next day - + ## 86400 seconds in a day + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; + } else { + $temp_now[3] = 1; + $temp_now[4] = ($temp_now[4]-1) %12; + @temp_then = localtime(POSIX::mktime(@temp_now) ); + @temp_then[3] = 0; + } + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; +} + +# Find in which file.gz is the log. Can be calculated because WEEKLY ROTATING of *.log +my $gzindex; +my $daystr = $cgiparams{'DAY'} == 0 ? '' :$cgiparams{'DAY'} <= 9 ? "0$cgiparams{'DAY'}" : "$cgiparams{'DAY'}"; + +{ + my $xday; + + # Calculate time. If future date, calculate for past year !!! + if (( $cgiparams{'MONTH'} eq $now[4]) && ($cgiparams{'DAY'} > $now[3]) || + ( $cgiparams{'MONTH'} > $now[4] ) ) { + $xday = POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1901 ); + $daystr = "$longmonths[$cgiparams{'MONTH'}] $daystr, ". int($year-1); + } else { + $xday = POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1900 ); + $daystr = "$longmonths[$cgiparams{'MONTH'}] $daystr, $year"; + } + + # calculate end of active week (saturday 23H59) + my @then = (); + @then = localtime(time()); + my $sunday = POSIX::mktime( 0, 0, 0, @then[3], @then[4], @then[5]); + $sunday += (6-$then[6]) * 86400; + + # Convert delta in second to full weeks + $gzindex = int (($sunday-$xday)/604800 ); +} + + +my $filter = $cgiparams{'ENABLE_FILTER'} eq 'on' ? $cgiparams{'FILTER'} : ''; +my $sourceip = $cgiparams{'SOURCE_IP'}; +my $sourceall = $cgiparams{'SOURCE_IP'} eq 'ALL' ? 1 : 0; + +my $lines = 0; +my $temp = (); +my $thiscode = '$temp =~ /$filter/;'; +eval($thiscode); +if ($@ ne '') +{ + $errormessage = "$Lang::tr{'bad ignore filter'}.$@

    "; + $filter = ''; +} else { + my $loop = 1; + my $filestr = 0; + my $lastdatetime; # for debug + + while ($gzindex >=0 && $loop) { + # calculate file name + if ($gzindex == 0) { + $filestr = "/var/log/squid/access.log"; + } else { + $filestr = "/var/log/squid/access.log.$gzindex"; + $filestr = "$filestr.gz" if -f "$filestr.gz"; + } + # now read file if existing + if (open (FILE,($filestr =~ /.gz$/ ? "gzip -dc $filestr |" : $filestr))) { + #&General::log("reading $filestr"); + my @temp_now = localtime(time); + $temp_now[4] = $cgiparams{'MONTH'}; + $temp_now[3] = $cgiparams{'DAY'}; + if ( ( $cgiparams{'MONTH'} eq $now[4]) && ($cgiparams{'DAY'} > $now[3]) || + ( $cgiparams{'MONTH'} > $now[4] ) ) { + $temp_now[5]--; # past year + } + + $temp_now[2] = $temp_now[1] = $temp_now[0] = 0; # start at 00:00:00 + $temp_now[3] = 1 if ($cgiparams{'DAY'}==0); # All days selected, start at '1' + my $mintime = POSIX::mktime(@temp_now); + my $maxtime; + if ($cgiparams{'DAY'}==0) { # full month + if ($temp_now[4]++ == 12){ + $temp_now[4] = 0; + $temp_now[5]++; + }; + $maxtime = POSIX::mktime(@temp_now); + } else { + $maxtime = $mintime + 86400; # full day + } + READ:while () { + my ($datetime,$do,$ip,$ray,$me,$far,$url,$so) = split; + $ips{$ip}++; + # for debug + #$lastdatetime = $datetime; + + # collect lines between date && filter + if (( ($datetime>$mintime)&&($datetime<$maxtime)) && !($url =~ /$filter/) && + ((($ip eq $sourceip) || $sourceall))) + { + # when standart viewing, just keep in memory the correct slices + # it starts a '$start' and size is $viewport + # If export, then keep all lines... + if ($cgiparams{'ACTION'} eq $Lang::tr{'export'}){ + $log[$lines++] = "$datetime $ip $url"; + } else { + if ($lines++ < ($start + $Header::viewsize)) { + push(@log,"$datetime $ip $url"); + if (@log > $Header::viewsize) { + shift (@log); + } + #} else { dont do this optimisation, need to count lines ! + # $datetime = $maxtime; # we have read viewsize lines, stop main loop + # last READ; # exit read file + } + } + } + + # finish loop when date of lines are past maxtime + $loop = ($datetime < $maxtime); + } + close (FILE); + } + $gzindex--; # will try next gz file eg 40,39,38,.... because it may have holes when ipcop stopped + # for a long time + + } + + #$errormessage="$errormessage$Lang::tr{'date not in logs'}: $filestr $Lang::tr{'could not be opened'}"; + if (0) { # print last date record read + my ($SECdt, $MINdt, $HOURdt, $DAYdt, $MONTHdt, $YEARdt) = localtime($lastdatetime); + $SECdt = sprintf ("%.02d",$SECdt); + $MINdt = sprintf ("%.02d",$MINdt); + $HOURdt = sprintf ("%.02d",$HOURdt); + $DAYdt = sprintf ("%.02d",$DAYdt); + $MONTHdt = sprintf ("%.02d",$MONTHdt+1); + $YEARdt = sprintf ("%.04d",$YEARdt+1900); + &General::log ("$HOURdt:$MINdt:$SECdt, $DAYdt/$MONTHdt/$YEARdt--"); + } +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'export'}) +{ + print "Content-type: text/plain\n\n"; + print "IPCop proxy log\r\n"; + print "$Lang::tr{'date'}: $daystr\r\n"; + print "Source IP: $cgiparams{'SOURCE_IP'}\r\n"; + if ($cgiparams{'ENABLE_FILTER'} eq 'on') { + print "Ignore filter: $cgiparams{'FILTER'}\r\n"; } + print "\r\n"; + + if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @log = reverse @log; } + + foreach $_ (@log) { + my ($datetime,$ip,$url) = split; + my ($SECdt, $MINdt, $HOURdt, $DAYdt, $MONTHdt, $YEARdt) = localtime($datetime); + $SECdt = sprintf ("%.02d",$SECdt); + $MINdt = sprintf ("%.02d",$MINdt); + $HOURdt = sprintf ("%.02d",$HOURdt); + if ($cgiparams{'DAY'}==0) { # full month + $DAYdt = sprintf ("%.02d",$DAYdt); + print "$DAYdt/$HOURdt:$MINdt:$SECdt $ip $url\n"; + } else { + print "$HOURdt:$MINdt:$SECdt $ip $url\n"; + } + } + exit; +} + +$selected{'SOURCE_IP'}{$cgiparams{'SOURCE_IP'}} = "selected='selected'"; + +$checked{'ENABLE_FILTER'}{'off'} = ''; +$checked{'ENABLE_FILTER'}{'on'} = ''; +$checked{'ENABLE_FILTER'}{$cgiparams{'ENABLE_FILTER'}} = "checked='checked'"; + +&Header::showhttpheaders(); + +&Header::openpage($Lang::tr{'proxy log viewer'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); +} + +&Header::openbox('100%', 'left', "$Lang::tr{'settings'}:"); + +print < + + + + + + + + + + + + + + + + + +
    $Lang::tr{'month'}: + $Lang::tr{'day'}:  + $Lang::tr{'source ip'}: +
    $Lang::tr{'ignore filter'}:$Lang::tr{'enable ignore filter'}:
    +

    + + + + + + +
    +
    + +END +; + +&Header::closebox(); +&Header::openbox('100%', 'left', $Lang::tr{'log'}); + + +$start = $lines - ${Header::viewsize} if ($start >= $lines - ${Header::viewsize}); +$start = 0 if ($start < 0); + +my $prev; + if ($start == 0) { + $prev = -1; + } else { + $prev = $start - ${Header::viewsize}; + $prev = 0 if ( $prev < 0); + } + +my $next; + if ($start == $lines - ${Header::viewsize}) { + $next = -1; + } else { + $next = $start + ${Header::viewsize}; + $next = $lines - ${Header::viewsize} if ($next >= $lines - ${Header::viewsize}); + } + +if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @log = reverse @log; } + +print "

    $Lang::tr{'web hits'} $daystr: $lines

    "; +if ($lines != 0) { &oldernewer(); } +print < + +$Lang::tr{'time'} +$Lang::tr{'source ip'} +$Lang::tr{'website'} + +END +; +my $ll = 0; +foreach $_ (@log) +{ + if ($ll % 2) { + print "\n"; } + else { + print "\n"; } + my ($datetime,$ip,$url) = split; + my ($SECdt, $MINdt, $HOURdt, $DAYdt, $MONTHdt, $YEARdt) = localtime($datetime); + $SECdt = sprintf ("%.02d",$SECdt); + $MINdt = sprintf ("%.02d",$MINdt); + $HOURdt = sprintf ("%.02d",$HOURdt); + + $url =~ /(^.{0,60})/; + my $part = $1; + unless (length($part) < 60) { $part = "${part}..."; } + $url = &Header::cleanhtml($url,"y"); + $part = &Header::cleanhtml($part,"y"); + if ($cgiparams{'DAY'}==0) { # full month + $DAYdt = sprintf ("%.02d/",$DAYdt); + } else { + $DAYdt=''; + } + print <$DAYdt$HOURdt:$MINdt:$SECdt + $ip + $part + +END + ; + $ll++; +} + +print ""; + +&oldernewer(); + +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); + + +sub oldernewer +{ +print < + +END +; + +print ""; +if ($prev != -1) { + print "$Lang::tr{'older'}"; } +else { + print "$Lang::tr{'older'}"; } +print "\n"; + +print ""; +if ($next >= 0 ) { + print "$Lang::tr{'newer'}"; } +else { + print "$Lang::tr{'newer'}"; } +print "\n"; + +print < + +END +; +} + diff --git a/html/cgi-bin/logs.cgi/summary.dat b/html/cgi-bin/logs.cgi/summary.dat new file mode 100644 index 0000000000..273a862cf0 --- /dev/null +++ b/html/cgi-bin/logs.cgi/summary.dat @@ -0,0 +1,213 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: summary.dat,v 1.3.2.14 2005/07/10 00:48:42 franck78 Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +use POSIX(); + +my %cgiparams=(); +my $errormessage = ''; + +my @longmonths = ( $Lang::tr{'january'}, $Lang::tr{'february'}, $Lang::tr{'march'}, + $Lang::tr{'april'}, $Lang::tr{'may'}, $Lang::tr{'june'}, $Lang::tr{'july'}, $Lang::tr{'august'}, + $Lang::tr{'september'}, $Lang::tr{'october'}, $Lang::tr{'november'}, + $Lang::tr{'december'} ); + +my @now = localtime(); +my $year = $now[5]+1900; + +$cgiparams{'MONTH'} = ''; +$cgiparams{'DAY'} = ''; +$cgiparams{'ACTION'} = ''; + +&Header::getcgihash(\%cgiparams); + +my $start = -1; +if ($ENV{'QUERY_STRING'} && $cgiparams{'ACTION'} ne $Lang::tr{'update'}) { + my @temp = split(',',$ENV{'QUERY_STRING'}); + $start = $temp[0]; + $cgiparams{'MONTH'} = $temp[1]; + $cgiparams{'DAY'} = $temp[2]; +} + +if (!($cgiparams{'MONTH'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11)$/) || + !($cgiparams{'DAY'} =~ /^(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)$/)) { + # Reports are generated at the end of the day, so if nothing is selected + # we need to display yesterdays (todays won't have been generated yet) + my @temp_then=(); + my @temp_now = localtime(time); + $temp_now[4] = $now[4]; + $temp_now[3] = $now[3]; + @temp_then = localtime(POSIX::mktime(@temp_now) - 86400); + ## Retrieve the same time on the previous day - + ## 86400 seconds in a day + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; +} +elsif($cgiparams{'ACTION'} eq '>>') { + my @temp_then=(); + my @temp_now = localtime(time); + $temp_now[4] = $cgiparams{'MONTH'}; + $temp_now[3] = $cgiparams{'DAY'}; + @temp_then = localtime(POSIX::mktime(@temp_now) + 86400); + ## Retrieve the same time on the next day + + ## 86400 seconds in a day + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; +} +elsif($cgiparams{'ACTION'} eq '<<') { + my @temp_then=(); + my @temp_now = localtime(time); + $temp_now[4] = $cgiparams{'MONTH'}; + $temp_now[3] = $cgiparams{'DAY'}; + @temp_then = localtime(POSIX::mktime(@temp_now) - 86400); + ## Retrieve the same time on the previous day - + ## 86400 seconds in a day + $cgiparams{'MONTH'} = $temp_then[4]; + $cgiparams{'DAY'} = $temp_then[3]; +} + +if (($cgiparams{'DAY'} ne $now[3]) || ($cgiparams{'MONTH'} ne $now[4])) { + if ( ($cgiparams{'MONTH'} eq $now[4]) && ($cgiparams{'DAY'} > $now[3]) || + ($cgiparams{'MONTH'} > $now[4]) ) { + $year = $year - 1; + } +} + +my $monthnum = $cgiparams{'MONTH'} + 1; +my $monthstr = $monthnum <= 9 ? "0$monthnum" : "$monthnum"; +my $longmonthstr = $longmonths[$cgiparams{'MONTH'}]; +my $daystr = $cgiparams{'DAY'} <= 9 ? "0$cgiparams{'DAY'}" : "$cgiparams{'DAY'}"; + +my $skip=0; +my $filestr="/var/log/logwatch/$year-$monthstr-$daystr"; + +if (!(open (FILE,$filestr))) { + $errormessage = "$Lang::tr{'date not in logs'}: $filestr $Lang::tr{'could not be opened'}"; + $skip=1; + # Note: This is in case the log does not exist for that date +} + +if (! $skip && $cgiparams{'ACTION'} eq $Lang::tr{'export'}) { + print "Content-type: text/plain\n\n"; + + while () { + print "$_\r\n"; + } + close (FILE); + exit 0; +} + +&Header::showhttpheaders(); + +&Header::openpage($Lang::tr{'log summary'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); +} + +&Header::openbox('100%', 'left', "$Lang::tr{'settings'}:"); + +print < + + + + + + + + + + + +
    $Lang::tr{'month'}: + $Lang::tr{'day'}: +
    + +END +; + +&Header::closebox(); + +my $header = 0; +my @content=(); + +if(!$skip) +{ + while () { + if (/^\s*--+ ([^-]+) Begin --+\s*$/) { + # New Section. open box + @content = (); + &Header::openbox('100%', 'left', $Lang::tr{"ls_\L$1"} ? $Lang::tr{"ls_\L$1"} : $1); + print "
    ";
    +    } elsif (/^\s*--+ ([^-]+) End --+\s*$/) {
    +      # End of Section, kill leading and trailing blanks, print info, close
    +      # box
    +      while ( $content[0] =~ /^\s*$/ ) { shift @content; }
    +      while ( $content[$#content] =~ /^\s*$/ ) { pop @content; }
    +      foreach $_ (@content) { $_ =~ s/\s*$//; print &Header::cleanhtml($_,"y")."\n"; }
    +      print "\n
    "; + &Header::closebox(); + } elsif (/^\s*#+ LogWatch [^#]+[)] #+\s*$/) { + # Start of logwatch header, skip it + $header = 1; + } elsif (/^\s*#+\s*$/) { + # End of logwatch header + $header = 0; + } elsif (/^\s*#+ LogWatch End #+\s*$/) { + # End of report + } elsif ($header eq 0) { + push(@content,$_); + } + } + close (FILE); +} + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/cgi-bin/modem.cgi b/html/cgi-bin/modem.cgi new file mode 100644 index 0000000000..285466c8ef --- /dev/null +++ b/html/cgi-bin/modem.cgi @@ -0,0 +1,120 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: modem.cgi,v 1.4.2.7 2005/02/22 22:21:56 gespinasse Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %modemsettings=(); +my $errormessage = ''; + +&Header::showhttpheaders(); + +$modemsettings{'ACTION'} = ''; +$modemsettings{'VALID'} = ''; + +&Header::getcgihash(\%modemsettings); + +if ($modemsettings{'ACTION'} eq $Lang::tr{'save'}) +{ + if (!($modemsettings{'TIMEOUT'} =~ /^\d+$/)) + { + $errormessage = $Lang::tr{'timeout must be a number'}; + goto ERROR; + } +ERROR: + if ($errormessage) { + $modemsettings{'VALID'} = 'no'; } + else { + $modemsettings{'VALID'} = 'yes'; } + + &General::writehash("${General::swroot}/modem/settings", \%modemsettings); +} + +if ($modemsettings{'ACTION'} eq $Lang::tr{'restore defaults'}) +{ + system('/bin/cp', "${General::swroot}/modem/defaults", "${General::swroot}/modem/settings", '-f'); +} + +&General::readhash("${General::swroot}/modem/settings", \%modemsettings); + +&Header::openpage($Lang::tr{'modem configuration'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); +} + +print "
    \n"; + +&Header::openbox('100%', 'left', "$Lang::tr{'modem configuration'}:"); +print < + + $Lang::tr{'init string'} * + + $Lang::tr{'hangup string'} * + + + + $Lang::tr{'speaker on'} * + + $Lang::tr{'speaker off'} * + + + + $Lang::tr{'tone dial'} * + + $Lang::tr{'pulse dial'} * + + + + $Lang::tr{'connect timeout'} + +   +   + + + + +
    + + + + + +
    + *  + $Lang::tr{'this field may be blank'} + + + + +
    + +END +; +&Header::closebox(); + +print "\n"; + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/cgi-bin/netstatus.cgi b/html/cgi-bin/netstatus.cgi new file mode 100644 index 0000000000..05989923cb --- /dev/null +++ b/html/cgi-bin/netstatus.cgi @@ -0,0 +1,222 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: netstatus.cgi,v 1.9.2.20 2005/11/05 15:46:25 gespinasse Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %dhcpsettings=(); +my %netsettings=(); +my %dhcpinfo=(); +my %pppsettings=(); +my $output=''; + +&General::readhash("${General::swroot}/dhcp/settings", \%dhcpsettings); +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); +&General::readhash("${General::swroot}/ppp/settings", \%pppsettings); +&Header::showhttpheaders(); +&Header::openpage($Lang::tr{'network status information'}, 1, ''); + +&Header::openbigbox('100%', 'left'); + +print "\n"; +print "
    \n"; +print "$Lang::tr{'interfaces'} |\n"; +if ( $netsettings{'CONFIG_TYPE'} =~ /^(2|3|6|7)$/ && $netsettings{'RED_TYPE'} eq "DHCP") { + print "RED $Lang::tr{'dhcp configuration'} |\n"; +} +if ($dhcpsettings{'ENABLE_GREEN'} eq 'on' || $dhcpsettings{'ENABLE_BLUE'} eq 'on') { + print "$Lang::tr{'current dynamic leases'} |\n"; +} +if ($pppsettings{'TYPE'} =~ /^(bewanadsl|alcatelusbk|conexantpciadsl|eagleusbadsl)$/) { + print "$Lang::tr{'adsl settings'} |\n"; +} +print "$Lang::tr{'routing table entries'} |\n"; +print " $Lang::tr{'arp table entries'}\n"; +print "
    \n"; + +print "\n"; +&Header::openbox('100%', 'left', $Lang::tr{'interfaces'}); +$output = `/sbin/ifconfig -a`; +$output = &Header::cleanhtml($output,"y"); + +my @itfs = ('ORANGE','BLUE','GREEN'); +foreach my $itf (@itfs) { + my $ColorName=''; + my $lc_itf=lc($itf); + my $dev = $netsettings{"${itf}_DEV"}; + if ($dev){ + $ColorName = "${lc_itf}"; #dereference variable name... + $output =~ s/$dev/$dev<\/font><\/b>/ ; + } +} + +if (open(REDIFACE, "${General::swroot}/red/iface")) { + my $lc_itf='red'; + my $reddev = ; + close(REDIFACE); + chomp $reddev; + $output =~ s/$reddev/${reddev}<\/font><\/b>/; +} +print "
    $output
    \n"; +&Header::closebox(); + + +if ( $netsettings{'CONFIG_TYPE'} =~ /^(2|3|6|7)$/ && $netsettings{'RED_TYPE'} eq "DHCP") { + + print "
    \n"; + &Header::openbox('100%', 'left', "RED $Lang::tr{'dhcp configuration'}"); + if (-s "${General::swroot}/dhcpc/dhcpcd-$netsettings{'RED_DEV'}.info") { + + &General::readhash("${General::swroot}/dhcpc/dhcpcd-$netsettings{'RED_DEV'}.info", \%dhcpinfo); + + my $DNS1=`echo $dhcpinfo{'DNS'} | cut -f 1 -d ,`; + my $DNS2=`echo $dhcpinfo{'DNS'} | cut -f 2 -d ,`; + + my $lsetme=0; + my $leasetime=""; + if ($dhcpinfo{'LEASETIME'} ne "") { + $lsetme=$dhcpinfo{'LEASETIME'}; + $lsetme=($lsetme/60); + if ($lsetme > 59) { + $lsetme=($lsetme/60); $leasetime=$lsetme." Hour"; + } else { + $leasetime=$lsetme." Minute"; + } + if ($lsetme > 1) { + $leasetime=$leasetime."s"; + } + } + my $rentme=0; + my $rnwltime=""; + if ($dhcpinfo{'RENEWALTIME'} ne "") { + $rentme=$dhcpinfo{'RENEWALTIME'}; + $rentme=($rentme/60); + if ($rentme > 59){ + $rentme=($rentme/60); $rnwltime=$rentme." Hour"; + } else { + $rnwltime=$rentme." Minute"; + } + if ($rentme > 1){ + $rnwltime=$rnwltime."s"; + } + } + my $maxtme=0; + my $maxtime=""; + if ($dhcpinfo{'REBINDTIME'} ne "") { + $maxtme=$dhcpinfo{'REBINDTIME'}; + $maxtme=($maxtme/60); + if ($maxtme > 59){ + $maxtme=($maxtme/60); $maxtime=$maxtme." Hour"; + } else { + $maxtime=$maxtme." Minute"; + } + if ($maxtme > 1) { + $maxtime=$maxtime."s"; + } + } + + print ""; + if ($dhcpinfo{'HOSTNAME'}) { + print "\n"; + } else { + print "\n"; + } + print < + + + + + + +
    $Lang::tr{'hostname'}$dhcpinfo{'HOSTNAME'}.$dhcpinfo{'DOMAIN'}
    $Lang::tr{'domain'}$dhcpinfo{'DOMAIN'}
    $Lang::tr{'gateway'}$dhcpinfo{'GATEWAY'}
    $Lang::tr{'primary dns'}$DNS1
    $Lang::tr{'secondary dns'}$DNS2
    $Lang::tr{'dhcp server'}$dhcpinfo{'DHCPSIADDR'}
    $Lang::tr{'def lease time'}$leasetime
    $Lang::tr{'default renewal time'}$rnwltime
    $Lang::tr{'max renewal time'}$maxtime
    +END + ; + } + else + { + print "$Lang::tr{'no dhcp lease'}"; + } + &Header::closebox(); +} + +if ($dhcpsettings{'ENABLE_GREEN'} eq 'on' || $dhcpsettings{'ENABLE_BLUE'} eq 'on') { + + print "
    "; + &Header::CheckSortOrder; + &Header::PrintActualLeases; +} + +if ( $netsettings{'CONFIG_TYPE'} =~ /^(0|1|4|5)$/ && (exists($pppsettings{'TYPE'})) ) { + +my $output1=''; +my $output2=''; +if ($pppsettings{'TYPE'} eq 'bewanadsl') { + print "\n"; + &Header::openbox('100%', 'left', $Lang::tr{'adsl settings'}); + $output1 = `/usr/bin/unicorn_status`; + $output1 = &Header::cleanhtml($output1,"y"); + $output2 = `/bin/cat /proc/net/atm/UNICORN:*`; + $output2 = &Header::cleanhtml($output2,"y"); + print "
    $output1$output2
    \n"; + &Header::closebox(); +} +if ($pppsettings{'TYPE'} eq 'alcatelusbk') { + print "
    \n"; + &Header::openbox('100%', 'left', $Lang::tr{'adsl settings'}); + $output = `/bin/cat /proc/net/atm/speedtch:*`; + $output = &Header::cleanhtml($output,"y"); + print "
    $output
    \n"; + &Header::closebox(); +} +if ($pppsettings{'TYPE'} eq 'conexantpciadsl') { + print "
    \n"; + &Header::openbox('100%', 'left', $Lang::tr{'adsl settings'}); + $output = `/bin/cat /proc/net/atm/CnxAdsl:*`; + $output = &Header::cleanhtml($output,"y"); + print "
    $output
    \n"; + &Header::closebox(); +} +if ($pppsettings{'TYPE'} eq 'eagleusbadsl') { + print "
    \n"; + &Header::openbox('100%', 'left', $Lang::tr{'adsl settings'}); + $output = `/usr/sbin/eaglestat`; + $output = &Header::cleanhtml($output,"y"); + print "
    $output
    \n"; + &Header::closebox(); +} + +} + +print "
    \n"; +&Header::openbox('100%', 'left', $Lang::tr{'routing table entries'}); +$output = `/sbin/route -n`; +$output = &Header::cleanhtml($output,"y"); +print "
    $output
    \n"; +&Header::closebox(); + +print "
    \n"; +&Header::openbox('100%', 'left', $Lang::tr{'arp table entries'}); +$output = `/sbin/arp -n`; +$output = &Header::cleanhtml($output,"y"); +print "
    $output
    \n"; +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/cgi-bin/networks.cgi b/html/cgi-bin/networks.cgi new file mode 100644 index 0000000000..c5c9d6b17c --- /dev/null +++ b/html/cgi-bin/networks.cgi @@ -0,0 +1,420 @@ +#!/usr/bin/perl +# +# This file is part of the IPCop Firewall. +# +# IPCop is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# IPCop is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with IPCop; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Copyright (C) 2003-09-22 Darren Critchley +# +# $Id: networks.cgi,v 1.2.2.3 2005/04/29 23:37:06 franck78 Exp $ +# + +use strict; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %netsettings=(); +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); + +my @networks=(); +my $filename = "${General::swroot}/firewall/customnetworks"; +&setup_default_networks(); + +&Header::getcgihash(\%cgiparams); + +if ($cgiparams{'ACTION'} eq $Lang::tr{'add'}){ + + &validateparams(); + unless($errormessage){ + $key++; # Add one to last sequence number + open(FILE,">>$filename") or die 'Unable to open custom networks file.'; + flock FILE, 2; + print FILE "$key,$cgiparams{'NAME'},$cgiparams{'IPADDRESS'},$cgiparams{'NETMASK'}\n"; + close(FILE); + &General::log("$Lang::tr{'network added'}: $cgiparams{'NAME'}"); + undef %cgiparams; + } +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'update'}) +{ + &validateparams(); + # Darren Critchley - If there is an error don't waste any more processing time + if ($errormessage) { $cgiparams{'ACTION'} = $Lang::tr{'edit'}; goto UPD_ERROR; } + + unless($errormessage){ + open(FILE, $filename) or die 'Unable to open custom networks file.'; + my @current = ; + close(FILE); + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + foreach my $line (@current) { + chomp($line); + my @temp = split(/\,/,$line); + if ($cgiparams{'KEY'} eq $temp[0]) { + print FILE "$cgiparams{'KEY'},$cgiparams{'NAME'},$cgiparams{'IPADDRESS'},$cgiparams{'NETMASK'}\n"; + } else { + print FILE "$line\n"; + } + } + close(FILE); + &General::log("$Lang::tr{'network updated'}: $cgiparams{'NAME'}"); + undef %cgiparams; + } +UPD_ERROR: +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) +{ + open(FILE, "$filename") or die 'Unable to open custom networks file.'; + my @current = ; + close(FILE); + + unless ($errormessage) + { + foreach my $line (@current) + { + chomp($line); + my @temp = split(/\,/,$line); + if ($cgiparams{'KEY'} eq $temp[0]) { + $cgiparams{'NAME'} = $temp[1]; + $cgiparams{'IPADDRESS'} = $temp[2]; + $cgiparams{'NETMASK'} = $temp[3]; + } + + } + } +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) +{ + open(FILE, $filename) or die 'Unable to open custom networks file.'; + my @current = ; + close(FILE); + + open(FILE, ">$filename") or die 'Unable to open custom networks file.'; + flock FILE, 2; + foreach my $line (@current) + { + chomp($line); + if ($line ne '') { + my @temp = split(/\,/,$line); + if ($cgiparams{'KEY'} eq $temp[0]) { + &General::log("$Lang::tr{'network removed'}: $temp[1]"); + } else { + print FILE "$temp[0],$temp[1],$temp[2],$temp[3]\n"; + } + } + } + close(FILE); + undef %cgiparams; +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'reset'}) +{ + undef %cgiparams; +} + +if ($cgiparams{'ACTION'} eq '') +{ + $cgiparams{'KEY'} = ''; + $cgiparams{'IPADDRESS'} = ''; + $cgiparams{'NETMASK'} = ''; + $cgiparams{'NAME'} = ''; +} + +&Header::showhttpheaders(); + +&Header::openpage($Lang::tr{'networks settings'}, 1, ''); + +&Header::openbigbox('100%', 'LEFT', '', $errormessage); + +# DEBUG DEBUG +#&Header::openbox('100%', 'LEFT', 'DEBUG'); +#foreach $line (keys %cgiparams) { +# print "$line = $cgiparams{$line}
    "; +#} +#print "$ENV{'QUERY_STRING'}\n"; +#print " 
    \n"; +#&Header::closebox(); + +if ($errormessage) { + &Header::openbox('100%', 'LEFT', $Lang::tr{'error messages'}); + print "$errormessage\n"; + print " \n"; + &Header::closebox(); +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}){ + &Header::openbox('100%', 'LEFT', "$Lang::tr{'edit network'}:"); +} else { + &Header::openbox('100%', 'LEFT', "$Lang::tr{'add network'}:"); +} +print < +
    + + + + + + + + + + + + + +END +; +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}){ +# Darren Critchley - put in next release - author has authorized GPL inclusion +# print "\n"; + print "\n"; + print "\n"; + print "\n"; +} else { +# Darren Critchley - put in next release - author has authorized GPL inclusion +# print "\n"; + print "\n"; + print "\n"; +} +print < +
    $Lang::tr{'name'}$Lang::tr{'ip address'}$Lang::tr{'netmask'}   
    + + + + + + IP CalculatorIP Calculator
    +
    + +END +; +&Header::closebox(); + +&Header::openbox('100%', 'LEFT', "$Lang::tr{'custom networks'}:"); +print < + + + + + + +END +; +&display_custom_networks(); +print < + +END +; +&Header::closebox(); + +&Header::openbox('100%', 'LEFT', "$Lang::tr{'default networks'}:"); +print < +
    $Lang::tr{'name'}$Lang::tr{'ip address'}$Lang::tr{'netmask'}
    + + + + + +END +; +&display_default_networks(); +print < + +END +; +&Header::closebox(); + + print "$Lang::tr{'this feature has been sponsored by'} : "; + print "Kobelt Development Inc..\n"; + +&Header::closebigbox(); + +&Header::closepage(); + +sub display_custom_networks +{ + open(FILE, "$filename") or die 'Unable to open networks file.'; + my @current = ; + close(FILE); + + my $id = 0; + foreach $line (@current) + { + chomp($line); + if ($line ne ''){ + my @temp = split(/\,/,$line); + # Darren Critchley highlight the row we are editing + if ( $cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'KEY'} eq $temp[0] ) { + print "\n"; + } else { + if ($id % 2) { + print "\n"; + } else { + print "\n"; + } + } + print "\n"; + print "\n"; + print "\n"; + print < + + + + + +END +; + print "\n"; + $id++; + } + } +} + +sub display_default_networks +{ + foreach $line (sort @networks) + { + my @temp = split(/\,/,$line); + if ($id % 2) { + print "\n"; + } else { + print "\n"; + } + print "\n"; + print "\n"; + print "\n"; + print "\n"; + $id++; + } +} + +sub setup_default_networks +{ + # Get current defined networks (Red, Green, Blue, Orange) + my $line = "Any,0.0.0.0,0.0.0.0"; + push (@networks, $line); + $line = "localhost,127.0.0.1,255.255.255.255"; + push (@networks, $line); + $line = "localnet,127.0.0.0,255.0.0.0"; + push (@networks, $line); + $line = "Private Network 10.0.0.0,10.0.0.0,255.0.0.0"; + push (@networks, $line); + $line = "Private Network 172.16.0.0,172.16.0.0,255.240.0.0"; + push (@networks, $line); + $line = "Private Network 192.168.0.0,192.168.0.0,255.255.0.0"; + push (@networks, $line); + + my $red_address=`cat ${General::swroot}/red/local-ipaddress`; + $line = "Red Address,$red_address,"; + push (@networks, $line); + + $line = "Green Address,$netsettings{'GREEN_ADDRESS'},255.255.255.255"; + push (@networks, $line); + $line = "Green Network,$netsettings{'GREEN_NETADDRESS'},$netsettings{'GREEN_NETMASK'}"; + push (@networks, $line); + + if ($netsettings{'ORANGE_DEV'}ne ''){ + $line = "Orange Address,$netsettings{'ORANGE_ADDRESS'},255.255.255.255"; + push (@networks, $line); + $line = "Orange Network,$netsettings{'ORANGE_NETADDRESS'},$netsettings{'ORANGE_NETMASK'}"; + push (@networks, $line); + } + + if ($netsettings{'BLUE_DEV'}ne ''){ + $line = "Blue Address,$netsettings{'BLUE_ADDRESS'},255.255.255.255"; + push (@networks, $line); + $line = "Blue Network,$netsettings{'BLUE_NETADDRESS'},$netsettings{'BLUE_NETMASK'}"; + push (@networks, $line); + } + open(FILE, "${General::swroot}/ethernet/aliases") or die 'Unable to open aliases file.'; + my @current = ; + close(FILE); + my $ctr = 0; + foreach my $lne (@current) + { + if ($lne ne ''){ + chomp($lne); + my @temp = split(/\,/,$lne); + if ($temp[2] eq '') { + $temp[2] = "Alias $ctr : $temp[0]"; + } + $line = "$temp[2],$temp[0],"; + push (@networks, $line); + $ctr++; + } + } +} + +# Validate Field Entries +sub validateparams +{ + if ($cgiparams{'NAME'} eq '') { + $errormessage = $Lang::tr{'nonetworkname'}; + return; + } + $cgiparams{'NAME'}=&Header::cleanhtml($cgiparams{'NAME'}); + unless(&General::validip($cgiparams{'IPADDRESS'})){$errormessage = $Lang::tr{'invalid ip'}; } + unless($errormessage){ + my @tmp = split(/\./,$cgiparams{'IPADDRESS'}); + if ($cgiparams{'NETMASK'} eq '' && $tmp[3] ne '255' && $tmp[3] ne '0'){ + $cgiparams{'NETMASK'} = "255.255.255.255"; + } + } + unless(&General::validmask($cgiparams{'NETMASK'})){$errormessage = $Lang::tr{'subnet is invalid'}; } + + open(FILE, $filename) or die 'Unable to open custom network file.'; + my @current = ; + close(FILE); + foreach my $line (@current) + { + chomp($line); + if ($line ne '') { + my @temp = split(/\,/,$line); + if ($cgiparams{'NAME'} eq $temp[1] && $cgiparams{'KEY'} ne $temp[0]) { + $errormessage=$Lang::tr{'duplicate name'}; + return; + } + $key=$temp[0]; + } + } + foreach $line (@networks) + { + my @temp = split(/\,/,$line); + if ($cgiparams{'NAME'} eq $temp[0]) { + $errormessage=$Lang::tr{'duplicate name'}; + return; + } + } +} diff --git a/html/cgi-bin/optionsfw.cgi b/html/cgi-bin/optionsfw.cgi new file mode 100644 index 0000000000..8782bdca76 --- /dev/null +++ b/html/cgi-bin/optionsfw.cgi @@ -0,0 +1,98 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# Copyright (C) 01-02-2002 Graham Smith +# +# $Id: optionsfw.cgi,v 1.1.2.10 2005/10/03 00:34:10 gespinasse Exp $ +# +# + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + + +my %checked =(); # Checkbox manipulations + +# File used +my $filename = "${General::swroot}/optionsfw/settings"; + +our %settings=(); +#Settings1 +$settings{'DISABLEPING'} = 'NO'; +$settings{'ACTION'} = ''; # add/edit/remove + +my $errormessage = ''; +my $warnmessage = ''; + +&Header::showhttpheaders(); + +#Get GUI values +&Header::getcgihash(\%settings); + +if ($settings{'ACTION'} eq $Lang::tr{'save'}) { + if ($settings{'DISABLEPING'} !~ /^(NO|ONLYRED|ALL)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ERROR; } + unless ($errormessage) { # Everything is ok, save settings + &General::writehash($filename, \%settings); # Save good settings + $settings{'ACTION'} = $Lang::tr{'save'}; # Recreate 'ACTION' + system('/usr/local/bin/setfilters'); + } + + ERROR: # Leave the faulty field untouched +} else { + &General::readhash($filename, \%settings); # Get saved settings and reset to good if needed +} +$checked{'DISABLEPING'}{'NO'} = ''; +$checked{'DISABLEPING'}{'ONLYRED'} = ''; +$checked{'DISABLEPING'}{'ALL'} = ''; +$checked{'DISABLEPING'}{$settings{'DISABLEPING'}} = "checked='checked'"; + +&Header::openpage($Lang::tr{'options fw'}, 1, ''); +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage "; + &Header::closebox(); +} + +&Header::openbox('100%', 'left', $Lang::tr{'options fw'}); +print "
    "; + +print < +
    + + + + + + + + + + + + + + +
    $Lang::tr{'name'}$Lang::tr{'ip address'}$Lang::tr{'netmask'}
    $temp[1]$temp[2]$temp[3] + + + +
    + + + +
    $temp[0]$temp[1]$temp[2]
    $Lang::tr{'ping disabled'}
    $Lang::tr{'no'} 
    $Lang::tr{'only red'}
    $Lang::tr{'all interfaces'}
    + +END +; +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/cgi-bin/portfw.cgi b/html/cgi-bin/portfw.cgi new file mode 100644 index 0000000000..bfa9e99e71 --- /dev/null +++ b/html/cgi-bin/portfw.cgi @@ -0,0 +1,1179 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# Copyright (c) 2002/04/13 Steve Bootes - Add source IP support +# +# $Id: portfw.cgi,v 1.5.2.18 2005/05/02 16:19:49 eoberlander Exp $ +# +# +# Darren Critchley February 2003 - I added the multiple external access rules for each port forward +# A couple of things to remember when reading the code +# There are two kinds of records in the config file, those with a number in the first field, and then 0, +# these are port forward rules, these records will have a 0 or 0.0.0.0 in position 9 (ORIG_IP) +# If there is a 0, it means that there are external access rules, otherwise the port is open to ALL. +# The second type of record is a number followed by a number which indicates that it is an external access +# rule. The first number indicates which Portfw rule it belongs to, and the second is just a unique key. +# +# Darren Critchley - March 5, 2003 - if you come along after me and work on this page, please comment your +# work. Put your name, and date and then your comment - it helps the person that comes along after you +# to figure out why and how things have changed, and it is considered good coding practice +# Thanks . . . +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::colouryellow} ); +undef (@dummy); + +my %cgiparams=(); +my %selected=(); +my %checked=(); +my $prtrange1=0; +my $prtrange2=0; +my $errormessage = ''; +my $filename = "${General::swroot}/portfw/config"; +my $aliasfile = "${General::swroot}/ethernet/aliases"; + +&Header::showhttpheaders(); + +$cgiparams{'ENABLED'} = 'off'; +$cgiparams{'KEY1'} = '0'; +$cgiparams{'KEY2'} = '0'; +$cgiparams{'PROTOCOL'} = ''; +$cgiparams{'SRC_PORT'} = ''; +$cgiparams{'DEST_IP'} = ''; +$cgiparams{'DEST_PORT'} = ''; +$cgiparams{'SRC_IP'} = ''; +$cgiparams{'ORIG_IP'} = ''; +$cgiparams{'REMARK'} = ''; +$cgiparams{'OVERRIDE'} = 'off'; +$cgiparams{'ACTION'} = ''; + +&Header::getcgihash(\%cgiparams); + +my $disable_all = "0"; +my $enable_all = "0"; + +if ($cgiparams{'ACTION'} eq $Lang::tr{'add'}) +{ + &valaddupdate(); + + # Darren Critchley - if there is an error, don't waste any more time processing + if ($errormessage) { goto ERROR; } + + open(FILE, $filename) or die 'Unable to open config file.'; + my @current = ; + close(FILE); + my $key1 = 0; # used for finding last sequence number used + foreach my $line (@current) + { + my @temp = split(/\,/,$line); + + chomp ($temp[8]); + if ($cgiparams{'KEY2'} eq "0"){ # if key2 is 0 then it is a portfw addition + if ( $cgiparams{'SRC_PORT'} eq $temp[3] && + $cgiparams{'PROTOCOL'} eq $temp[2] && + $cgiparams{'SRC_IP'} eq $temp[7]) + { + $errormessage = + "$Lang::tr{'source port in use'} $cgiparams{'SRC_PORT'}"; + } + # Check if key2 = 0, if it is then it is a port forward entry and we want the sequence number + if ( $temp[1] eq "0") { + $key1=$temp[0]; + } + # Darren Critchley - Duplicate or overlapping Port range check + if ($temp[1] eq "0" && + $cgiparams{'PROTOCOL'} eq $temp[2] && + $cgiparams{'SRC_IP'} eq $temp[7] && + $errormessage eq '') + { + &portchecks($temp[3], $temp[5]); + } + } else { + if ( $cgiparams{'KEY1'} eq $temp[0] && + $cgiparams{'ORIG_IP'} eq $temp[8]) + { + $errormessage = + "$Lang::tr{'source ip in use'} $cgiparams{'ORIG_IP'}"; + } + } + } + +ERROR: + unless ($errormessage) + { + # Darren Critchley - we only want to store ranges with Colons + $cgiparams{'SRC_PORT'} =~ tr/-/:/; + $cgiparams{'DEST_PORT'} =~ tr/-/:/; + + if ($cgiparams{'KEY1'} eq "0") { # 0 in KEY1 indicates it is a portfw add + $key1++; # Add one to last sequence number + open(FILE,">>$filename") or die 'Unable to open config file.'; + flock FILE, 2; + if ($cgiparams{'ORIG_IP'} eq '0.0.0.0/0') { + # if the default/all is taken, then write it to the rule + print FILE "$key1,0,$cgiparams{'PROTOCOL'},$cgiparams{'SRC_PORT'},$cgiparams{'DEST_IP'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},$cgiparams{'SRC_IP'},$cgiparams{'ORIG_IP'},$cgiparams{'REMARK'}\n"; + } else { # else create an extra record so it shows up + print FILE "$key1,0,$cgiparams{'PROTOCOL'},$cgiparams{'SRC_PORT'},$cgiparams{'DEST_IP'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},$cgiparams{'SRC_IP'},0,$cgiparams{'REMARK'}\n"; + print FILE "$key1,1,$cgiparams{'PROTOCOL'},0,$cgiparams{'DEST_IP'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},0,$cgiparams{'ORIG_IP'},$cgiparams{'REMARK'}\n"; + } + close(FILE); + undef %cgiparams; + &General::log($Lang::tr{'forwarding rule added'}); + system('/usr/local/bin/setportfw'); + } else { # else key1 eq 0 + my $insertpoint = ($cgiparams{'KEY2'} - 1); + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + foreach my $line (@current) { + chomp($line); + my @temp = split(/\,/,$line); + if ($cgiparams{'KEY1'} eq $temp[0] && $insertpoint eq $temp[1]) { + if ($temp[1] eq "0") { # this is the first xtaccess rule, therefore modify the portfw rule + $temp[8] = '0'; + } + print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7],$temp[8],$temp[9]\n"; + print FILE "$cgiparams{'KEY1'},$cgiparams{'KEY2'},$cgiparams{'PROTOCOL'},0,$cgiparams{'DEST_IP'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},0,$cgiparams{'ORIG_IP'},$cgiparams{'REMARK'}\n"; + } else { + print FILE "$line\n"; + } + } + close(FILE); + undef %cgiparams; + &General::log($Lang::tr{'external access rule added'}); + system('/usr/local/bin/setportfw'); + } # end if if KEY1 eq 0 + } # end unless($errormessage) +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'update'}) +{ + &valaddupdate(); + + # Darren Critchley - If there is an error don't waste any more processing time + if ($errormessage) { $cgiparams{'ACTION'} = $Lang::tr{'edit'}; goto UPD_ERROR; } + + open(FILE, $filename) or die 'Unable to open config file.'; + my @current = ; + close(FILE); + my $disabledpfw = '0'; + my $lastpfw = ''; + my $xtaccessdel = '0'; + + foreach my $line (@current) + { + my @temp = split(/\,/,$line); + if ( $temp[1] eq "0" ) { # keep track of the last portfw and if it is enabled + $disabledpfw = $temp[6]; + $lastpfw = $temp[0]; + } + chomp ($temp[8]); + if ( $cgiparams{'SRC_PORT'} eq $temp[3] && + $cgiparams{'PROTOCOL'} eq $temp[2] && + $cgiparams{'SRC_IP'} eq $temp[7]) + { + if ($cgiparams{'KEY1'} ne $temp[0] && $cgiparams{'KEY2'} eq "0") + { + $errormessage = + "$Lang::tr{'source port in use'} $cgiparams{'SRC_PORT'}"; + } + } + if ($cgiparams{'ORIG_IP'} eq $temp[8]) + { + if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} ne $temp[1]) + # If we have the same source ip within a portfw group, then we have a problem! + { + $errormessage = "$Lang::tr{'source ip in use'} $cgiparams{'ORIG_IP'}"; + $cgiparams{'ACTION'} = $Lang::tr{'edit'}; + } + } + + # Darren Critchley - Flag when a user disables an xtaccess + if ($cgiparams{'KEY1'} eq $temp[0] && + $cgiparams{'KEY2'} eq $temp[1] && + $cgiparams{'KEY2'} ne "0" && # if KEY2 is 0 then it is a portfw + $cgiparams{'ENABLED'} eq "off" && + $temp[6] eq "on") { # we have determined that someone has turned an xtaccess off + $xtaccessdel = "1"; + } + + # Darren Critchley - Portfw enabled, then enable xtaccess for all associated xtaccess records + if ($cgiparams{'ENABLED'} eq "on" && $cgiparams{'KEY2'} eq "0" && $cgiparams{'ENABLED'} ne $temp[6]) + { + $enable_all = "1"; + } else { + $enable_all = "0"; + } + # Darren Critchley - Portfw disabled, then disable xtaccess for all associated xtaccess records + if ($cgiparams{'ENABLED'} eq "off" && $cgiparams{'KEY2'} eq "0") + { + $disable_all = "1"; + } else { + $disable_all = "0"; + } + + # Darren Critchley - if we are enabling an xtaccess, only allow if the associated Portfw is enabled + if ($cgiparams{'KEY1'} eq $lastpfw && $cgiparams{'KEY2'} ne "0") { # identifies an xtaccess record in the group + if ($cgiparams{'ENABLED'} eq "on" && $cgiparams{'ENABLED'} ne $temp[6] ){ # a change has been made + if ($disabledpfw eq "off") + { + $errormessage = "$Lang::tr{'cant enable xtaccess'}"; + $cgiparams{'ACTION'} = $Lang::tr{'edit'}; + } + } + } + + # Darren Critchley - rule to stop someone from entering ALL into a external access rule, + # the portfw is the only place that ALL can be specified + if ($cgiparams{'KEY2'} ne "0" && $cgiparams{'ORIG_IP'} eq "0.0.0.0/0") { + $errormessage = "$Lang::tr{'xtaccess all error'}"; + $cgiparams{'ACTION'} = $Lang::tr{'edit'}; + } + + # Darren Critchley - Duplicate or overlapping Port range check + if ($temp[1] eq "0" && + $cgiparams{'KEY1'} ne $temp[0] && + $cgiparams{'PROTOCOL'} eq $temp[2] && + $cgiparams{'SRC_IP'} eq $temp[7] && + $errormessage eq '') + { + &portchecks($temp[3], $temp[5]); + } # end port testing + + } + + # Darren Critchley - if an xtaccess was disabled, now we need to check to see if it was the only xtaccess + if($xtaccessdel eq "1") { + my $xctr = 0; + foreach my $line (@current) + { + my @temp = split(/\,/,$line); + if($temp[0] eq $cgiparams{'KEY1'} && + $temp[6] eq "on") { # we only want to count the enabled xtaccess's + $xctr++; + } + } + if ($xctr == 2){ + $disable_all = "1"; + } + } + +UPD_ERROR: + unless ($errormessage) + { + # Darren Critchley - we only want to store ranges with Colons + $cgiparams{'SRC_PORT'} =~ tr/-/:/; + $cgiparams{'DEST_PORT'} =~ tr/-/:/; + + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + foreach my $line (@current) { + chomp($line); + my @temp = split(/\,/,$line); + if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1]) { + print FILE "$cgiparams{'KEY1'},$cgiparams{'KEY2'},$cgiparams{'PROTOCOL'},$cgiparams{'SRC_PORT'},$cgiparams{'DEST_IP'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},$cgiparams{'SRC_IP'},$cgiparams{'ORIG_IP'},$cgiparams{'REMARK'}\n"; + } else { + # Darren Critchley - If it is a port forward record, then chances are good that a change was made to + # Destination Ip or Port, and we need to update all the associated external access records + if ($cgiparams{'KEY2'} eq "0" && $cgiparams{'KEY1'} eq $temp[0]) { + $temp[4] = $cgiparams{'DEST_IP'}; + $temp[5] = $cgiparams{'DEST_PORT'}; + $temp[2] = $cgiparams{'PROTOCOL'}; + } + + # Darren Critchley - If a Portfw has been disabled, then set all associated xtaccess as disabled + if ( $disable_all eq "1" && $cgiparams{'KEY1'} eq $temp[0] ) { + $temp[6] = 'off'; + } + if ( $enable_all eq "1" && $cgiparams{'KEY1'} eq $temp[0] ) { + $temp[6] = 'on'; + } + # Darren Critchley - Deal with the override to allow ALL + if ( $cgiparams{'OVERRIDE'} eq "on" && $temp[1] ne "0" && $cgiparams{'KEY1'} eq $temp[0] ) { + $temp[6] = 'off'; + } + print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7],$temp[8],$temp[9]\n"; + } + } + close(FILE); + undef %cgiparams; + &General::log($Lang::tr{'forwarding rule updated'}); + system('/usr/local/bin/setportfw'); + } + if ($errormessage) { + $cgiparams{'ACTION'} = $Lang::tr{'edit'}; + } +} + +# Darren Critchley - Allows rules to be enabled and disabled +if ($cgiparams{'ACTION'} eq $Lang::tr{'toggle enable disable'}) +{ + open(FILE, $filename) or die 'Unable to open config file.'; + my @current = ; + close(FILE); + my $disabledpfw = '0'; + my $lastpfw = ''; + my $xtaccessdel = '0'; + + foreach my $line (@current) + { + my @temp = split(/\,/,$line); + if ( $temp[1] eq "0" ) { # keep track of the last portfw and if it is enabled + $disabledpfw = $temp[6]; + $lastpfw = $temp[0]; + } + # Darren Critchley - Flag when a user disables an xtaccess + if ($cgiparams{'KEY1'} eq $temp[0] && + $cgiparams{'KEY2'} eq $temp[1] && + $cgiparams{'KEY2'} ne "0" && # if KEY2 is 0 then it is a portfw + $cgiparams{'ENABLED'} eq "off" && + $temp[6] eq "on") { # we have determined that someone has turned an xtaccess off + $xtaccessdel = "1"; + } + + # Darren Critchley - Portfw enabled, then enable xtaccess for all associated xtaccess records + if ($cgiparams{'ENABLED'} eq "on" && $cgiparams{'KEY2'} eq "0" && $cgiparams{'ENABLED'} ne $temp[6]) + { + $enable_all = "1"; + } else { + $enable_all = "0"; + } + # Darren Critchley - Portfw disabled, then disable xtaccess for all associated xtaccess records + if ($cgiparams{'ENABLED'} eq "off" && $cgiparams{'KEY2'} eq "0") + { + $disable_all = "1"; + } else { + $disable_all = "0"; + } + + # Darren Critchley - if we are enabling an xtaccess, only allow if the associated Portfw is enabled + if ($cgiparams{'KEY1'} eq $lastpfw && $cgiparams{'KEY2'} ne "0") { # identifies an xtaccess record in the group + if ($cgiparams{'ENABLED'} eq "on" && $cgiparams{'ENABLED'} ne $temp[6] ){ # a change has been made + if ($disabledpfw eq "off") + { + $errormessage = "$Lang::tr{'cant enable xtaccess'}"; + goto TOGGLEEXIT; + } + } + } + } + + # Darren Critchley - if an xtaccess was disabled, now we need to check to see if it was the only xtaccess + if($xtaccessdel eq "1") { + my $xctr = 0; + foreach my $line (@current) + { + my @temp = split(/\,/,$line); + if($temp[0] eq $cgiparams{'KEY1'} && + $temp[6] eq "on") { # we only want to count the enabled xtaccess's + $xctr++; + } + } + if ($xctr == 2){ + $disable_all = "1"; + } + } + + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + foreach my $line (@current) { + chomp($line); + my @temp = split(/\,/,$line); + if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1]) { + print FILE "$cgiparams{'KEY1'},$cgiparams{'KEY2'},$temp[2],$temp[3],$temp[4],$temp[5],$cgiparams{'ENABLED'},$temp[7],$temp[8],$temp[9]\n"; + } else { + # Darren Critchley - If a Portfw has been disabled, then set all associated xtaccess as disabled + if ( $disable_all eq "1" && $cgiparams{'KEY1'} eq $temp[0] ) { + $temp[6] = 'off'; + } + if ( $enable_all eq "1" && $cgiparams{'KEY1'} eq $temp[0] ) { + $temp[6] = 'on'; + } + print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7],$temp[8],$temp[9]\n"; + } + } + close(FILE); + &General::log($Lang::tr{'forwarding rule updated'}); + system('/usr/local/bin/setportfw'); +TOGGLEEXIT: + undef %cgiparams; +} + + +# Darren Critchley - broke out Edit routine from the delete routine - Edit routine now just puts values in fields +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) +{ + open(FILE, "$filename") or die 'Unable to open config file.'; + my @current = ; + close(FILE); + + unless ($errormessage) + { + foreach my $line (@current) + { + chomp($line); + my @temp = split(/\,/,$line); + if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1] ) { + $cgiparams{'PROTOCOL'} = $temp[2]; + $cgiparams{'SRC_PORT'} = $temp[3]; + $cgiparams{'DEST_IP'} = $temp[4]; + $cgiparams{'DEST_PORT'} = $temp[5]; + $cgiparams{'ENABLED'} = $temp[6]; + $cgiparams{'SRC_IP'} = $temp[7]; + $cgiparams{'ORIG_IP'} = $temp[8]; + $cgiparams{'REMARK'} = $temp[9]; + } + + } + } +} + +# Darren Critchley - broke out Remove routine as the logic is getting too complex to be combined with the Edit +if ($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) +{ + open(FILE, "$filename") or die 'Unable to open config file.'; + my @current = ; + close(FILE); + + # If the record being deleted is an xtaccess record, and it is the only one for a portfw record + # then we need to adjust the portfw record to be open to ALL ip addressess or an error will occur + # in setportfw.c + my $fixportfw = '0'; + if ($cgiparams{'KEY2'} ne "0") { + my $counter = 0; + foreach my $line (@current) + { + chomp($line); + my @temp = split(/\,/,$line); + if ($temp[0] eq $cgiparams{'KEY1'}) { + $counter++; + } + } + if ($counter eq 2) { + $fixportfw = '1'; + } + } + + unless ($errormessage) + { + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + my $linedeleted = 0; + foreach my $line (@current) + { + chomp($line); + my @temp = split(/\,/,$line); + + if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1] || + $cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq "0" ) + { + $linedeleted = 1; + } else { + if ($temp[0] eq $cgiparams{'KEY1'} && $temp[1] eq "0" && $fixportfw eq "1") { + $temp[8] = '0.0.0.0/0'; + } + print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6],$temp[7],$temp[8],$temp[9]\n"; +# print FILE "$line\n"; + } + } + close(FILE); + if ($linedeleted == 1) { + &General::log($Lang::tr{'forwarding rule removed'}); + undef %cgiparams; + } + system('/usr/local/bin/setportfw'); + } +} + +# Darren Critchley - Added routine to allow external access rules to be added +if ($cgiparams{'ACTION'} eq $Lang::tr{'add xtaccess'}) +{ + open(FILE, $filename) or die 'Unable to open config file.'; + my @current = ; + close(FILE); + my $key = 0; # used for finding last sequence number used + foreach my $line (@current) + { + my @temp = split(/\,/,$line); + if ($temp[0] eq $cgiparams{'KEY1'}) { + $key = $temp[1] + } + if ($cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1] ) { + $cgiparams{'PROTOCOL'} = $temp[2]; + $cgiparams{'SRC_PORT'} = $temp[3]; + $cgiparams{'DEST_IP'} = $temp[4]; + $cgiparams{'DEST_PORT'} = $temp[5]; + $cgiparams{'ENABLED'} = $temp[6]; + $cgiparams{'SRC_IP'} = $temp[7]; + $cgiparams{'ORIG_IP'} = ''; + $cgiparams{'REMARK'} = $temp[9]; + } + } + $key++; + $cgiparams{'KEY2'} = $key; + # Until the ADD button is hit, there needs to be no change to portfw rules +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'reset'}) +{ + undef %cgiparams; +} + +if ($cgiparams{'ACTION'} eq '') +{ + $cgiparams{'PROTOCOL'} = 'tcp'; + $cgiparams{'ENABLED'} = 'on'; + $cgiparams{'SRC_IP'} = '0.0.0.0'; +} + +$selected{'PROTOCOL'}{'udp'} = ''; +$selected{'PROTOCOL'}{'tcp'} = ''; +$selected{'PROTOCOL'}{'gre'} = ''; +$selected{'PROTOCOL'}{$cgiparams{'PROTOCOL'}} = "selected='selected'"; + +$selected{'SRC_IP'}{$cgiparams{'SRC_IP'}} = "selected='selected'"; + +$checked{'ENABLED'}{'off'} = ''; +$checked{'ENABLED'}{'on'} = ''; +$checked{'ENABLED'}{$cgiparams{'ENABLED'}} = "checked='checked'"; + +&Header::openpage($Lang::tr{'port forwarding configuration'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage\n"; + print " \n"; + &Header::closebox(); +} + +print "
    \n"; + +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}){ + &Header::openbox('100%', 'left', $Lang::tr{'edit a rule'}); +} else { + &Header::openbox('100%', 'left', $Lang::tr{'add a new rule'}); +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'KEY2'} ne "0" || $cgiparams{'ACTION'} eq $Lang::tr{'add xtaccess'}){ +# if it is not a port forward record, don't validate as the fields are disabled + my $PROT = "\U$cgiparams{'PROTOCOL'}\E"; + # Darren Critchley - Format the source and destination ports + my $dstprt = $cgiparams{'DEST_PORT'}; + $dstprt =~ s/-/ - /; + $dstprt =~ s/:/ - /; + +print < + + $Lang::tr{'protocol'}: $PROT +   + $Lang::tr{'destination ip'}:  + $cgiparams{'DEST_IP'} +   + $Lang::tr{'destination port'}:  + $dstprt + + + + + + + + +END +; +} else { +print < + + $Lang::tr{'protocol'}:  + + + + $Lang::tr{'alias ip'}: + + + + +   +   + $Lang::tr{'destination ip'}: + + $Lang::tr{'destination port'}: + + + +END +; +} + +print < + + $Lang::tr{'remark title'} *  + +END +; +unless ($cgiparams{'ACTION'} eq $Lang::tr{'add xtaccess'} && $cgiparams{'ENABLED'} eq "off") { + print " "; + print "$Lang::tr{'enabled'} \n"; +} +print < + +END +; + +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'KEY2'} eq "0" && ($cgiparams{'ORIG_IP'} eq "0" || $cgiparams{'ORIG_IP'} eq "0.0.0.0/0")){ +# if it is a port forward rule with a 0 in the orig_port field, this means there are xtaccess records, and we +# don't want to allow a person to change the orig_ip field as it will mess other logic up + print "\n"; +} else { +print < + + $Lang::tr{'source network'} *  + + + +END +; +} + +print < +
    + + * $Lang::tr{'this field may be blank'} +END +; + + +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}){ + if($cgiparams{'KEY2'} eq "0"){ + print "$Lang::tr{'open to all'}: \n"; + } else { + print " \n"; + } + print ""; + print ""; + print ""; + print ""; + # on an edit and an xtaccess add, for some reason the "Reset" button stops working, so I make it a submit button +} else { + print " \n"; + print ""; + if ($cgiparams{'ACTION'} eq $Lang::tr{'add xtaccess'}) { + print ""; + print ""; + print ""; + } elsif ($errormessage ne '') { + print ""; + } else { + print ""; + } +} +print < + + $Lang::tr{ + + +END +; +&Header::closebox(); + +print "\n"; + +&Header::openbox('100%', 'left', $Lang::tr{'current rules'}); +print < + +$Lang::tr{'proto'} +$Lang::tr{'source'} +  +$Lang::tr{'destination'} +$Lang::tr{'remark'} +$Lang::tr{'action'} + +END +; + +my $id = 0; +my $xtaccesscolor = '#F6F4F4'; +open(RULES, "$filename") or die 'Unable to open config file.'; +while () +{ + my $protocol = ''; + my $gif = ''; + my $gdesc = ''; + my $toggle = ''; + chomp($_); + my @temp = split(/\,/,$_); + $temp[9] ='' unless defined $temp[9];# Glles ESpinasse : suppress warning on page init + if ($temp[2] eq 'udp') { + $protocol = 'UDP'; } + elsif ($temp[2] eq 'gre') { + $protocol = 'GRE' } + else { + $protocol = 'TCP' } + # Change bgcolor when a new portfw rule is added + if ($temp[1] eq "0"){ + $id++; + } + # Darren Critchley highlight the row we are editing + if ( $cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'KEY1'} eq $temp[0] && $cgiparams{'KEY2'} eq $temp[1] ) { + print "\n"; + } else { + if ($id % 2) { + print "\n"; + } + else { + print "\n"; + } + } + + if ($temp[6] eq 'on') { $gif = 'on.gif'; $toggle='off'; $gdesc=$Lang::tr{'click to disable'};} + else { $gif = 'off.gif'; $toggle='on'; $gdesc=$Lang::tr{'click to enable'}; } + + # Darren Critchley - this code no longer works - should we remove? + # catch for 'old-style' rules file - assume default ip if + # none exists + if (!&General::validip($temp[7]) || $temp[7] eq '0.0.0.0') { + $temp[7] = 'DEFAULT IP'; } + if ($temp[1] eq '0') { # Port forwarding entry + + # Darren Critchley - Format the source and destintation ports + my $srcprt = $temp[3]; + $srcprt =~ s/-/ - /; + $srcprt =~ s/:/ - /; + my $dstprt = $temp[5]; + $dstprt =~ s/-/ - /; + $dstprt =~ s/:/ - /; + + # Darren Critchley - Get Port Service Name if we can - code borrowed from firewalllog.dat + $_=$temp[3]; + if (/^\d+$/) { + my $servi = uc(getservbyport($temp[3], lc($temp[2]))); + if ($servi ne '' && $temp[3] < 1024) { + $srcprt = "$srcprt($servi)"; } + } + $_=$temp[5]; + if (/^\d+$/) { + my $servi = uc(getservbyport($temp[5], lc($temp[2]))); + if ($servi ne '' && $temp[5] < 1024) { + $dstprt = "$dstprt($servi)"; } + } + + # Darren Critchley - If the line is too long, wrap the port numbers + my $srcaddr = "$temp[7] : $srcprt"; + if (length($srcaddr) > 22) { + $srcaddr = "$temp[7] :
    $srcprt"; + } + my $dstaddr = "$temp[4] : $dstprt"; + if (length($dstaddr) > 26) { + $dstaddr = "$temp[4] :
    $dstprt"; + } +print <$protocol +$srcaddr +=> +$dstaddr + $temp[9] + +
    + + + + + +
    + + + +
    + + + + +
    + + + +
    + + + + +
    + + + +
    + + + + +
    + + + +END + ; + } else { # external access entry +print <  + + $Lang::tr{'access allowed'} $temp[8]     ($temp[9]) + + +
    + + + + + +
    + + +  + + +
    + + + + +
    + + + +
    + + + + +
    + + + +END + ; + } +} + +close(RULES); + +print ""; + +# If the fixed lease file contains entries, print Key to action icons +if ( ! -z "$filename") { +print < + +  $Lang::tr{'legend'}:  + $Lang::tr{ + $Lang::tr{'click to disable'} +    + $Lang::tr{ + $Lang::tr{'click to enable'} +    + $Lang::tr{ + $Lang::tr{'add xtaccess'} +    + $Lang::tr{ + $Lang::tr{'edit'} +    + $Lang::tr{ + $Lang::tr{'remove'} + + +END +; +} + +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); + +# Validate Field Entries +sub validateparams +{ + # Darren Critchley - Get rid of dashes in port ranges + $cgiparams{'DEST_PORT'}=~ tr/-/:/; + $cgiparams{'SRC_PORT'}=~ tr/-/:/; + + # Darren Critchley - code to substitue wildcards + if ($cgiparams{'SRC_PORT'} eq "*") { + $cgiparams{'SRC_PORT'} = "1:65535"; + } + if ($cgiparams{'SRC_PORT'} =~ /^(\D)\:(\d+)$/) { + $cgiparams{'SRC_PORT'} = "1:$2"; + } + if ($cgiparams{'SRC_PORT'} =~ /^(\d+)\:(\D)$/) { + $cgiparams{'SRC_PORT'} = "$1:65535"; + } + if ($cgiparams{'DEST_PORT'} eq "*") { + $cgiparams{'DEST_PORT'} = "1:65535"; + } + if ($cgiparams{'DEST_PORT'} =~ /^(\D)\:(\d+)$/) { + $cgiparams{'DEST_PORT'} = "1:$2"; + } + if ($cgiparams{'DEST_PORT'} =~ /^(\d+)\:(\D)$/) { + $cgiparams{'DEST_PORT'} = "$1:65535"; + } + + # Darren Critchley - Add code for GRE protocol - we want to ignore ports, but we need a place holder + if ($cgiparams{'PROTOCOL'} eq 'gre') { + $cgiparams{'SRC_PORT'} = "GRE"; + $cgiparams{'DEST_PORT'} = "GRE"; + } + + unless($cgiparams{'PROTOCOL'} =~ /^(tcp|udp|gre)$/) { $errormessage = $Lang::tr{'invalid input'}; } + # Darren Critchley - Changed how the error routine works a bit - for the validportrange check, we need to + # pass in src or dest to determine which side we are working with. + # the routine returns the complete error or '' + if ($cgiparams{'PROTOCOL'} ne 'gre') { + $errormessage = &General::validportrange($cgiparams{'SRC_PORT'}, 'src'); + } + if( ($cgiparams{'ORIG_IP'} ne "0" && $cgiparams{'KEY2'} ne "0") || $cgiparams{'ACTION'} eq $Lang::tr{'add'}) { + # if it is a port forward record with 0 in orig_ip then ignore checking this field + unless(&General::validipormask($cgiparams{'ORIG_IP'})) + { + if ($cgiparams{'ORIG_IP'} ne '') { + $errormessage = $Lang::tr{'source ip bad'}; } + else { + $cgiparams{'ORIG_IP'} = '0.0.0.0/0'; } + } + } + # Darren Critchey - New rule that sets destination same as source if dest_port is blank. + if ($cgiparams{'DEST_PORT'} eq ''){ + $cgiparams{'DEST_PORT'} = $cgiparams{'SRC_PORT'}; + } + # Darren Critchey - Just in case error message is already set, this routine would wipe it out if + # we don't do a test here + if ($cgiparams{'PROTOCOL'} ne 'gre') { + unless($errormessage) {$errormessage = &General::validportrange($cgiparams{'DEST_PORT'}, 'dest');} + } + unless(&General::validip($cgiparams{'DEST_IP'})) { $errormessage = $Lang::tr{'destination ip bad'}; } + return; +} + +# Darren Critchley - we want to make sure that a port range does not overlap another port range +sub checkportoverlap +{ + my $portrange1 = $_[0]; # New port range + my $portrange2 = $_[1]; # existing port range + my @tempr1 = split(/\:/,$portrange1); + my @tempr2 = split(/\:/,$portrange2); + + unless (&checkportinc($tempr1[0], $portrange2)){ return 0;} + unless (&checkportinc($tempr1[1], $portrange2)){ return 0;} + + unless (&checkportinc($tempr2[0], $portrange1)){ return 0;} + unless (&checkportinc($tempr2[1], $portrange1)){ return 0;} + + return 1; # Everything checks out! +} + +# Darren Critchley - we want to make sure that a port entry is not within an already existing range +sub checkportinc +{ + my $port1 = $_[0]; # Port + my $portrange2 = $_[1]; # Port range + my @tempr1 = split(/\:/,$portrange2); + + if ($port1 < $tempr1[0] || $port1 > $tempr1[1]) { + return 1; + } else { + return 0; + } +} + +# Darren Critchley - certain ports are reserved for Ipcop +# TCP 67,68,81,222,445 +# UDP 67,68 +# Params passed in -> port, rangeyn, protocol +sub disallowreserved +{ + # port 67 and 68 same for tcp and udp, don't bother putting in an array + my $msg = ""; + my @tcp_reserved = (81,222,445); + my $prt = $_[0]; # the port or range + my $ryn = $_[1]; # tells us whether or not it is a port range + my $prot = $_[2]; # protocol + my $srcdst = $_[3]; # source or destination + + if ($ryn) { # disect port range + if ($srcdst eq "src") { + $msg = "$Lang::tr{'rsvd src port overlap'}"; + } else { + $msg = "$Lang::tr{'rsvd dst port overlap'}"; + } + my @tmprng = split(/\:/,$prt); + unless (67 < $tmprng[0] || 67 > $tmprng[1]) { $errormessage="$msg 67"; return; } + unless (68 < $tmprng[0] || 68 > $tmprng[1]) { $errormessage="$msg 68"; return; } + if ($prot eq "tcp") { + foreach my $prange (@tcp_reserved) { + unless ($prange < $tmprng[0] || $prange > $tmprng[1]) { $errormessage="$msg $prange"; return; } + } + } + } else { + if ($srcdst eq "src") { + $msg = "$Lang::tr{'reserved src port'}"; + } else { + $msg = "$Lang::tr{'reserved dst port'}"; + } + if ($prt == 67) { $errormessage="$msg 67"; return; } + if ($prt == 68) { $errormessage="$msg 68"; return; } + if ($prot eq "tcp") { + foreach my $prange (@tcp_reserved) { + if ($prange == $prt) { $errormessage="$msg $prange"; return; } + } + } + } + return; +} + +# Darren Critchley - Attempt to combine Add/Update validation as they are almost the same +sub valaddupdate +{ + if ($cgiparams{'KEY2'} eq "0"){ # if it is a port forward rule, then validate properly + &validateparams(); + } else { # it is an xtaccess rule, just check for a valid ip + unless(&General::validipormask($cgiparams{'ORIG_IP'})) + { + if ($cgiparams{'ORIG_IP'} ne '') { + $errormessage = $Lang::tr{'source ip bad'}; } + else { # this rule stops someone from adding an ALL xtaccess record + $errormessage = $Lang::tr{'xtaccess all error'}; + $cgiparams{'ACTION'} = $Lang::tr{'add xtaccess'}; + } + } + # Darren Critchley - check for 0.0.0.0/0 - not allowed for xtaccess + if ($cgiparams{'ORIG_IP'} eq "0.0.0.0/0" || $cgiparams{'ORIG_IP'} eq "0.0.0.0") { + $errormessage = $Lang::tr{'xtaccess all error'}; + $cgiparams{'ACTION'} = $Lang::tr{'add xtaccess'}; + } + } + # Darren Critchley - Remove commas from remarks + $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'}); + + # Darren Critchley - Check to see if we are working with port ranges + our ($prtrange1, $prtrange2); + $_ = $cgiparams{'SRC_PORT'}; + if ($cgiparams{'KEY2'} eq "0" && m/:/){ + $prtrange1 = 1; + } + if ($cgiparams{'SRC_IP'} eq '0.0.0.0') { # Dave Roberts - only check if using DEFAULT IP + if ($prtrange1 == 1){ # check for source ports reserved for Ipcop + &disallowreserved($cgiparams{'SRC_PORT'},1,$cgiparams{'PROTOCOL'},"src"); + if ($errormessage) { goto EXITSUB; } + } else { # check for source port reserved for Ipcop + &disallowreserved($cgiparams{'SRC_PORT'},0,$cgiparams{'PROTOCOL'},"src"); + if ($errormessage) { goto EXITSUB; } + } + } + + $_ = $cgiparams{'DEST_PORT'}; + if ($cgiparams{'KEY2'} eq "0" && m/:/){ + $prtrange2 = 1; + } + if ($cgiparams{'SRC_IP'} eq '0.0.0.0') { # Dave Roberts - only check if using DEFAULT IP + if ($prtrange2 == 1){ # check for destination ports reserved for IPCop + &disallowreserved($cgiparams{'DEST_PORT'},1,$cgiparams{'PROTOCOL'},"dst"); + if ($errormessage) { goto EXITSUB; } + } else { # check for destination port reserved for IPCop + &disallowreserved($cgiparams{'DEST_PORT'},0,$cgiparams{'PROTOCOL'},"dst"); + if ($errormessage) { goto EXITSUB; } + } + } + + +EXITSUB: + return; +} + +# Darren Critchley - Duplicate or overlapping Port range check +sub portchecks +{ + $_ = $_[0]; + our ($prtrange1, $prtrange2); + if (m/:/ && $prtrange1 == 1) { # comparing two port ranges + unless (&checkportoverlap($cgiparams{'SRC_PORT'},$_[0])) { + $errormessage = "$Lang::tr{'source port overlaps'} $_[0]"; + } + } + if (m/:/ && $prtrange1 == 0 && $errormessage eq '') { # compare one port to a range + unless (&checkportinc($cgiparams{'SRC_PORT'}, $_[0])) { + $errormessage = "$Lang::tr{'srcprt within existing'} $_[0]"; + } + } + if (! m/:/ && $prtrange1 == 1 && $errormessage eq '') { # compare one port to a range + unless (&checkportinc($_[0], $cgiparams{'SRC_PORT'})) { + $errormessage = "$Lang::tr{'srcprt range overlaps'} $_[0]"; + } + } + + if ($errormessage eq ''){ + $_ = $_[1]; + if (m/:/ && $prtrange2 == 1) { # if true then there is a port range + unless (&checkportoverlap($cgiparams{'DEST_PORT'},$_[1])) { + $errormessage = "$Lang::tr{'destination port overlaps'} $_[1]"; + } + } + if (m/:/ && $prtrange2 == 0 && $errormessage eq '') { # compare one port to a range + unless (&checkportinc($cgiparams{'DEST_PORT'}, $_[1])) { + $errormessage = "$Lang::tr{'dstprt within existing'} $_[1]"; + } + } + if (! m/:/ && $prtrange2 == 1 && $errormessage eq '') { # compare one port to a range + unless (&checkportinc($_[1], $cgiparams{'DEST_PORT'})) { + $errormessage = "$Lang::tr{'dstprt range overlaps'} $_[1]"; + } + } + } + return; +} diff --git a/html/cgi-bin/pppsetup.cgi b/html/cgi-bin/pppsetup.cgi new file mode 100644 index 0000000000..62c3e5dee8 --- /dev/null +++ b/html/cgi-bin/pppsetup.cgi @@ -0,0 +1,1205 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# Copyright (C) 03-Apr-2002 Guy Ellis +# - ISDN DOV support +# - ibod now an option +# - PCI ADSL support added +# +# $Id: pppsetup.cgi,v 1.17.2.49 2005/12/01 16:20:35 franck78 Exp $ + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +our %pppsettings=(); +my %temppppsettings=(); +our %modemsettings=(); +our %isdnsettings=(); +our %netsettings=(); +my %selected=(); +my %checked=(); +my @profilenames=(); +my $errormessage = ''; +my $maxprofiles = 5; +my $kernel=`/bin/uname -r | /usr/bin/tr -d '\012'`; + +&Header::showhttpheaders(); + +$pppsettings{'ACTION'} = ''; +&initprofile(); +&Header::getcgihash(\%pppsettings); + +if ($pppsettings{'ACTION'} ne '' && + (-e '/var/run/ppp-ipcop.pid' || -e "${General::swroot}/red/active")) +{ + $errormessage = $Lang::tr{'unable to alter profiles while red is active'}; + # read in the current vars + %pppsettings = (); + $pppsettings{'VALID'} = ''; + &General::readhash("${General::swroot}/ppp/settings", \%pppsettings); +} +elsif ($pppsettings{'ACTION'} eq $Lang::tr{'refresh'}) +{ + unless ($pppsettings{'TYPE'} =~ /^(modem|serial|isdn|pppoe|pptp|alcatelusb|alcatelusbk|amedynusbadsl|conexantusbadsl|conexantpciadsl|3cp4218usbadsl|pulsardsl|eciadsl|fritzdsl|bewanadsl|eagleusbadsl)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ERROR; } + my $type = $pppsettings{'TYPE'}; + &General::readhash("${General::swroot}/ppp/settings", \%pppsettings); + $pppsettings{'TYPE'} = $type; +} +elsif ($pppsettings{'ACTION'} eq $Lang::tr{'save'}) +{ + if ($pppsettings{'TYPE'} =~ /^(modem|serial|isdn)$/ && $pppsettings{'COMPORT'} !~ /^(ttyS0|ttyS1|ttyS2|ttyS3|ttyS4|usb\/ttyACM0|usb\/ttyACM1|usb\/ttyACM2|usb\/ttyACM3|isdn1|isdn2)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ERROR; } + if ($pppsettings{'TYPE'} =~ /^(modem|serial)$/ && $pppsettings{'DTERATE'} !~ /^(9600|19200|38400|57600|115200|230400)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ERROR; } + if ($pppsettings{'TYPE'} eq 'modem' && $pppsettings{'DIALMODE'} !~ /^(T|P)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ERROR; } + if ($pppsettings{'AUTH'} !~ /^(pap-or-chap|pap|chap|standard-login-script|demon-login-script|other-login-script)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ERROR; + } + + if ($pppsettings{'PROFILENAME'} eq '') { + $errormessage = $Lang::tr{'profile name not given'}; + $pppsettings{'PROFILENAME'} = ''; + goto ERROR; } + if ($pppsettings{'TYPE'} =~ /^(modem|isdn)$/) { + if ($pppsettings{'TELEPHONE'} eq '') { + $errormessage = $Lang::tr{'telephone not set'}; + goto ERROR; } + if (!($pppsettings{'TELEPHONE'} =~ /^[\d\*\#\,]+$/)) { + $errormessage = $Lang::tr{'bad characters in the telephone number field'}; + goto ERROR; } + } + unless (($pppsettings{'PROTOCOL'} eq 'RFC1483' && $pppsettings{'METHOD'} =~ /^(STATIC|DHCP)$/)) { + if ($pppsettings{'USERNAME'} eq '') { + $errormessage = $Lang::tr{'username not set'}; + goto ERROR; } + if ($pppsettings{'PASSWORD'} eq '') { + $errormessage = $Lang::tr{'password not set'}; + goto ERROR; } + } + + if ($pppsettings{'TIMEOUT'} eq '') { + $errormessage = $Lang::tr{'idle timeout not set'}; + goto ERROR; } + if (!($pppsettings{'TIMEOUT'} =~ /^\d+$/)) { + $errormessage = $Lang::tr{'only digits allowed in the idle timeout'}; + goto ERROR; } + + if ($pppsettings{'LOGINSCRIPT'} =~ /[.\/ ]/ ) { + $errormessage = $Lang::tr{'bad characters in script field'}; + goto ERROR; } + + if ($pppsettings{'DNS1'}) + { + if (!(&General::validip($pppsettings{'DNS1'}))) { + $errormessage = $Lang::tr{'invalid primary dns'}; + goto ERROR; } + } + if ($pppsettings{'DNS2'}) + { + if (!(&General::validip($pppsettings{'DNS2'}))) { + $errormessage = $Lang::tr{'invalid secondary dns'}; + goto ERROR; } + } + + if ($pppsettings{'MAXRETRIES'} eq '') { + $errormessage = $Lang::tr{'max retries not set'}; + goto ERROR; } + if (!($pppsettings{'MAXRETRIES'} =~ /^\d+$/)) { + $errormessage = $Lang::tr{'only digits allowed in max retries field'}; + goto ERROR; } + + if (!($pppsettings{'HOLDOFF'} =~ /^\d+$/)) { + $errormessage = $Lang::tr{'only digits allowed in holdoff field'}; + goto ERROR; } + + my $drivererror = 0; + if ($pppsettings{'TYPE'} =~ /^(alcatelusb|alcatelusbk)$/) { + my $modem = ''; + my $speedtouch = &Header::speedtouchversion; + if ($speedtouch >=0 && $speedtouch <=4) { + if ($speedtouch ==4) { $modem='v4_b'; } else { $modem='v0123'; } + $pppsettings{'MODEM'} = $modem; + } else { + $modem='v0123'; + $errormessage ="$Lang::tr{'unknown'} Rev $speedtouch"; + goto ERROR; + } + if (! -e "${General::swroot}/alcatelusb/firmware.$modem.bin") { + $errormessage = $Lang::tr{'no alcatelusb firmware'}; + $drivererror = 1; + goto ERROR; + } + } + + if($pppsettings{'TYPE'} eq 'eciadsl' && (!(-e "${General::swroot}/eciadsl/synch.bin"))) { + $errormessage = $Lang::tr{'no eciadsl synch.bin file'}; + $drivererror = 1; + goto ERROR; } + + if($pppsettings{'TYPE'} eq 'fritzdsl' && (!(-e "/lib/modules/$kernel/misc/fcdslusb.o.gz"))) { + $errormessage = $Lang::tr{'no fritzdsl driver'}; + $drivererror = 1; + goto ERROR; } + + if( $pppsettings{'USEIBOD'} eq 'on' && $pppsettings{'COMPORT'} eq 'isdn1') { + $errormessage = $Lang::tr{'ibod for dual isdn only'}; + goto ERROR; } + + if ($pppsettings{'TYPE'} eq 'pptp') { + $errormessage = ''; + if ($pppsettings{'METHOD'} eq 'STATIC') { + if (! &General::validip($pppsettings{'ROUTERIP'})) { + $errormessage = $Lang::tr{'router ip'}.' '.$Lang::tr{'invalid ip'}; + } + } else { + if (($pppsettings{'DHCP_HOSTNAME'} ne '') && (! &General::validfqdn($pppsettings{'DHCP_HOSTNAME'})) ) { + $errormessage = $errormessage.' '.$Lang::tr{'hostname'}.' '.$Lang::tr{'invalid hostname'}; + } + } + if ($errormessage ne '') {goto ERROR; } + } + + if ($pppsettings{'TYPE'} =~ /^(alcatelusb|alcatelusbk|amedynusbadsl|conexantusbadsl|conexantpciadsl|3cp4218usbadsl|pulsardsl|eciadsl|fritzdsl|bewanadsl|eagleusbadsl)$/) { + if ( ($pppsettings{'VPI'} eq '') || ($pppsettings{'VCI'} eq '') ) { + $errormessage = $Lang::tr{'invalid vpi vpci'}; + goto ERROR; } + if ( (!($pppsettings{'VPI'} =~ /^\d+$/)) || (!($pppsettings{'VCI'} =~ /^\d+$/)) ) { + $errormessage = $Lang::tr{'invalid vpi vpci'}; + goto ERROR; } + if (($pppsettings{'VPI'} eq '0') && ($pppsettings{'VCI'} eq '0')) { + $errormessage = $Lang::tr{'invalid vpi vpci'}; + goto ERROR; } + if ( $pppsettings{'PROTOCOL'} eq '' ) { + $errormessage = $Lang::tr{'invalid input'}; + goto ERROR; } + } + + if ( ($pppsettings{'PROTOCOL'} eq 'RFC1483') && ($pppsettings{'METHOD'} eq '') && \ + ($pppsettings{'TYPE'} !~ /^(alcatelusb|fritzdsl)$/)) { + $errormessage = $Lang::tr{'invalid input'}; + goto ERROR; } + + if (($pppsettings{'PROTOCOL'} eq 'RFC1483' && $pppsettings{'METHOD'} eq 'DHCP')) { + if ($pppsettings{'DHCP_HOSTNAME'} ne '') { + if (! &General::validfqdn($pppsettings{'DHCP_HOSTNAME'})) { + $errormessage = $errormessage.' '.$Lang::tr{'hostname'}.': '.$Lang::tr{'invalid hostname'}; } + } + } + + if (($pppsettings{'PROTOCOL'} eq 'RFC1483' && $pppsettings{'METHOD'} eq 'STATIC')) { + $errormessage = ''; + if (! &General::validip($pppsettings{'IP'})) { + $errormessage = $Lang::tr{'static ip'}.' '.$Lang::tr{'invalid ip'}; } + if (! &General::validip($pppsettings{'GATEWAY'})) { + $errormessage = $errormessage.' '.$Lang::tr{'gateway ip'}.' '.$Lang::tr{'invalid ip'}; } + if (! &General::validmask($pppsettings{'NETMASK'})) { + $errormessage = $errormessage.' '.$Lang::tr{'netmask'}.' '.$Lang::tr{'invalid netmask'}; } + if ($pppsettings{'BROADCAST'} ne '') { + if (! &General::validip($pppsettings{'BROADCAST'})) { + $errormessage = $errormessage.' '.$Lang::tr{'broadcast'}.' '.$Lang::tr{'invalid broadcast ip'}; } + } + if( $pppsettings{'DNS'} eq 'Automatic') { + $errormessage = $Lang::tr{'invalid input'}; } + if ($errormessage ne '') {goto ERROR; } + } + + if( $pppsettings{'PROTOCOL'} eq 'RFC1483' && $pppsettings{'METHOD'} ne 'PPPOE' && \ + $pppsettings{'RECONNECTION'} eq 'dialondemand' ) { + $errormessage = $Lang::tr{'invalid input'}; + goto ERROR; } + + if( $pppsettings{'RECONNECTION'} eq 'dialondemand' && `/bin/cat ${General::swroot}/ddns/config` =~ /,on$/m ) { + $errormessage = $Lang::tr{'dod not compatible with ddns'}; + goto ERROR; } + + if ( ($pppsettings{'TYPE'} =~ /^(bewanadsl)$/) && $pppsettings{'MODEM'} eq '') { + $errormessage = $Lang::tr{'no modem selected'}; + goto ERROR; } + + if( $pppsettings{'PROTOCOL'} eq 'RFC1483') { + $pppsettings{'ENCAP'} = $pppsettings{'ENCAP_RFC1483'}; } + if( $pppsettings{'PROTOCOL'} eq 'RFC2364') { + $pppsettings{'ENCAP'} = $pppsettings{'ENCAP_RFC2364'}; } + delete $pppsettings{'ENCAP_RFC1483'}; + delete $pppsettings{'ENCAP_RFC2364'}; + +ERROR: + if ($errormessage) { + $pppsettings{'VALID'} = 'no'; } + else { + $pppsettings{'VALID'} = 'yes'; } + + # write cgi vars to the file. + &General::writehash("${General::swroot}/ppp/settings-$pppsettings{'PROFILE'}", + \%pppsettings); + + # make link and write secret file. + &updatesettings(); + &writesecrets(); + + &General::log("$Lang::tr{'profile saved'} $pppsettings{'PROFILENAME'}"); + if ($drivererror) { + my $refresh = ""; + my $title = $Lang::tr{'upload'}; + &Header::openpage($title, 0, $refresh); + } +} +elsif ($pppsettings{'ACTION'} eq $Lang::tr{'select'}) +{ + my $profile = $pppsettings{'PROFILE'}; + %temppppsettings = (); + $temppppsettings{'PROFILE'} = ''; + &General::readhash("${General::swroot}/ppp/settings-$pppsettings{'PROFILE'}", + \%temppppsettings); + + # make link. + &updatesettings(); + + # read in the new params "early" so we can write secrets. + %pppsettings = (); + &General::readhash("${General::swroot}/ppp/settings", \%pppsettings); + $pppsettings{'PROFILE'} = $profile; + &General::writehash("${General::swroot}/ppp/settings-$pppsettings{'PROFILE'}", + \%pppsettings); + + &writesecrets(); + + &General::log("$Lang::tr{'profile made current'} $pppsettings{'PROFILENAME'}"); +} +elsif ($pppsettings{'ACTION'} eq $Lang::tr{'delete'}) +{ + &General::log("$Lang::tr{'profile deleted'} $pppsettings{'PROFILENAME'}"); + + my $profile = $pppsettings{'PROFILE'}; + truncate ("${General::swroot}/ppp/settings-$pppsettings{'PROFILE'}", 0); + + %temppppsettings = (); + $temppppsettings{'PROFILE'} = ''; + &General::readhash("${General::swroot}/ppp/settings-$pppsettings{'PROFILE'}", + \%temppppsettings); + + # make link. + &updatesettings(); + + # read in the new params "early" so we can write secrets. + %pppsettings = (); + &General::readhash("${General::swroot}/ppp/settings", \%pppsettings); + $pppsettings{'PROFILE'} = $profile; + &initprofile; + &General::writehash("${General::swroot}/ppp/settings-$pppsettings{'PROFILE'}", + \%pppsettings); +} +else +{ + # read in the current vars + %pppsettings = (); + $pppsettings{'VALID'} = ''; + &General::readhash("${General::swroot}/ppp/settings", \%pppsettings); +} + +# read in the profile names into @profilenames. +my $c=0; +for ($c = 1; $c <= $maxprofiles; $c++) +{ + %temppppsettings = (); + $temppppsettings{'PROFILENAME'} = $Lang::tr{'empty'}; + &General::readhash("${General::swroot}/ppp/settings-$c", \%temppppsettings); + $profilenames[$c] = $temppppsettings{'PROFILENAME'}; +} + +if ($pppsettings{'VALID'} eq '') +{ + if ($pppsettings{'PROFILE'} eq '') { + $pppsettings{'PROFILE'} = '1'; + &initprofile(); + } +} +for ($c = 1; $c <= $maxprofiles; $c++) { + $selected{'PROFILE'}{$c} = ''; } +$selected{'PROFILE'}{$pppsettings{'PROFILE'}} = "selected='selected'"; +for ($c = 1; $c <= $maxprofiles; $c++) { + $selected{'BACKUPPROFILE'}{$c} = ''; } +$selected{'BACKUPPROFILE'}{$pppsettings{'BACKUPPROFILE'}} = "selected='selected'"; + +$selected{'TYPE'}{'modem'} = ''; +$selected{'TYPE'}{'serial'} = ''; +$selected{'TYPE'}{'isdn'} = ''; +$selected{'TYPE'}{'pppoe'} = ''; +$selected{'TYPE'}{'pptp'} = ''; +$selected{'TYPE'}{'alcatelusb'} = ''; +$selected{'TYPE'}{'alcatelusbk'} = ''; +$selected{'TYPE'}{'pulsardsl'} = ''; +$selected{'TYPE'}{'eciadsl'} = ''; +$selected{'TYPE'}{'fritzdsl'} = ''; +$selected{'TYPE'}{'bewanadsl'} = ''; +$selected{'TYPE'}{'eagleusbadsl'} = ''; +$selected{'TYPE'}{'conexantusbadsl'} = ''; +$selected{'TYPE'}{'conexantpciadsl'} = ''; +$selected{'TYPE'}{'amedynusbadsl'} = ''; +$selected{'TYPE'}{'3cp4218usbadsl'} = ''; +$selected{'TYPE'}{$pppsettings{'TYPE'}} = "selected='selected'"; + +$checked{'DEBUG'}{'off'} = ''; +$checked{'DEBUG'}{'on'} = ''; +$checked{'DEBUG'}{$pppsettings{'DEBUG'}} = "checked='checked'"; + +$selected{'COMPORT'}{'ttyS0'} = ''; +$selected{'COMPORT'}{'ttyS1'} = ''; +$selected{'COMPORT'}{'ttyS2'} = ''; +$selected{'COMPORT'}{'ttyS3'} = ''; +$selected{'COMPORT'}{'ttyS4'} = ''; +$selected{'COMPORT'}{'usb/ttyACM0'} = ''; +$selected{'COMPORT'}{'usb/ttyACM1'} = ''; +$selected{'COMPORT'}{'usb/ttyACM2'} = ''; +$selected{'COMPORT'}{'usb/ttyACM3'} = ''; +$selected{'COMPORT'}{'isdn1'} = ''; +$selected{'COMPORT'}{'isdn2'} = ''; +$selected{'COMPORT'}{$pppsettings{'COMPORT'}} = "selected='selected'"; + +$selected{'DTERATE'}{'9600'} = ''; +$selected{'DTERATE'}{'19200'} = ''; +$selected{'DTERATE'}{'38400'} = ''; +$selected{'DTERATE'}{'57600'} = ''; +$selected{'DTERATE'}{'115200'} = ''; +$selected{'DTERATE'}{'230400'} = ''; +$selected{'DTERATE'}{$pppsettings{'DTERATE'}} = "selected='selected'"; + +$checked{'SPEAKER'}{'off'} = ''; +$checked{'SPEAKER'}{'on'} = ''; +$checked{'SPEAKER'}{$pppsettings{'SPEAKER'}} = "checked='checked'"; + +$selected{'DIALMODE'}{'T'} = ''; +$selected{'DIALMODE'}{'P'} = ''; +$selected{'DIALMODE'}{$pppsettings{'DIALMODE'}} = "selected='selected'"; + +$checked{'RECONNECTION'}{'manual'} = ''; +$checked{'RECONNECTION'}{'persistent'} = ''; +$checked{'RECONNECTION'}{'dialondemand'} = ''; +$checked{'RECONNECTION'}{$pppsettings{'RECONNECTION'}} = "checked='checked'"; + +$checked{'DIALONDEMANDDNS'}{'off'} = ''; +$checked{'DIALONDEMANDDNS'}{'on'} = ''; +$checked{'DIALONDEMANDDNS'}{$pppsettings{'DIALONDEMANDDNS'}} = "checked='checked'"; + +$checked{'AUTOCONNECT'}{'off'} = ''; +$checked{'AUTOCONNECT'}{'on'} = ''; +$checked{'AUTOCONNECT'}{$pppsettings{'AUTOCONNECT'}} = "checked='checked'"; + +$checked{'SENDCR'}{'off'} = ''; +$checked{'SENDCR'}{'on'} = ''; +$checked{'SENDCR'}{$pppsettings{'SENDCR'}} = "checked='checked'"; +$checked{'USEDOV'}{'off'} = ''; +$checked{'USEDOV'}{'on'} = ''; +$checked{'USEDOV'}{$pppsettings{'USEDOV'}} = "checked='checked'"; +$checked{'USEIBOD'}{'off'} = ''; +$checked{'USEIBOD'}{'on'} = ''; +$checked{'USEIBOD'}{$pppsettings{'USEIBOD'}} = "checked='checked'"; + +$checked{'MODEM'}{'PCIST'} = ''; +$checked{'MODEM'}{'USB'} = ''; +$checked{'MODEM'}{$pppsettings{'MODEM'}} = "checked='checked'"; + +$selected{'LINE'}{'WO'} = ''; +$selected{'LINE'}{'ES'} = ''; +$selected{'LINE'}{'ES03'} = ''; +$selected{'LINE'}{'FR'} = ''; +$selected{'LINE'}{'FR04'} = ''; +$selected{'LINE'}{'FR10'} = ''; +$selected{'LINE'}{'IT'} = ''; +$selected{'LINE'}{$pppsettings{'LINE'}} = "selected='selected'"; + +$checked{'MODULATION'}{'GDMT'} = ''; +$checked{'MODULATION'}{'ANSI'} = ''; +$checked{'MODULATION'}{'GLITE'} = ''; +$checked{'MODULATION'}{'AUTO'} = ''; +$checked{'MODULATION'}{$pppsettings{'MODULATION'}} = "checked='checked'"; + +$checked{'PROTOCOL'}{'RFC1483'} = ''; +$checked{'PROTOCOL'}{'RFC2364'} = ''; +$checked{'PROTOCOL'}{$pppsettings{'PROTOCOL'}} = "checked='checked'"; + +$selected{'ENCAP'}{'0'} = ''; +$selected{'ENCAP'}{'1'} = ''; +$selected{'ENCAP'}{'2'} = ''; +$selected{'ENCAP'}{'3'} = ''; +$selected{'ENCAP'}{'4'} = ''; +$selected{'ENCAP'}{$pppsettings{'ENCAP'}} = "selected='selected'"; +$checked{'METHOD'}{'STATIC'} = ''; +$checked{'METHOD'}{'PPPOE'} = ''; +$checked{'METHOD'}{'PPPOE_PLUGIN'} = ''; +$checked{'METHOD'}{'DHCP'} = ''; +$checked{'METHOD'}{$pppsettings{'METHOD'}} = "checked='checked'"; + +$selected{'AUTH'}{'pap-or-chap'} = ''; +$selected{'AUTH'}{'pap'} = ''; +$selected{'AUTH'}{'chap'} = ''; +$selected{'AUTH'}{'standard-login-script'} = ''; +$selected{'AUTH'}{'demon-login-script'} = ''; +$selected{'AUTH'}{'other-login-script'} = ''; +$selected{'AUTH'}{$pppsettings{'AUTH'}} = "selected='selected'"; + +$checked{'DNS'}{'Automatic'} = ''; +$checked{'DNS'}{'Manual'} = ''; +$checked{'DNS'}{$pppsettings{'DNS'}} = "checked='checked'"; + +&Header::openpage($Lang::tr{'ppp setup'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage\n"; + print " \n"; + &Header::closebox(); +} + + +### +### Box for selecting profile +### +print "
    \n"; +&Header::openbox('100%', 'left', $Lang::tr{'profiles'}); +print < + + $Lang::tr{'profile'}: + + + + + + +END +; +&Header::closebox(); +&Header::openbox('100%', 'left', $Lang::tr{'connection'}.':'); +print < + + $Lang::tr{'interface'}: + + + + + + USB: +END +; +if (-f "/proc/bus/usb/devices") { + my $usb=`lsmod | cut -d ' ' -f1 | grep -E "hci"`; + if ($usb eq '') { + print "\t$Lang::tr{'not running'}\n"; + } else { + print "\t$usb\n"; + } +} + +if ($pppsettings{'TYPE'}) { + print ""; + if ($pppsettings{'TYPE'} =~ /^(modem|serial|isdn)$/) { + print < + + +END +; + } elsif ($pppsettings{'TYPE'} eq 'isdn') { + print <$Lang::tr{'isdn1'} + + +END +; + } + if ($pppsettings{'TYPE'} =~ /^(modem|serial)$/ ) { + print <$Lang::tr{'computer to modem rate'} + + +END +; + } else { + print "\n"; + } + if ($pppsettings{'TYPE'} =~ /^(modem|isdn)$/ ) { + print "\n"; + print "\n"; + if ($pppsettings{'TYPE'} eq 'modem' ) { + print "\n"; + print "\n"; + } else { + print "\n"; + } + } + } + if ($pppsettings{'TYPE'} eq 'modem') { + print < + + + + + +END +; +} + +print < + + + + +END +; + if ( $netsettings{'CONFIG_TYPE'} =~ /^(2|3|6|7)$/ && ( $netsettings{'RED_TYPE'} eq "DHCP" || $netsettings{'RED_TYPE'} eq "STATIC") ) { + $pppsettings{'AUTOCONNECT'} = 'on'; + print "\n"; + print "\n"; + } else { + print "\n"; + print "\n"; + } +print <$Lang::tr{'connection debugging'}: + + + + + + + + +END +; +if ($pppsettings{'TYPE'} ne 'isdn') { +print < + + + + +END +; +} +print < + + + + + + + + + + + +END +; + +if ($pppsettings{'TYPE'} eq 'isdn') { + print < +
    $Lang::tr{'interface'}:
     
    $Lang::tr{'number'}$Lang::tr{'modem speaker on'}
     
    $Lang::tr{'dialing mode'}$Lang::tr{'send cr'}
    $Lang::tr{'idle timeout'} 
    $Lang::tr{'connect on ipcop restart'}
    $Lang::tr{'connect on ipcop restart'}


    $Lang::tr{'reconnection'}:
    + $Lang::tr{'manual'}
    + $Lang::tr{'persistent'}$Lang::tr{'backupprofile'}: +
    + $Lang::tr{'dod'}$Lang::tr{'dod for dns'}
    $Lang::tr{'holdoff'}:$Lang::tr{'maximum retries'}
    + + + + + + + + + +END +; +} + +if ($pppsettings{'TYPE'} eq 'pptp') +{ +print < + +


    $Lang::tr{'isdn settings'}
    $Lang::tr{'use ibod'}$Lang::tr{'use dov'}
    + + + + + + + + + + + + + + + + + + + + + +END +; +} +if ($pppsettings{'TYPE'} eq 'pppoe') +{ +print < +


    $Lang::tr{'pptp settings'}
    $Lang::tr{'phonebook entry'}
    $Lang::tr{'static ip'}$Lang::tr{'router ip'}
     
    $Lang::tr{'dhcp mode'}$Lang::tr{'hostname'}: *
    + + + +END +; +} +if ($pppsettings{'TYPE'} =~ /^(alcatelusb|alcatelusbk|amedynusbadsl|conexantusbadsl|conexantpciadsl|3cp4218usbadsl|pulsardsl|eciadsl|fritzdsl|bewanadsl|eagleusbadsl)$/) +{ + +print < +


    $Lang::tr{'pppoe settings'}
    + + + + + + + + + + + + + +END +; +} +if ($pppsettings{'TYPE'} eq 'bewanadsl') +{ +print < + + + + + + + + +END +; +} +if ($pppsettings{'TYPE'} =~ /^(3cp4218usbadsl|bewanadsl)$/) +{ +print < + + + + + + + + + + +END +; +} + +if ($pppsettings{'TYPE'} eq 'eagleusbadsl') +{ +print < + + + + + + + +END +; +} +if ($pppsettings{'TYPE'} eq 'eciadsl') +{ +print < + + + + + + + +END +; +} +if ($pppsettings{'TYPE'} =~ /^(alcatelusb|alcatelusbk|amedynusbadsl|conexantusbadsl|conexantpciadsl|3cp4218usbadsl|pulsardsl|eciadsl|fritzdsl|bewanadsl|eagleusbadsl)$/) +{ +print < + + +END +; +} +if ($pppsettings{'TYPE'} eq 'alcatelusb') +{ + print ""; +} + +if ($pppsettings{'TYPE'} =~ /^(alcatelusbk|amedynusbadsl|conexantusbadsl|conexantpciadsl|3cp4218usbadsl|pulsardsl|eciadsl|bewanadsl|eagleusbadsl|fritzdsl)$/) +{ +print <$Lang::tr{'encapsulation'}: + + +END +; +} +if ($pppsettings{'TYPE'} =~ /^(alcatelusb|alcatelusbk|amedynusbadsl|conexantusbadsl|conexantpciadsl|3cp4218usbadsl|pulsardsl|eciadsl|fritzdsl|bewanadsl|eagleusbadsl)$/) +{ +print < + + + + + + +END +; +} +if ($pppsettings{'TYPE'} eq 'alcatelusb') +{ + print ""; +} + +if ($pppsettings{'TYPE'} =~ /^(alcatelusbk|amedynusbadsl|conexantusbadsl|conexantpciadsl|3cp4218usbadsl|pulsardsl|eciadsl|bewanadsl|eagleusbadsl|fritzdsl)$/) +{ + if ($pppsettings{'TYPE'} ne 'fritzdsl') + { +print <$Lang::tr{'encapsulation'}: + + + + + + +END +; + } else { +print <PPPoE + +END +; + } +} +if ($pppsettings{'TYPE'} =~ /^(pppoe|alcatelusb|alcatelusbk|amedynusbadsl|conexantusbadsl|conexantpciadsl|3cp4218usbadsl|pulsardsl|eciadsl|bewanadsl|eagleusbadsl)$/) +{ +print < + + + + + + + + + + + + + + +END +; +} +if ($pppsettings{'TYPE'} =~ /^(alcatelusbk|amedynusbadsl|conexantusbadsl|conexantpciadsl|3cp4218usbadsl|pulsardsl|eciadsl|bewanadsl|eagleusbadsl)$/) +{ +print < + + + + + + + + + + + + + + + + + + + + + + + + + + + + +END +; + if ($pppsettings{'TYPE'} =~ /^(eciadsl|eagleusbadsl)$/) + { +print < + + + + + + + + + + +END +; + } +} +if ($pppsettings{'TYPE'} =~ /^(alcatelusb|alcatelusbk|eciadsl|fritzdsl)$/) { + print ""; +} +if ($pppsettings{'TYPE'} =~ /^(alcatelusb|alcatelusbk)$/) { + my $speedtouch = &Header::speedtouchversion; + if (($speedtouch >= 0) && ($speedtouch <=4)) { + my $modem; + if ($speedtouch ==4) { $modem='v4_b'; } else { $modem='v0123'; } + print ""; + if (-e "${General::swroot}/alcatelusb/firmware.$modem.bin") { + print "\n"; + } else { + print "\n"; + } + } else { + print ""; + } +} elsif ($pppsettings{'TYPE'} eq 'eciadsl') { + print ""; + if (-e "${General::swroot}/eciadsl/synch.bin") { + print "\n"; + } else { + print "\n"; } +} elsif ($pppsettings{'TYPE'} eq 'fritzdsl') { + print ""; + if (-e "/lib/modules/$kernel/misc/fcdslusb.o.gz") { + print "\n"; + } else { + print "\n"; } +} +print < +


    $Lang::tr{'adsl settings'}:
    $Lang::tr{'vpi number'}$Lang::tr{'vci number'}
     
    $Lang::tr{'modem'}: + Bewan ADSL PCI stBewan ADSL USB st
     
    $Lang::tr{'modulation'}:$Lang::tr{'automatic'}ANSI T1.483G.DMTG.Lite
     
    $Lang::tr{'country'}: +
     
    $Lang::tr{'modem'}: +
     
    $Lang::tr{'protocol'}: + RFC2364 PPPoA 
    + +
     
      + RFC 1483 / 2684 
    + +
     
      PPPoE plugin$Lang::tr{'service name'} *
      $Lang::tr{'pppoe'}$Lang::tr{'concentrator name'} *
     
      $Lang::tr{'static ip'}$Lang::tr{'static ip'}:
      $Lang::tr{'gateway ip'}:
      $Lang::tr{'netmask'}:
      $Lang::tr{'broadcast'}: *
     
      $Lang::tr{'dhcp mode'}$Lang::tr{'hostname'}: *
     
    $Lang::tr{'firmware'}:$Lang::tr{'present'} 
    $Lang::tr{'not present'} 
    $Lang::tr{'unknown'} Rev $speedtouch
    $Lang::tr{'driver'}:$Lang::tr{'present'} 
    $Lang::tr{'not present'} 
    $Lang::tr{'driver'}:$Lang::tr{'present'} 
    $Lang::tr{'not present'} 
    + + + + + + + + + + + + + + + +


    $Lang::tr{'authentication'}
    $Lang::tr{'username'}$Lang::tr{'password'}
    $Lang::tr{'method'}$Lang::tr{'script name'} *
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +


    DNS:
    $Lang::tr{'automatic'}
    $Lang::tr{'manual'}$Lang::tr{'primary dns'}$Lang::tr{'secondary dns'}


     $Lang::tr{'profile name'}


    $Lang::tr{'legend'}:* $Lang::tr{'this field may be blank'}
    +END +; +&Header::closebox(); +} + +print "\n"; + +&Header::closebigbox(); + +&Header::closepage(); + +sub updatesettings +{ + # make a link from the selected profile to the "default" one. + unlink("${General::swroot}/ppp/settings"); + link("${General::swroot}/ppp/settings-$pppsettings{'PROFILE'}", + "${General::swroot}/ppp/settings"); + system ("/bin/touch", "${General::swroot}/ppp/updatesettings"); + if ($pppsettings{'TYPE'} eq 'eagleusbadsl') { + # eagle-usb.conf is in backup but link DSPcode.bin can't, so the link is created in rc.eagleusbadsl + open(FILE, ">/${General::swroot}/eagle-usb/eagle-usb.conf") or die "Unable to write eagle-usb.conf file"; + flock(FILE, 2); + # decimal to hexa + $modemsettings{'VPI'} = uc(sprintf('%X', $pppsettings{'VPI'})); + $modemsettings{'VCI'} = uc(sprintf('%X', $pppsettings{'VCI'})); + if( $pppsettings{'PROTOCOL'} eq 'RFC1483') { + $modemsettings{'Encapsulation'} =1+$pppsettings{'ENCAP'} + } elsif ( $pppsettings{'PROTOCOL'} eq 'RFC2364') { + $modemsettings{'Encapsulation'} =6-$pppsettings{'ENCAP'} + } + print FILE "\n"; + print FILE "VPI=$modemsettings{'VPI'}\n"; + print FILE "VCI=$modemsettings{'VCI'}\n"; + print FILE "Encapsulation=$modemsettings{'Encapsulation'}\n"; + print FILE "Linetype=0A\n"; + print FILE "RatePollFreq=00000009\n"; + print FILE "\n"; + close FILE; + } +} + +sub writesecrets +{ + # write secrets file. + open(FILE, ">/${General::swroot}/ppp/secrets") or die "Unable to write secrets file."; + flock(FILE, 2); + my $username = $pppsettings{'USERNAME'}; + my $password = $pppsettings{'PASSWORD'}; + print FILE "'$username' * '$password'\n"; + chmod 0600, "${General::swroot}/ppp/secrets"; + close FILE; +} + +sub initprofile +{ + $pppsettings{'PROFILENAME'} = $Lang::tr{'unnamed'}; + $pppsettings{'COMPORT'} = 'ttyS0'; + $pppsettings{'DTERATE'} = 115200; + $pppsettings{'SPEAKER'} = 'off'; + $pppsettings{'RECONNECTION'} = 'manual'; + $pppsettings{'DIALONDEMANDDNS'} = 'off'; + $pppsettings{'AUTOCONNECT'} = 'off'; + $pppsettings{'SENDCR'} = 'off'; + $pppsettings{'USEIBOD'} = 'off'; + $pppsettings{'USEDOV'} = 'off'; + $pppsettings{'MODEM'} = 'PCIST'; + $pppsettings{'LINE'} = 'WO'; + $pppsettings{'ENCAP'} = '0'; + $pppsettings{'PHONEBOOK'} = 'RELAY_PPP1'; + $pppsettings{'PROTOCOL'} = 'RFC2364'; + $pppsettings{'METHOD'} = 'PPPOE_PLUGIN'; + $pppsettings{'DIALMODE'} = 'T'; + $pppsettings{'MAXRETRIES'} = 5; + $pppsettings{'HOLDOFF'} = 30; + $pppsettings{'TIMEOUT'} = 15; + $pppsettings{'MODULATION'} = 'AUTO'; + $pppsettings{'AUTH'} = 'pap-or-chap'; + $pppsettings{'DNS'} = 'Automatic'; + $pppsettings{'DEBUG'} = 'off'; + $pppsettings{'BACKUPPROFILE'} = $pppsettings{'PROFILE'}; + + # Get ISDN settings so we can see if ISDN is enabled or not. + $isdnsettings{'ENABLED'} = 'off'; + &General::readhash("${General::swroot}/isdn/settings", \%isdnsettings); + + # Get PPPoE settings so we can see if PPPoE is enabled or not. + &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); + + # empty profile partial pre-initialization + if ($netsettings{'CONFIG_TYPE'} =~ /^(2|3|6|7)$/) { + $pppsettings{'TYPE'}=lc($netsettings{'RED_TYPE'}); + } elsif ($isdnsettings{'ENABLED'} eq 'on') { + $pppsettings{'TYPE'}='isdn'; + } else { + $pppsettings{'TYPE'}='modem'; + } +} + diff --git a/html/cgi-bin/proxy.cgi b/html/cgi-bin/proxy.cgi new file mode 100644 index 0000000000..ad2d1db394 --- /dev/null +++ b/html/cgi-bin/proxy.cgi @@ -0,0 +1,421 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: proxy.cgi,v 1.13.2.23 2006/01/29 09:29:47 eoberlander Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %proxysettings=(); +my %netsettings=(); +my %mainsettings=(); +my $errormessage = ''; +my $NeedDoHTML = 1; + +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); +&General::readhash("${General::swroot}/main/settings", \%mainsettings); + +&Header::showhttpheaders(); + +$proxysettings{'ACTION'} = ''; +$proxysettings{'VALID'} = ''; + +$proxysettings{'UPSTREAM_PROXY'} = ''; +$proxysettings{'UPSTREAM_USER'} = ''; +$proxysettings{'UPSTREAM_PASSWORD'} = ''; +$proxysettings{'ENABLE'} = 'off'; +$proxysettings{'ENABLE_BLUE'} = 'off'; +$proxysettings{'CACHE_SIZE'} = '50'; +$proxysettings{'TRANSPARENT'} = 'off'; +$proxysettings{'TRANSPARENT_BLUE'} = 'off'; +$proxysettings{'MAX_SIZE'} = '4096'; +$proxysettings{'MIN_SIZE'} = '0'; +$proxysettings{'MAX_OUTGOING_SIZE'} = '0'; +$proxysettings{'MAX_INCOMING_SIZE'} = '0'; +$proxysettings{'LOGGING'} = 'off'; +$proxysettings{'PROXY_PORT'} = '800'; +$proxysettings{'EXTENSION_METHODS'} = ''; + +&Header::getcgihash(\%proxysettings); + +my $needhup = 0; +my $cachemem = ''; + +if ($proxysettings{'ACTION'} eq $Lang::tr{'save'}) +{ + + #assume error + my $configerror = 1; + + if ($proxysettings{'ENABLE'} !~ /^(on|off)$/ || + $proxysettings{'TRANSPARENT'} !~ /^(on|off)$/ || + $proxysettings{'ENABLE_BLUE'} !~ /^(on|off)$/ || + $proxysettings{'TRANSPARENT_BLUE'} !~ /^(on|off)$/ ) { + $errormessage = $Lang::tr{'invalid input'}; + goto ERROR; + } + if (!($proxysettings{'CACHE_SIZE'} =~ /^\d+/) || + ($proxysettings{'CACHE_SIZE'} < 10)) + { + $errormessage = $Lang::tr{'invalid cache size'}; + goto ERROR; + } + if (!($proxysettings{'MAX_SIZE'} =~ /^\d+/)) + { + $errormessage = $Lang::tr{'invalid maximum object size'}; + goto ERROR; + } + if (!($proxysettings{'MIN_SIZE'} =~ /^\d+/)) + { + $errormessage = $Lang::tr{'invalid minimum object size'}; + goto ERROR; + } + if (!($proxysettings{'MAX_OUTGOING_SIZE'} =~ /^\d+/)) + { + $errormessage = $Lang::tr{'invalid maximum outgoing size'}; + goto ERROR; + } + if (!($proxysettings{'MAX_INCOMING_SIZE'} =~ /^\d+/)) + { + $errormessage = $Lang::tr{'invalid maximum incoming size'}; + goto ERROR; + } + + if (!($proxysettings{'EXTENSION_METHODS'} =~ /^(|[A-Z0-9 _-]+)$/)) + { + $errormessage = $Lang::tr{'squid extension methods invalid'}; + goto ERROR; + } + + # Quick parent proxy error checking of username and password info. If username password don't both exist give an error. + my $proxy1 = 'YES'; + my $proxy2 = 'YES'; + if (($proxysettings{'UPSTREAM_USER'} eq '')) {$proxy1 = '';} + if (($proxysettings{'UPSTREAM_PASSWORD'} eq '')) {$proxy2 = '';} + if (($proxy1 ne $proxy2)) + { + $errormessage = $Lang::tr{'invalid upstream proxy username or password setting'}; + goto ERROR; + } + + $_ = $proxysettings{'UPSTREAM_PROXY'}; + my ($remotehost, $remoteport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/); + $remoteport = 80 if ($remoteport eq ''); + + $proxysettings{'VALID'} = 'yes'; + &General::writehash("${General::swroot}/proxy/settings", \%proxysettings); + + # + # NAH, 03-Jan-2004 + # + my @free = `/usr/bin/free`; + $free[1] =~ m/(\d+)/; + $cachemem = int $1 / 10; + if ($cachemem < 4096) { + $cachemem = 4096; + } + if ($cachemem > $proxysettings{'CACHE_SIZE'} * 40) { + $cachemem = ( $proxysettings{'CACHE_SIZE'} * 40 ); + } + + open(FILE, ">/${General::swroot}/proxy/squid.conf") or die "Unable to write squid.conf file"; + flock(FILE, 2); + print FILE <) { + $_ =~ s/__GREEN_IP__/$netsettings{'GREEN_ADDRESS'}/; + $_ =~ s/__GREEN_NET__/$netsettings{'GREEN_NETADDRESS'}\/$netsettings{'GREEN_NETMASK'}/; + $_ =~ s/__BLUE_IP__/$blue_ip/; + $_ =~ s/__BLUE_NET__/$blue_net/; + $_ =~ s/__PROXY_PORT__/$proxysettings{'PROXY_PORT'}/; + print FILE $_; + } + close (ACL); + + # This value is in bytes, so we must turn it from KB into bytes + my $max_incoming_size = $proxysettings{'MAX_INCOMING_SIZE'} * 1024; + + print FILE <$errormessage 
    \n"; + &Header::closebox(); +} + +print "
    \n"; + +&Header::openbox('100%', 'left', "$Lang::tr{'web proxy'}:"); +print < + + $Lang::tr{'enabled on'} Green: + + $Lang::tr{'upstream proxy host:port'}: * + + + + $Lang::tr{'transparent on'} Green: + + $Lang::tr{'upstream username'} * + + + +END +; +if ($netsettings{'BLUE_DEV'}) { + print "$Lang::tr{'enabled on'} Blue:"; + print ""; +} else { + print " "; +} +print <$Lang::tr{'upstream password'} * + + + +END +; +if ($netsettings{'BLUE_DEV'}) { + print "$Lang::tr{'transparent on'} Blue:"; + print ""; +} else { + print " "; +} +print <$Lang::tr{'proxy port'}: + + + + $Lang::tr{'log enabled'}: + + $Lang::tr{'squid extension methods'}: * + + + + +
    $Lang::tr{'cache management'} + + + $Lang::tr{'cache size'} + + + + $Lang::tr{'min size'} + + $Lang::tr{'max size'} + + + +
    $Lang::tr{'transfer limits'} + + + $Lang::tr{'max incoming size'} + + $Lang::tr{'max outgoing size'} + + + + +
    + + + + + + + +
    + *  + $Lang::tr{'this field may be blank'} + + +
    +END +; +&Header::closebox(); + +print "\n"; + +&Header::closebigbox(); + +&Header::closepage(); + +} # end sub DoHTML +1 diff --git a/html/cgi-bin/proxygraphs.cgi b/html/cgi-bin/proxygraphs.cgi new file mode 100644 index 0000000000..4e297b15d1 --- /dev/null +++ b/html/cgi-bin/proxygraphs.cgi @@ -0,0 +1,63 @@ +#!/usr/bin/perl +# +# (c) 2002 Robert Wood +# +# $Id: proxygraphs.cgi,v 1.2.2.5 2005/02/22 22:21:56 gespinasse Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %cgiparams=(); +my %pppsettings=(); +my %netsettings=(); +my @graphs=(); + +&Header::showhttpheaders(); + +my $dir = "/home/httpd/html/sgraph"; +$cgiparams{'ACTION'} = ''; +&Header::getcgihash(\%cgiparams); +my $sgraphdir = "/home/httpd/html/sgraph"; + +&Header::openpage($Lang::tr{'proxy access graphs'}, 1, ''); + +&Header::openbigbox('100%', 'left'); + +&Header::openbox('100%', 'left', $Lang::tr{'proxy access graphs'} . ":" ); + +if (open(IPACHTML, "$sgraphdir/index.html")) +{ + my $skip = 1; + while () + { + $skip = 1 if /^
    $/; + if ($skip) + { + $skip = 0 if /

    /; + next; + } + s/]+)>/Graph/; + s/
    /
    /g; + s/
    /
    /g; + s/<([^>]*)>/\L<$1>\E/g; + s/(size|align|border|color)=([^'"> ]+)/$1='$2'/g; + print; + } + close(IPACHTML); +} +else { + print $Lang::tr{'no information available'}; } + +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/cgi-bin/remote.cgi b/html/cgi-bin/remote.cgi new file mode 100644 index 0000000000..581f4d2289 --- /dev/null +++ b/html/cgi-bin/remote.cgi @@ -0,0 +1,180 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: remote.cgi,v 1.6.2.8 2005/02/22 22:21:56 gespinasse Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %remotesettings=(); +my %checked=(); +my $errormessage=''; + +&Header::showhttpheaders(); + +$remotesettings{'ENABLE_SSH'} = 'off'; +$remotesettings{'ENABLE_SSH_PROTOCOL1'} = 'off'; +$remotesettings{'ENABLE_SSH_PORTFW'} = 'off'; +$remotesettings{'ACTION'} = ''; +&Header::getcgihash(\%remotesettings); + +if ($remotesettings{'ACTION'} eq $Lang::tr{'save'}) +{ + # not existing here indicates the box is unticked + $remotesettings{'ENABLE_SSH_PASSWORDS'} = 'off' unless exists $remotesettings{'ENABLE_SSH_PASSWORDS'}; + $remotesettings{'ENABLE_SSH_KEYS'} = 'off' unless exists $remotesettings{'ENABLE_SSH_KEYS'}; + + + &General::writehash("${General::swroot}/remote/settings", \%remotesettings); + if ($remotesettings{'ENABLE_SSH'} eq 'on') + { + &General::log($Lang::tr{'ssh is enabled'}); + if ($remotesettings{'ENABLE_SSH_PASSWORDS'} eq 'off' + and $remotesettings{'ENABLE_SSH_KEYS'} eq 'off') + { + $errormessage = $Lang::tr{'ssh no auth'}; + } + system ('/bin/touch', "${General::swroot}/remote/enablessh"); + } + else + { + &General::log($Lang::tr{'ssh is disabled'}); + unlink "${General::swroot}/remote/enablessh"; + } + + if ($remotesettings{'ENABLE_SSH_PROTOCOL1'} eq 'on') + { + &General::log($Lang::tr{'ssh1 enabled'}); + } + else + { + &General::log($Lang::tr{'ssh1 disabled'}); + } + + system('/usr/local/bin/restartssh') == 0 + or $errormessage = "$Lang::tr{'bad return code'} " . $?/256; +} + +&General::readhash("${General::swroot}/remote/settings", \%remotesettings); + +# not existing here means they're undefined and the default value should be +# used + $remotesettings{'ENABLE_SSH_PASSWORDS'} = 'on' unless exists $remotesettings{'ENABLE_SSH_PASSWORDS'}; + $remotesettings{'ENABLE_SSH_KEYS'} = 'on' unless exists $remotesettings{'ENABLE_SSH_KEYS'}; + +$checked{'ENABLE_SSH'}{'off'} = ''; +$checked{'ENABLE_SSH'}{'on'} = ''; +$checked{'ENABLE_SSH'}{$remotesettings{'ENABLE_SSH'}} = "checked='checked'"; +$checked{'ENABLE_SSH_PROTOCOL1'}{'off'} = ''; +$checked{'ENABLE_SSH_PROTOCOL1'}{'on'} = ''; +$checked{'ENABLE_SSH_PROTOCOL1'}{$remotesettings{'ENABLE_SSH_PROTOCOL1'}} = "checked='checked'"; +$checked{'ENABLE_SSH_PORTFW'}{'off'} = ''; +$checked{'ENABLE_SSH_PORTFW'}{'on'} = ''; +$checked{'ENABLE_SSH_PORTFW'}{$remotesettings{'ENABLE_SSH_PORTFW'}} = "checked='checked'"; +$checked{'ENABLE_SSH_PASSWORDS'}{'off'} = ''; +$checked{'ENABLE_SSH_PASSWORDS'}{'on'} = ''; +$checked{'ENABLE_SSH_PASSWORDS'}{$remotesettings{'ENABLE_SSH_PASSWORDS'}} = "checked='checked'"; +$checked{'ENABLE_SSH_KEYS'}{'off'} = ''; +$checked{'ENABLE_SSH_KEYS'}{'on'} = ''; +$checked{'ENABLE_SSH_KEYS'}{$remotesettings{'ENABLE_SSH_KEYS'}} = "checked='checked'"; + + +&Header::openpage($Lang::tr{'remote access'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); +} + +print "
    \n"; + +&Header::openbox('100%', 'left', 'SSH:'); +print < + + + $Lang::tr{'ssh access'} + + +   + + $Lang::tr{'ssh1 support'} + + +   + + $Lang::tr{'ssh portfw'} + + +   + + $Lang::tr{'ssh passwords'} + + +   + + $Lang::tr{'ssh keys'} + + +
    + + +END +; +&Header::closebox(); + +print "\n"; + +&Header::openbox('100%', 'left', $Lang::tr{'ssh host keys'}); + +print "\n"; + +print < + + +END +; + +&viewkey("/etc/ssh/ssh_host_key.pub","RSA1"); +&viewkey("/etc/ssh/ssh_host_rsa_key.pub","RSA2"); +&viewkey("/etc/ssh/ssh_host_dsa_key.pub","DSA"); + +print "
    $Lang::tr{'ssh key'}$Lang::tr{'ssh fingerprint'}$Lang::tr{'ssh key size'}
    \n"; + +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); + + +sub viewkey +{ + my $key = $_[0]; + my $name = $_[1]; + + if ( -e $key ) + { + my @temp = split(/ /,`/usr/bin/ssh-keygen -l -f $key`); + my $keysize = &Header::cleanhtml($temp[0],"y"); + my $fingerprint = &Header::cleanhtml($temp[1],"y"); + print "$key ($name)$fingerprint$keysize\n"; + } +} diff --git a/html/cgi-bin/services.cgi b/html/cgi-bin/services.cgi new file mode 100644 index 0000000000..688cdc9c05 --- /dev/null +++ b/html/cgi-bin/services.cgi @@ -0,0 +1,586 @@ +#!/usr/bin/perl +# +# This file is part of the IPCop Firewall. +# +# IPCop is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# IPCop is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with IPCop; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Copyright (C) 2003-09-22 Darren Critchley +# +# $Id: services.cgi,v 1.2.2.3 2005/04/29 23:37:07 franck78 Exp $ +# + +use strict; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my @icmptypes = &get_icmptypes(); + +&Header::showhttpheaders(); + +my %cgiparams=(); +my %selected=(); +my %checked=(); +my $filename = "${General::swroot}/firewall/customservices"; +my $key = 0; # used for finding last sequence number used + +# Darren Critchley - vars for setting up sort order +my $sort_col = '1'; +my $sort_type = 'a'; +my $sort_dir = 'asc'; + +if ($ENV{'QUERY_STRING'} ne '') { + my ($item1, $item2, $item3) = split(/\&/,$ENV{'QUERY_STRING'}); + if ($item1 ne '') { + ($junk, $sort_col) = split(/\=/,$item1) + } + if ($item2 ne '') { + ($junk, $sort_type) = split(/\=/,$item2) + } + if ($item3 ne '') { + ($junk, $sort_dir) = split(/\=/,$item3) + } +} + +$cgiparams{'KEY'} = ''; +$cgiparams{'PORTS'} = ''; +$cgiparams{'PROTOCOL'} = '6'; +$cgiparams{'NAME'} = ''; +$cgiparams{'PORT_INVERT'} = 'off'; +$cgiparams{'PROTOCOL_INVERT'} = 'off'; +$cgiparams{'ICMP'} = 'BLANK'; + +&Header::getcgihash(\%cgiparams); + +if ($cgiparams{'ACTION'} eq $Lang::tr{'add'}){ + + &validateparams(); + unless($errormessage){ + $key++; # Add one to last sequence number + open(FILE,">>$filename") or die 'Unable to open config file.'; + flock FILE, 2; + print FILE "$key,$cgiparams{'NAME'},$cgiparams{'PORTS'},$cgiparams{'PROTOCOL'},$cgiparams{'PORT_INVERT'},$cgiparams{'PROTOCOL_INVERT'},$cgiparams{'ICMP'}\n"; + close(FILE); + &General::log("$Lang::tr{'service added'}: $cgiparams{'NAME'}"); + undef %cgiparams; + } +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'update'}) +{ + &validateparams(); + # Darren Critchley - If there is an error don't waste any more processing time + if ($errormessage) { $cgiparams{'ACTION'} = $Lang::tr{'edit'}; goto UPD_ERROR; } + + unless($errormessage){ + open(FILE, $filename) or die 'Unable to open custom services file.'; + my @current = ; + close(FILE); + my $line; + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + foreach $line (@current) { + chomp($line); + my @temp = split(/\,/,$line); + if ($cgiparams{'KEY'} eq $temp[0]) { + print FILE "$cgiparams{'KEY'},$cgiparams{'NAME'},$cgiparams{'PORTS'},$cgiparams{'PROTOCOL'},$cgiparams{'PORT_INVERT'},$cgiparams{'PROTOCOL_INVERT'},$cgiparams{'ICMP'}\n"; + } else { + print FILE "$line\n"; + } + } + close(FILE); + &General::log("$Lang::tr{'service updated'}: $cgiparams{'NAME'}"); + undef %cgiparams; + } +UPD_ERROR: +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) +{ + open(FILE, "$filename") or die 'Unable to open custom services file.'; + my @current = ; + close(FILE); + + unless ($errormessage) + { + foreach my $line (@current) + { + chomp($line); + my @temp = split(/\,/,$line); + if ($cgiparams{'KEY'} eq $temp[0]) { + $cgiparams{'NAME'} = $temp[1]; + $cgiparams{'PORTS'} = $temp[2]; + $cgiparams{'PROTOCOL'} = $temp[3]; + $cgiparams{'PORT_INVERT'} = $temp[4]; + $cgiparams{'PROTOCOL_INVERT'} = $temp[5]; + $cgiparams{'ICMP'} = $temp[6]; + } + + } + } +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) +{ + open(FILE, $filename) or die 'Unable to open custom services file.'; + my @current = ; + close(FILE); + + open(FILE, ">$filename") or die 'Unable to open custom services file.'; + flock FILE, 2; + foreach my $line (@current) + { + chomp($line); + if ($line ne '') { + my @temp = split(/\,/,$line); + if ($cgiparams{'KEY'} eq $temp[0]) { + &General::log("$Lang::tr{'service removed'}: $temp[1]"); + } else { + print FILE "$temp[0],$temp[1],$temp[2],$temp[3],$temp[4],$temp[5],$temp[6]\n"; + } + } + } + close(FILE); + undef %cgiparams; +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'reset'}) +{ + undef %cgiparams; +} + +if ($cgiparams{'ACTION'} eq '') +{ + $cgiparams{'KEY'} = ''; + $cgiparams{'PORTS'} = ''; + $cgiparams{'PROTOCOL'} = '6'; + $cgiparams{'NAME'} = ''; + $cgiparams{'PORT_INVERT'} = 'off'; + $cgiparams{'PROTOCOL_INVERT'} = 'off'; + $cgiparams{'ICMP'} = 'BLANK'; +} + +# Darren Critchley - Bring in the protocols file built from /etc/protocols into hash %protocol +require "${General::swroot}/firewall/protocols.pl"; + +# Darren Critchley - figure out which protocol is selected +$selected{'PROTOCOL'}{'tcpudp'}= ''; +$selected{'PROTOCOL'}{'all'}= ''; +foreach $line (keys %protocols) { +# $selected{'PROTOCOL'}{"$protocols{$line}"}= ''; + $selected{'PROTOCOL'}{$line}= ''; +} +$selected{'PROTOCOL'}{$cgiparams{'PROTOCOL'}} = 'SELECTED'; + +# Darren Critchley - figure out which icmptype is selected +$selected{'ICMP'}{$cgiparams{'ICMP'}} = 'SELECTED'; + +$checked{'PORT_INVERT'}{'off'} = ''; +$checked{'PORT_INVERT'}{'on'} = ''; +$checked{'PORT_INVERT'}{$cgiparams{'PORT_INVERT'}} = 'CHECKED'; +$checked{'PROTOCOL_INVERT'}{'off'} = ''; +$checked{'PROTOCOL_INVERT'}{'on'} = ''; +$checked{'PROTOCOL_INVERT'}{$cgiparams{'PROTOCOL_INVERT'}} = 'CHECKED'; + +&Header::openpage($Lang::tr{'services settings'}, 1, ''); + +&Header::openbigbox('100%', 'LEFT', '', $errormessage); + +# DEBUG DEBUG +#&Header::openbox('100%', 'LEFT', 'DEBUG'); +#foreach $line (keys %cgiparams) { +# print "$line = $cgiparams{$line}
    "; +#} +#print "$sort_col\n"; +#print "$ENV{'QUERY_STRING'}\n"; +#print " 
    \n"; +#&Header::closebox(); + +if ($errormessage) { + &Header::openbox('100%', 'LEFT', $Lang::tr{'error messages'}); + print "$errormessage\n"; + print " \n"; + &Header::closebox(); +} + +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}){ + &Header::openbox('100%', 'LEFT', "$Lang::tr{'edit service'}:"); +} else { + &Header::openbox('100%', 'LEFT', "$Lang::tr{'add service'}:"); +} +# Darren Critchley - Show protocols with TCP, UDP, etc at the top of the list. +print < +
    + + + + + + + + + + + + + + + + + + + + + + + + + +END +; +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}){ + print "\n"; + print "\n"; + print "\n"; +} else { + print "\n"; + print "\n"; +} +print < +
    $Lang::tr{'servicename'}$Lang::tr{'invert'}$Lang::tr{'ports'}$Lang::tr{'invert'}$Lang::tr{'protocol'}  
    + + + + + + + + +
       $Lang::tr{'icmp type'}: +
    +
    + +END +; + +&Header::closebox(); + +&Header::openbox('100%', 'LEFT', "$Lang::tr{'custom services'}:"); +print < + + +END +; + +if ($sort_dir eq 'asc' && $sort_col eq '2') { + print "\n"; +} else { + print "\n"; +} +if ($sort_dir eq 'asc' && $sort_col eq '3') { + print "\n"; +} else { + print "\n"; +} +if ($sort_dir eq 'asc' && $sort_col eq '4') { + print "\n"; +} else { + print "\n"; +} + +print <$Lang::tr{'icmp type'} + + + +END +; +&display_custom_services(); +print < + +END +; +&Header::closebox(); + +&Header::openbox('100%', 'LEFT', "$Lang::tr{'default services'}:"); +print < +
    $Lang::tr{'servicename'}$Lang::tr{'servicename'}$Lang::tr{'ports'}$Lang::tr{'ports'}$Lang::tr{'protocol'}$Lang::tr{'protocol'}  
    + + + + + +END +; +&display_default_services(); +print < + +END +; +&Header::closebox(); + + print "$Lang::tr{'this feature has been sponsored by'} : "; + print "Kobelt Development Inc..\n"; + + +&Header::closebigbox(); + +&Header::closepage(); + +sub display_custom_services +{ + + open(FILE, "$filename") or die 'Unable to open services file.'; + my @current = ; + close(FILE); + + my $id = 0; + my $port_inv = ''; + my $prot_inv = ''; + my $port_inv_tail = ''; + my $prot_inv_tail = ''; + my @outarray = &General::srtarray($sort_col,$sort_type,$sort_dir,@current); + foreach $line (@outarray) + { + chomp($line); + if ($line ne ''){ + my @temp = split(/\,/,$line); + # Darren Critchley highlight the row we are editing + if ( $cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'KEY'} eq $temp[0] ) { + print "\n"; + } else { + if ($id % 2) { + print "\n"; + } else { + print "\n"; + } + } + print "\n"; + if ($temp[4] eq 'on'){$port_inv = " ! (";$port_inv_tail = ")";}else{$port_inv='';$port_inv_tail='';} + print "\n"; + if ($temp[5] eq 'on'){$prot_inv = " ! (";$prot_inv_tail = ")";}else{$prot_inv='';$prot_inv_tail='';} + print "\n"; + if ($temp[6] eq 'BLANK') { + print "\n"; + } else { + print "\n"; + } + print < + + + + + +END +; + print "\n"; + $id++; + } + } +} + +sub display_default_services +{ + my $fname = "${General::swroot}/firewall/defaultservices"; + my $prev = ""; + my $newline=""; + + open(FILE, "$fname") or die 'Unable to open default services file.'; + my @current = ; + close(FILE); + + my $id = 0; + + foreach my $line (sort @current) + { + my @temp = split(/\,/,$line); + if ($id % 2) { + print "\n"; + } else { + print "\n"; + } + print "\n"; + print "\n"; + print "\n"; + print "\n"; + $id++; + } +} + +sub cleanprotocol +{ + my $prtcl = $_[0]; + chomp($prtcl); + if ($prtcl eq 'tcpudp') { + $prtcl = 'TCP & UDP'; + } else { + $prtcl = uc($prtcl); + } + return $prtcl; +} + +sub cleanport +{ + my $prt = $_[0]; + chomp($prt); + # Darren Critchley - Format the ports + $prt =~ s/-/ - /; + $prt =~ s/:/ - /; + return $prt; +} + +# Validate Field Entries +sub validateparams +{ + $erromessage=''; + if ($cgiparams{'PROTOCOL'} eq 'tcp' || $cgiparams{'PROTOCOL'} eq 'udp' || $cgiparams{'PROTOCOL'} eq 'tcpudp' || $cgiparams{'PROTOCOL'} eq 'all') { + # Darren Critchley - Get rid of dashes in port ranges + $cgiparams{'PORTS'}=~ tr/-/:/; + # Darren Critchley - code to substitue wildcards + if ($cgiparams{'PORTS'} eq "*") { + $cgiparams{'PORTS'} = "1:65535"; + } + if ($cgiparams{'PORTS'} =~ /^(\D)\:(\d+)$/) { + $cgiparams{'PORTS'} = "1:$2"; + } + if ($cgiparams{'PORTS'} =~ /^(\d+)\:(\D)$/) { + $cgiparams{'PORTS'} = "$1:65535"; + } + # Darren Critchley - watch the order here, the validportrange sets errormessage='' + $errormessage = &General::validportrange($cgiparams{'PORTS'}, 'src'); + if ($errormessage) {return;} + } else { + $cgiparams{'PORTS'} = ""; + } + if ($cgiparams{'PROTOCOL'} eq 'tcp') { + $cgiparams{'ICMP'} = "BLANK"; + } + + if($cgiparams{'PORTS'} eq '' && $cgiparams{'PORT_INVERT'} ne 'off'){ + $cgiparams{'PORT_INVERT'} = 'off'; + } + if ($cgiparams{'NAME'} eq '') { + $errormessage = $Lang::tr{'noservicename'}; + return; + } + if ($cgiparams{'PROTOCOL'} eq 'icmp' && $cgiparams{'ICMP'} eq 'BLANK'){ + $errormessage = $Lang::tr{'icmp selected but no type'}; + return; + } + unless($errormessage){ + $cgiparams{'NAME'}=&Header::cleanhtml($cgiparams{'NAME'}); + open(FILE, $filename) or die 'Unable to open custom services file.'; + my @current = ; + close(FILE); + foreach my $line (@current) + { + chomp($line); + if ($line ne '') { + my @temp = split(/\,/,$line); + if ($cgiparams{'NAME'} eq $temp[1] && $cgiparams{'KEY'} ne $temp[0]) { + $errormessage=$Lang::tr{'duplicate name'}; + return; + } + $key=$temp[0]; + } + } + unless($errormessage){ + my $fname = "${General::swroot}/firewall/defaultservices"; + my $prev = ""; + my $newline=""; + + open(FILE, "$fname") or die 'Unable to open default services file.'; + my @current = ; + close(FILE); + + foreach my $line (sort @current) + { + my @temp = split(/\,/,$line); + if ($cgiparams{'NAME'} eq $temp[0]) { + $errormessage=$Lang::tr{'duplicate name'}; + return; + } + } + } + } +} + +sub get_icmptypes +{ + my $fname = "${General::swroot}/firewall/icmptypes"; + my $newline=""; + my @newarray=(); + + open(FILE, "$fname") or die 'Unable to open icmp file.'; + my @current = ; + close(FILE); + + foreach $newline (sort @current) + { + chomp ($newline); + if (substr($newline, 0, 1) ne "#") { + push (@newarray, $newline); + } + } + return (@newarray); +} + diff --git a/html/cgi-bin/shaping.cgi b/html/cgi-bin/shaping.cgi new file mode 100644 index 0000000000..381bbf12ef --- /dev/null +++ b/html/cgi-bin/shaping.cgi @@ -0,0 +1,367 @@ +#!/usr/bin/perl +# +# Traffic shaping CGI +# +# Copyright 2003-04-06 David Kilpatrick +# +# $Id: shaping.cgi,v 1.3.2.15 2005/02/27 13:42:05 eoberlander Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::table2colour}, ${Header::colouryellow} ); +undef (@dummy); + +my %shapingsettings=(); +my $configfile = "${General::swroot}/shaping/config"; +my $settingsfile = "${General::swroot}/shaping/settings"; +my $errormessage = ''; + +&Header::showhttpheaders(); + +$shapingsettings{'ACTION'} = ''; +$shapingsettings{'ENABLE'} = 'off'; +$shapingsettings{'VALID'} = ''; +$shapingsettings{'UPLINK'} = ''; +$shapingsettings{'DOWNLINK'} = ''; +$shapingsettings{'SERVICE_ENABLED'} = ''; +$shapingsettings{'SERVICE_PROT'} = ''; +$shapingsettings{'SERVICE_PRIO'} = ''; +$shapingsettings{'SERVICE_PORT'} = ''; + +&Header::getcgihash(\%shapingsettings); + +open(FILE, "$configfile") or die 'Unable to open shaping config file.'; +my @current = ; +close(FILE); + +if ($shapingsettings{'ACTION'} eq $Lang::tr{'save'}) +{ + if (!($shapingsettings{'UPLINK'} =~ /^\d+$/) || + ($shapingsettings{'UPLINK'} < 2)) + { + $errormessage = $Lang::tr{'invalid uplink speed'}; + goto ERROR; + } + + if (!($shapingsettings{'DOWNLINK'} =~ /^\d+$/) || + ($shapingsettings{'DOWNLINK'} < 2)) + { + $errormessage = $Lang::tr{'invalid downlink speed'}; + goto ERROR; + } + +ERROR: + if ($errormessage) { + $shapingsettings{'VALID'} = 'no'; } + else { + $shapingsettings{'VALID'} = 'yes'; } + + open(FILE,">$settingsfile") or die 'Unable to open shaping settings file.'; + flock FILE, 2; + print FILE "VALID=$shapingsettings{'VALID'}\n"; + print FILE "ENABLE=$shapingsettings{'ENABLE'}\n"; + print FILE "UPLINK=$shapingsettings{'UPLINK'}\n"; + print FILE "DOWNLINK=$shapingsettings{'DOWNLINK'}\n"; + close FILE; + + if ($shapingsettings{'VALID'} eq 'yes') { + system('/usr/local/bin/restartshaping'); + } +} +if ($shapingsettings{'ACTION'} eq $Lang::tr{'add'}) +{ + unless($shapingsettings{'SERVICE_PROT'} =~ /^(tcp|udp)$/) { $errormessage = $Lang::tr{'invalid input'}; } + unless($shapingsettings{'SERVICE_PRIO'} =~ /^(10|20|30)$/) { $errormessage = $Lang::tr{'invalid input'}; } + unless(&General::validport($shapingsettings{'SERVICE_PORT'})) { $errormessage = $Lang::tr{'invalid port'}; } + + if ( ! $errormessage) + { + if ($shapingsettings{'EDITING'} eq 'no') + { + open(FILE,">>$configfile") or die 'Unable to open shaping config file'; + flock FILE, 2; + print FILE "$shapingsettings{'SERVICE_PROT'},$shapingsettings{'SERVICE_PORT'},$shapingsettings{'SERVICE_PRIO'},$shapingsettings{'SERVICE_ENABLED'}\n"; + } else { + open(FILE,">$configfile") or die 'Unable to open shaping config file'; + flock FILE, 2; + my $id = 0; + foreach my $line (@current) + { + $id++; + chomp($line); + my @temp = split(/\,/,$line); + if ($shapingsettings{'EDITING'} eq $id) { + print FILE "$shapingsettings{'SERVICE_PROT'},$shapingsettings{'SERVICE_PORT'},$shapingsettings{'SERVICE_PRIO'},$shapingsettings{'SERVICE_ENABLED'}\n"; + } else { + print FILE "$line\n"; + } + } + } + close FILE; + undef %shapingsettings; + system ('/usr/local/bin/restartshaping'); + } else { + # stay on edit mode if an error occur + if ($shapingsettings{'EDITING'} ne 'no') + { + $shapingsettings{'ACTION'} = $Lang::tr{'edit'}; + $shapingsettings{'ID'} = $shapingsettings{'EDITING'}; + } + } +} + +if ($shapingsettings{'ACTION'} eq $Lang::tr{'edit'}) +{ + my $id = 0; + foreach my $line (@current) + { + $id++; + if ($shapingsettings{"ID"} eq $id) + { + chomp($line); + my @temp = split(/\,/,$line); + $shapingsettings{'SERVICE_PROT'} = $temp[0]; + $shapingsettings{'SERVICE_PORT'} = $temp[1]; + $shapingsettings{'SERVICE_PRIO'} = $temp[2]; + $shapingsettings{'SERVICE_ENABLED'} = $temp[3]; + } + } +} + +if ($shapingsettings{'ACTION'} eq $Lang::tr{'remove'} || $shapingsettings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) +{ + open(FILE, ">$configfile") or die 'Unable to open config file.'; + flock FILE, 2; + my $id = 0; + foreach my $line (@current) + { + $id++; + unless ($shapingsettings{"ID"} eq $id) { print FILE "$line"; } + elsif ($shapingsettings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) + { + chomp($line); + my @temp = split(/\,/,$line); + if ($temp[3] eq "on") { + print FILE "$temp[0],$temp[1],$temp[2],off\n"; + } else { + print FILE "$temp[0],$temp[1],$temp[2],on\n"; + } + } + } + close(FILE); + system ('/usr/local/bin/restartshaping'); +} + +&General::readhash("${General::swroot}/shaping/settings", \%shapingsettings); + +if ($shapingsettings{'ACTION'} eq '') +{ + $shapingsettings{'SERVICE_ENABLED'} = 'on'; + $shapingsettings{'SERVICE_PROT'} = 'tcp'; + $shapingsettings{'SERVICE_PRIO'} = '20'; + $shapingsettings{'SERVICE_PORT'} = ''; +} + +my %checked=(); +$checked{'ENABLE'}{'off'} = ''; +$checked{'ENABLE'}{'on'} = ''; +$checked{'ENABLE'}{$shapingsettings{'ENABLE'}} = "checked='checked'"; + +my %service_checked=(); +$service_checked{'SERVICE_ENABLED'}{'off'} = ''; +$service_checked{'SERVICE_ENABLED'}{'on'} = ''; +$service_checked{'SERVICE_ENABLED'}{$shapingsettings{'SERVICE_ENABLED'}} = "checked='checked'"; + +my %service_selected=(); +$service_selected{'SERVICE_PROT'}{'udp'} = ''; +$service_selected{'SERVICE_PROT'}{'tcp'} = ''; +$service_selected{'SERVICE_PROT'}{$shapingsettings{'SERVICE_PROT'}} = "selected='selected'"; + +$service_selected{'SERVICE_PRIO'}{'10'} = ''; +$service_selected{'SERVICE_PRIO'}{'20'} = ''; +$service_selected{'SERVICE_PRIO'}{'30'} = ''; +$service_selected{'SERVICE_PRIO'}{$shapingsettings{'SERVICE_PRIO'}} = "selected='selected'"; + +&Header::openpage($Lang::tr{'traffic shaping settings'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); +} + +print "
    \n"; + +&Header::openbox('100%', 'left', "$Lang::tr{'settings'}:"); +print < +
    + + + + + + + + + + + + + +
    $Lang::tr{'servicename'}$Lang::tr{'ports'}$Lang::tr{'protocol'}
    $temp[1]" . $port_inv . &cleanport("$temp[2]") . $port_inv_tail . "" . $prot_inv . &cleanprotocol("$temp[3]") . $prot_inv_tail . "N/A$temp[6] + + + +
    + + + +
    $temp[0]$temp[1]" . &cleanprotocol("$temp[2]") . "
    $Lang::tr{'traffic shaping'}
     $Lang::tr{'downlink speed'}: 
     $Lang::tr{'uplink speed'}: 
    + +
    + + + + +
     
    +END +; +&Header::closebox; + +print "\n"; +print "
    \n"; + +my $buttontext = $Lang::tr{'add'}; +if($shapingsettings{'ACTION'} eq $Lang::tr{'edit'}) { + $buttontext = $Lang::tr{'update'}; + &Header::openbox('100%', 'left', $Lang::tr{'edit service'}); +} else { + &Header::openbox('100%', 'left', $Lang::tr{'add service'}); +} + +print < + + $Lang::tr{'priority'}:  + + $Lang::tr{'port'}:  + + $Lang::tr{'protocol'}:  + + $Lang::tr{'enabled'}  + + + + +
    + + + + +
     
    +END +; +&Header::closebox; + +if ($shapingsettings{'ACTION'} eq $Lang::tr{'edit'}) { + print "\n"; +} else { + print "\n"; +} + +print "\n"; + +&Header::openbox('100%', 'left', $Lang::tr{'shaping list options'}); +print < + + $Lang::tr{'priority'} + $Lang::tr{'port'} + $Lang::tr{'protocol'} + $Lang::tr{'action'} + +END +; + +my $id = 0; +open(SERVICES, "$configfile") or die 'Unable to open shaping config file.'; +while () +{ + my $gif = ''; + my $prio = ''; + my $gdesc = ''; + $id++; + chomp($_); + my @temp = split(/\,/,$_); + if ($temp[3] eq "on") { + $gif = 'on.gif'; $gdesc=$Lang::tr{'click to disable'}; } + else { + $gif = 'off.gif'; $gdesc=$Lang::tr{'click to enable'}; } + if ($shapingsettings{'ACTION'} eq $Lang::tr{'edit'} && $shapingsettings{'ID'} eq $id) { + print "\n"; } + elsif ($id % 2) { + print "\n"; } + else { + print "\n"; } + if ($temp[2] eq "10") { $prio = $Lang::tr{'high'}; } + if ($temp[2] eq "20") { $prio = $Lang::tr{'medium'}; } + if ($temp[2] eq "30") { $prio = $Lang::tr{'low'}; } + +print <$prio +$temp[1] +$temp[0] + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +END +; +} +close(SERVICES); + +print < +END +; +&Header::closebox; + + +&Header::closebigbox(); + +&Header::closepage; diff --git a/html/cgi-bin/shutdown.cgi b/html/cgi-bin/shutdown.cgi new file mode 100644 index 0000000000..2f62c7880c --- /dev/null +++ b/html/cgi-bin/shutdown.cgi @@ -0,0 +1,253 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: shutdown.cgi,v 1.5.2.10 2006/01/02 16:21:00 eoberlander Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %cgiparams=(); +my $death = 0; +my $rebirth = 0; +my $default_time = '03:15'; + +&Header::showhttpheaders(); + +$cgiparams{'ACTION'} = ''; +&Header::getcgihash(\%cgiparams); + +if ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown'}) { + $death = 1; + &General::log($Lang::tr{'shutting down ipcop'}); + #system '/usr/local/bin/ipcopdeath'; + system '/usr/local/bin/ipcopreboot down'; +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'reboot'}) { + $rebirth = 1; + &General::log($Lang::tr{'rebooting ipcop'}); + #system '/usr/local/bin/ipcoprebirth'; + system '/usr/local/bin/ipcopreboot boot'; +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'save'}) { + my $days=''; + my $n = 1; + # build list of days + map ($cgiparams{$_} eq 'on' ? $days .= ",".$n++ : $n++ , + ('MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY','SUNDAY') ); + + # if days is empty, it is a remove else it is a change + if (length ($days)){ + substr($days,0,1) = ''; #kill front comma + &General::log("Scheduling reboot on $days at $cgiparams{'TIME'}"); + my $min; + my $hour; + ($hour,$min) = split (':', $cgiparams{'TIME'}); + $days = "'*'" if ($days eq '1,2,3,4,5,6,7'); + my $mode = ($cgiparams{'MODE'} eq 'halt') ? '-h' : '-r'; + system "/usr/local/bin/ipcopreboot cron+ $min $hour $days $mode"; #reboot checks values of $hour & $min + } else { + &General::log("Remove scheduled reboot"); + system '/usr/local/bin/ipcopreboot cron-'; + } +} +if ($death == 0 && $rebirth == 0) { + + &Header::openpage($Lang::tr{'shutdown control'}, 1, ''); + + &Header::openbigbox('100%', 'left'); + + print "
    \n"; + + &Header::openbox('100%', 'left', $Lang::tr{'shutdown2'}); + print < + + + + + +END + ; + &Header::closebox(); + + &Header::openbox('100%', 'left', $Lang::tr{'reboot schedule'}); + my %checked=(); + my $reboot_at = $default_time; + my $days = ''; + + #decode the shutdown line stored in crontab + #get the line + open(FILE, "/usr/local/bin/ipcopreboot cron?|"); + my $schedule = ; + close (FILE); + + if ($schedule) { # something exist + $schedule =~ /(\d+) (\d+) \* \* ([1234567*,]+) .* (-[h|r])/; + $reboot_at = sprintf("%.02d",$2) . ':' . sprintf("%.02d",$1); # hour (03:45) + $days = $3; # 1,2,3... or * + if ($4 eq '-h') { + $checked{'MODE'}{'halt'} = "checked='checked'"; + } else { + $checked{'MODE'}{'reboot'} = "checked='checked'"; + } + } + #decode $days + if ($days eq '*') { + $checked{'MONDAY'} = "checked='checked'"; + $checked{'TUESDAY'} = "checked='checked'"; + $checked{'WEDNESDAY'} = "checked='checked'"; + $checked{'THURSDAY'} = "checked='checked'"; + $checked{'FRIDAY'} = "checked='checked'"; + $checked{'SATURDAY'} = "checked='checked'"; + $checked{'SUNDAY'} = "checked='checked'"; + } else { + $checked{'MONDAY'} = "checked='checked'" if ($days =~ /1/); + $checked{'TUESDAY'} = "checked='checked'" if ($days =~ /2/); + $checked{'WEDNESDAY'} = "checked='checked'" if ($days =~ /3/); + $checked{'THURSDAY'} = "checked='checked'" if ($days =~ /4/); + $checked{'FRIDAY'} = "checked='checked'" if ($days =~ /5/); + $checked{'SATURDAY'} = "checked='checked'" if ($days =~ /6/); + $checked{'SUNDAY'} = "checked='checked'" if ($days =~ /7/); + } + + print < + + $Lang::tr{'time'} + $Lang::tr{'day'} + $Lang::tr{'action'} + + +END + ; + print "", &select_hour_var("TIME", $reboot_at); + print < + + + + $Lang::tr{'monday'} + + + $Lang::tr{'reboot'} + + + + + $Lang::tr{'tuesday'} + + + $Lang::tr{'shutdown'} + +   + + + + $Lang::tr{'wednesday'} + +   + + + + $Lang::tr{'thursday'} + +   + + + + $Lang::tr{'friday'} + +   + + + + $Lang::tr{'saturday'} + +   + + + + $Lang::tr{'sunday'} + + + +
    + + + + + +
      + + + +
    + +END +; + &Header::closebox(); + print "\n"; +} else { + my $message=''; + my $title=''; + my $refresh = ""; + if ($death) { + $title = $Lang::tr{'shutting down'}; + $message = $Lang::tr{'ipcop has now shutdown'}; + } else { + $title = $Lang::tr{'rebooting'}; + $message = $Lang::tr{'ipcop has now rebooted'}; + } + &Header::openpage($title, 0, $refresh); + + &Header::openbigbox('100%', 'center'); + print < + + +
    +




    +
    +
    +$message + +END + ; +} + +&Header::closebigbox(); +&Header::closepage(); + + + +# Create a named select box containing valid times from quarter to quarter. +sub select_hour_var { + # Create a variable containing the SELECT with selected value variable name and current value selected + my $select_hour_var = shift; + my $selected_hour = shift; + + my $select_hour = "\n"; + return ($select_hour); +} diff --git a/html/cgi-bin/status.cgi b/html/cgi-bin/status.cgi new file mode 100644 index 0000000000..14899d4fb4 --- /dev/null +++ b/html/cgi-bin/status.cgi @@ -0,0 +1,325 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: status.cgi,v 1.6.2.7 2005/02/24 07:44:35 gespinasse Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::colourred} ); +undef (@dummy); + +my %netsettings=(); +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); + +my %cgiparams=(); +# Maps a nice printable name to the changing part of the pid file, which +# is also the name of the program +my %servicenames = +( + $Lang::tr{'dhcp server'} => 'dhcpd', + $Lang::tr{'web server'} => 'httpd', + $Lang::tr{'cron server'} => 'fcron', + $Lang::tr{'dns proxy server'} => 'dnsmasq', + $Lang::tr{'logging server'} => 'syslogd', + $Lang::tr{'kernel logging server'} => 'klogd', + $Lang::tr{'ntp server'} => 'ntpd', + $Lang::tr{'secure shell server'} => 'sshd', + $Lang::tr{'vpn'} => 'pluto', + $Lang::tr{'web proxy'} => 'squid' +); + +my $iface = ''; +if (open(FILE, "${General::swroot}/red/iface")) +{ + $iface = ; + close FILE; + chomp $iface; +} +$servicenames{"$Lang::tr{'intrusion detection system'} (RED)"} = "snort_${iface}"; +$servicenames{"$Lang::tr{'intrusion detection system'} (GREEN)"} = "snort_$netsettings{'GREEN_DEV'}"; +if ($netsettings{'ORANGE_DEV'} ne '') { + $servicenames{"$Lang::tr{'intrusion detection system'} (ORANGE)"} = "snort_$netsettings{'ORANGE_DEV'}"; +} +if ($netsettings{'BLUE_DEV'} ne '') { + $servicenames{"$Lang::tr{'intrusion detection system'} (BLUE)"} = "snort_$netsettings{'BLUE_DEV'}"; +} + +&Header::showhttpheaders(); + +&Header::getcgihash(\%cgiparams); + +&Header::openpage($Lang::tr{'status information'}, 1, ''); + +&Header::openbigbox('100%', 'left'); + +print < + + $Lang::tr{'services'} | + $Lang::tr{'memory'} | + $Lang::tr{'disk usage'} | + $Lang::tr{'uptime and users'} | + $Lang::tr{'loaded modules'} | + $Lang::tr{'kernel version'} + +END +; + +print "\n"; +&Header::openbox('100%', 'left', $Lang::tr{'services'}); + +print < + +END +; + +my $lines = 0; +my $key = ''; +foreach $key (sort keys %servicenames) +{ + if ($lines % 2) { + print "\n"; } + else { + print "\n"; } + print "\n"; + my $shortname = $servicenames{$key}; + my $status = &isrunning($shortname); + print "$status\n"; + print "\n"; + $lines++; +} + + +print "
    $key
    \n"; + +&Header::closebox(); + +print "
    \n"; +&Header::openbox('100%', 'left', $Lang::tr{'memory'}); +print ""; + my $pid = ''; + my $testcmd = ''; + my $exename; + + $cmd =~ /(^[a-z]+)/; + $exename = $1; + + if (open(FILE, "/var/run/${cmd}.pid")) + { + $pid = ; chomp $pid; + close FILE; + if (open(FILE, "/proc/${pid}/status")) + { + while () + { + if (/^Name:\W+(.*)/) { + $testcmd = $1; } + } + close FILE; + if ($testcmd =~ /$exename/) + { + $status = ""; + } + } + } + + return $status; +} + +sub percentbar +{ + my $percent = $_[0]; + my $fg = '#a0a0a0'; + my $bg = '#e2e2e2'; + + if ($percent =~ m/^(\d+)%$/ ) + { + print < + +END +; + if ($percent eq "100%") { + print "
    "; +my $ram=0; +my $size=0; +my $used=0; +my $free=0; +my $percent=0; +my $shared=0; +my $buffers=0; +my $cached=0; +open(FREE,'/usr/bin/free |'); +while() +{ + if ($_ =~ m/^\s+total\s+used\s+free\s+shared\s+buffers\s+cached$/ ) + { + print < + + + + + + +END +; + } else { + if ($_ =~ m/^Mem:\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)$/) { + ($ram,$size,$used,$free,$shared,$buffers,$cached) = ($1,$1,$2,$3,$4,$5,$6); + ($percent = ($used/$size)*100) =~ s/^(\d+)(\.\d+)?$/$1%/; + print < + + +END +; + } elsif ($_ =~ m/^Swap:\s+(\d+)\s+(\d+)\s+(\d+)$/) { + ($size,$used,$free) = ($1,$2,$3); + if ($size != 0) + { + ($percent = ($used/$size)*100) =~ s/^(\d+)(\.\d+)?$/$1%/; + } else { + ($percent = ''); + } + print < + + +END +; + } elsif ($ram and $_ =~ m/^-\/\+ buffers\/cache:\s+(\d+)\s+(\d+)$/ ) { + ($used,$free) = ($1,$2); + ($percent = ($used/$ram)*100) =~ s/^(\d+)(\.\d+)?$/$1%/; + print "" + } + print <$used + + + +END +; + } +} +close FREE; +print <
     $Lang::tr{'size'}$Lang::tr{'used'}$Lang::tr{'free'}$Lang::tr{'percentage'}
    $Lang::tr{'ram'}$size$Lang::tr{'swap'}$size
    $Lang::tr{'excluding buffers and cache'}$free +END +; + &percentbar($percent); + print < +$percent
    + + + + +
    $Lang::tr{'shared'}$shared
    $Lang::tr{'buffers'}$buffers
    $Lang::tr{'cached'}$cached
    +
    +END +; +&Header::closebox(); + +print "\n"; +&Header::openbox('100%', 'left', $Lang::tr{'disk usage'}); +print "\n"; +open(DF,'/bin/df -B M -x rootfs|'); +while() +{ + if ($_ =~ m/^Filesystem/ ) + { + print < + + + + + + + +END +; + } + else + { + my ($device,$size,$used,$free,$percent,$mount) = split; + print < + + + + + + + +END +; + } +} +close DF; +print "
    $Lang::tr{'device'}$Lang::tr{'mounted on'}$Lang::tr{'size'}$Lang::tr{'used'}$Lang::tr{'free'}$Lang::tr{'percentage'}
    $device$mount$size$used$free +END +; + &percentbar($percent); + print < +$percent
    \n"; +&Header::closebox(); + +print "
    \n"; +&Header::openbox('100%', 'left', $Lang::tr{'uptime and users'}); +my $output = `/usr/bin/w`; +$output = &Header::cleanhtml($output,"y"); +print "
    $output
    \n"; +&Header::closebox(); + +print "
    \n"; +&Header::openbox('100%', 'left', $Lang::tr{'loaded modules'}); +$output = qx+/sbin/lsmod+; +($output = &Header::cleanhtml($output,"y")) =~ s/\[.*\]//g; +print "
    \n$output\n
    \n"; +&Header::closebox(); + +print "
    \n"; +&Header::openbox('100%', 'left', $Lang::tr{'kernel version'}); +print "
    \n";
    +print `/bin/uname -a`;
    +print "
    \n"; +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); + +sub isrunning +{ + my $cmd = $_[0]; + my $status = "
    $Lang::tr{'stopped'}$Lang::tr{'running'}
    " + } elsif ($percent eq "0%") { + print "" + } else { + print "" + } + print <
    +END +; + } +} diff --git a/html/cgi-bin/time.cgi b/html/cgi-bin/time.cgi new file mode 100644 index 0000000000..4f4a739f32 --- /dev/null +++ b/html/cgi-bin/time.cgi @@ -0,0 +1,391 @@ +#!/usr/bin/perl +# +# IPCop CGIs +# +# This file is part of the IPCop Project +# +# This code is distributed under the terms of the GPL +# +# (c) Eric Oberlander June 2002 +# +# (c) Darren Critchley June 2003 - added real time clock setting, etc +# +# $Id: time.cgi,v 1.4.2.11 2005/05/28 12:16:18 eoberlander Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %timesettings=(); +my $errormessage = ''; + +&Header::showhttpheaders(); + +$timesettings{'ACTION'} = ''; +$timesettings{'VALID'} = ''; + +$timesettings{'ENABLENTP'} = 'off'; +$timesettings{'NTP_ADDR_1'} = ''; +$timesettings{'NTP_ADDR_2'} = ''; +$timesettings{'UPDATE_METHOD'} = 'manually'; +$timesettings{'UPDATE_VALUE'} = '0'; +$timesettings{'UPDATE_PERIOD'} = ''; +$timesettings{'ENABLECLNTP'} = 'off'; +$timesettings{'SETHOUR'} = ''; +$timesettings{'SETMINUTES'} = ''; +$timesettings{'SETDAY'} = ''; +$timesettings{'SETMONTH'} = ''; +$timesettings{'SETYEAR'} = ''; + +&Header::getcgihash(\%timesettings); + +if ($timesettings{'ACTION'} eq $Lang::tr{'instant update'}) +{ + if ($timesettings{'SETHOUR'} eq '' || $timesettings{'SETHOUR'} < 0 || $timesettings{'SETHOUR'} > 23) { + $errormessage = $Lang::tr{'invalid time entered'}; + goto UPDTERROR; + } + if ($timesettings{'SETMINUTES'} eq '' || $timesettings{'SETMINUTES'} < 0 || $timesettings{'SETMINUTES'} > 59) { + $errormessage = $Lang::tr{'invalid time entered'}; + goto UPDTERROR; + } + if ($timesettings{'SETDAY'} eq '' || $timesettings{'SETDAY'} < 1 || $timesettings{'SETDAY'} > 31) { + $errormessage = $Lang::tr{'invalid date entered'}; + goto UPDTERROR; + } + if ($timesettings{'SETMONTH'} eq '' || $timesettings{'SETMONTH'} < 1 || $timesettings{'SETMONTH'} > 12) { + $errormessage = $Lang::tr{'invalid date entered'}; + goto UPDTERROR; + } + if ($timesettings{'SETYEAR'} eq '' || $timesettings{'SETYEAR'} < 2003 || $timesettings{'SETYEAR'} > 2030) { + $errormessage = $Lang::tr{'invalid date entered'}; + goto UPDTERROR; + } + +UPDTERROR: + if ($errormessage) { + $timesettings{'VALID'} = 'no'; } + else { + $timesettings{'VALID'} = 'yes'; } + + if ($timesettings{'VALID'} eq 'yes') { + # we want date in YYYY-MM-DD HH:MM format for date command + # EAO changed datestring to ISO 6801 format 2003-08-11 + my $datestring = "$timesettings{'SETYEAR'}-$timesettings{'SETMONTH'}-$timesettings{'SETDAY'}"; + my $timestring = "$timesettings{'SETHOUR'}:$timesettings{'SETMINUTES'}"; + # EAO setdate.c also revised for ISO 6801 date format 2003-08-11 + system ('/usr/local/bin/setdate', $datestring, $timestring); + &General::log("$Lang::tr{'time date manually reset'} $datestring $timestring"); + } + unless ($errormessage) { + undef %timesettings; + } +} + +if ($timesettings{'ACTION'} eq $Lang::tr{'save'}) +{ + if ($timesettings{'ENABLENTP'} eq 'on') + { + if ( ! ( &General::validfqdn($timesettings{'NTP_ADDR_1'}) || + &General::validip ($timesettings{'NTP_ADDR_1'}))) + { + $errormessage = $Lang::tr{'invalid primary ntp'}; + goto ERROR; + } + } + if ($timesettings{'NTP_ADDR_2'}) + { + if ( ! ( &General::validfqdn($timesettings{'NTP_ADDR_2'}) || + &General::validip ($timesettings{'NTP_ADDR_2'}))) + { + $errormessage = $Lang::tr{'invalid secondary ntp'}; + goto ERROR; + } + } + if (!($timesettings{'NTP_ADDR_1'}) && $timesettings{'NTP_ADDR_2'}) + { + $errormessage = $Lang::tr{'cannot specify secondary ntp without specifying primary'}; + goto ERROR; + } + + if (!($timesettings{'UPDATE_VALUE'} =~ /^\d+$/) || $timesettings{'UPDATE_VALUE'} <= 0) + { + $errormessage = $Lang::tr{'invalid time period'}; + goto ERROR; + } + + if ($timesettings{'ENABLENTP'} ne "on" && $timesettings{'ENABLECLNTP'} eq "on") + { + $errormessage = $Lang::tr{'ntp must be enabled to have clients'}; + goto ERROR; + } + if ($timesettings{'ENABLENTP'} eq "on" && !($timesettings{'NTP_ADDR_1'}) && !($timesettings{'NTP_ADDR_2'})) + { + $errormessage = $Lang::tr{'cannot enable ntp without specifying primary'}; + goto ERROR; + } +ERROR: + if ($errormessage) { + $timesettings{'VALID'} = 'no'; } + else { + $timesettings{'VALID'} = 'yes'; } + + &General::writehash("${General::swroot}/time/settings", \%timesettings); + open(FILE, ">/${General::swroot}/time/settime.conf") or die "Unable to write settime.conf file"; + flock(FILE, 2); + print FILE "$timesettings{'NTP_ADDR_1'} $timesettings{'NTP_ADDR_2'}\n"; + close FILE; + + my $updateperiod=0; + + if ($timesettings{'UPDATE_PERIOD'} eq 'daily') { + $updateperiod = $timesettings{'UPDATE_VALUE'} * 1440; } + elsif ($timesettings{'UPDATE_PERIOD'} eq 'weekly') { + $updateperiod = $timesettings{'UPDATE_VALUE'} * 10080; } + elsif ($timesettings{'UPDATE_PERIOD'} eq 'monthly') { + $updateperiod = $timesettings{'UPDATE_VALUE'} * 40320; } + else { + $updateperiod = $timesettings{'UPDATE_VALUE'} * 60; } + + $updateperiod = $updateperiod - 5; + + if ($updateperiod <= 5) { + $updateperiod = 5; } + + open(FILE, ">/${General::swroot}/time/counter.conf") or die "Unable to write counter.conf file"; + flock(FILE, 2); + print FILE "$updateperiod\n"; + close FILE; + + if ($timesettings{'ENABLENTP'} eq 'on' && $timesettings{'VALID'} eq 'yes') + { + system ('/bin/touch', "${General::swroot}/time/enable"); + &General::log($Lang::tr{'ntp syncro enabled'}); + unlink "${General::swroot}/time/counter"; + if ($timesettings{'UPDATE_METHOD'} eq 'periodically') + { + open(FILE, ">/${General::swroot}/time/counter") or die "Unable to write counter file"; + flock(FILE, 2); + print FILE "$updateperiod\n"; + close FILE; + } + if ($timesettings{'ENABLECLNTP'} eq 'on') # DPC added to 1.3.1 + { + system ('/bin/touch', "${General::swroot}/time/allowclients"); # DPC added to 1.3.1 + &General::log($Lang::tr{'ntpd restarted'}); # DPC added to 1.3.1 + } else { + unlink "${General::swroot}/time/allowclients"; + } + + } + else + { + unlink "${General::swroot}/time/enable"; + unlink "${General::swroot}/time/settimenow"; + unlink "${General::swroot}/time/allowclients"; # DPC added to 1.3.1 + &General::log($Lang::tr{'ntp syncro disabled'}) + } + if (! $errormessage) { + system ('/usr/local/bin/restartntpd'); # DPC added to 1.3.1 + } +} + +# To enter an ' into a pushbutton solution is to use ' in it's definition +# but returned value when pressed is ' not the code. Cleanhtml recode the ' to enable comparison. +$timesettings{'ACTION'} = &Header::cleanhtml ($timesettings{'ACTION'}); +if ($timesettings{'ACTION'} eq $Lang::tr{'set time now'} && $timesettings{'ENABLENTP'} eq 'on') +{ + system ('/bin/touch', "${General::swroot}/time/settimenow"); +} + +&General::readhash("${General::swroot}/time/settings", \%timesettings); + +if ($timesettings{'VALID'} eq '') +{ + $timesettings{'ENABLENTP'} = 'off'; + $timesettings{'UPDATE_METHOD'} = 'manually'; + $timesettings{'UPDATE_VALUE'} = '1'; + $timesettings{'UPDATE_PERIOD'} = 'daily'; + $timesettings{'NTP_ADDR_1'} = 'pool.ntp.org'; + $timesettings{'NTP_ADDR_2'} = 'pool.ntp.org'; +} + +unless ($errormessage) { + $timesettings{'SETMONTH'} = `date +'%m %e %Y %H %M'|cut -c 1-2`; + $timesettings{'SETDAY'} = `date +'%m %e %Y %H %M'|cut -c 4-5`; + $timesettings{'SETYEAR'} = `date +'%m %e %Y %H %M'|cut -c 7-10`; + $timesettings{'SETHOUR'} = `date +'%m %e %Y %H %M'|cut -c 12-13`; + $timesettings{'SETMINUTES'} = `date +'%m %e %Y %H %M'|cut -c 15-16`; + $_=$timesettings{'SETDAY'}; + $timesettings{'SETDAY'}=~ tr/ /0/; +} + +my %selected=(); +my %checked=(); + +$checked{'ENABLENTP'}{'off'} = ''; +$checked{'ENABLENTP'}{'on'} = ''; +$checked{'ENABLENTP'}{$timesettings{'ENABLENTP'}} = "checked='checked'"; + +$checked{'ENABLECLNTP'}{'off'} = ''; +$checked{'ENABLECLNTP'}{'on'} = ''; +$checked{'ENABLECLNTP'}{$timesettings{'ENABLECLNTP'}} = "checked='checked'"; + +$checked{'UPDATE_METHOD'}{'manually'} = ''; +$checked{'UPDATE_METHOD'}{'periodically'} = ''; +$checked{'UPDATE_METHOD'}{$timesettings{'UPDATE_METHOD'}} = "checked='checked'"; + +$selected{'UPDATE_PERIOD'}{'hourly'} = ''; +$selected{'UPDATE_PERIOD'}{'daily'} = ''; +$selected{'UPDATE_PERIOD'}{'weekly'} = ''; +$selected{'UPDATE_PERIOD'}{'monthly'} = ''; +$selected{'UPDATE_PERIOD'}{$timesettings{'UPDATE_PERIOD'}} = "selected='selected'"; + +# added to v0.0.4 to refresh screen if syncro event queued +my $refresh = ''; +if ( -e "${General::swroot}/time/settimenow") { + $refresh = ""; +} + +&Header::openpage($Lang::tr{'ntp configuration'}, 1, $refresh); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +# DPC move error message to top so it is seen! +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); + } + +print "
    \n"; + +&Header::openbox('100%', 'left', $Lang::tr{'network time'}); +print < + + + $Lang::tr{'network time from'} + + +   + +END +; + +if ( -e "${General::swroot}/time/lastset") +{ + print "$Lang::tr{'clock last synchronized at'}\n"; + my $output = `cat ${General::swroot}/time/lastset`; + print $output; +} +else +{ + print "$Lang::tr{'clock has not been synchronized'}\n"; +} + +print < + +   + $Lang::tr{'primary ntp server'}: + + $Lang::tr{'secondary ntp server'}:  * + + + +   + $Lang::tr{'clenabled'} + + + + + + + + + + + + + + + + + + + + +END +; + +if ( -e "${General::swroot}/time/settimenow") { + print "\n\n"; + print "\n"; +} +print < +
    +
    +

    $Lang::tr{'update time'}
     $Lang::tr{'set time now help'}
    $Lang::tr{'every'}: +  
    $Lang::tr{'manually'}
    $Lang::tr{'waiting to synchronize clock'}...
    + + + + + + +
    * $Lang::tr{'this field may be blank'} + +
    +END +; + +&Header::closebox(); + +&Header::openbox('100%', 'left', $Lang::tr{'update time'}); + +print < + + + + + + + + + + + + + + + +
    $Lang::tr{'year'}:  $Lang::tr{'month'}:  $Lang::tr{'day'}:     $Lang::tr{'hours2'}:  $Lang::tr{'minutes'}: 
    + + + + +END +; +&Header::closebox(); + +print "\n"; + +&Header::closebigbox(); + +&Header::closepage(); + diff --git a/html/cgi-bin/updates.cgi b/html/cgi-bin/updates.cgi new file mode 100644 index 0000000000..d8abb6612d --- /dev/null +++ b/html/cgi-bin/updates.cgi @@ -0,0 +1,269 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: updates.cgi,v 1.9.2.22 2005/12/01 20:41:53 franck78 Exp $ +# + +use LWP::UserAgent; +use File::Copy; +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( $General::version ); +undef (@dummy); +my $warnmessage=''; +my $errormessage=''; +my @av=(''); +my @pf=(''); + +&Header::showhttpheaders(); + +my %uploadsettings=(); +$uploadsettings{'ACTION'} = ''; + +&Header::getcgihash(\%uploadsettings, {'wantfile' => 1, 'filevar' => 'FH'}); + +if ($uploadsettings{'ACTION'} eq $Lang::tr{'upload'}) { +# This code do not serve a lot because $General::version cannot change while the module is loaded. So no change +# can appear. More, this call should be called 'after' update is done ! +# my $return = &downloadlist(); +# if ($return && $return->is_success) { +# if (open(LIST, ">${General::swroot}/patches/available")){ +# flock LIST, 2; +# my @this = split(/----START LIST----\n/,$return->content); +# print LIST $this[1]; +# close(LIST); +# } else { +# $errormessage = $Lang::tr{'could not open available updates file'}; +# } +# } else { +# if (open(LIST, "<${General::swroot}/patches/available")) { +# my @list = ; +# close(LIST); +# } +# $warnmessage = $Lang::tr{'could not download the available updates list'}; +# } + + + if (copy ($uploadsettings{'FH'}, "/var/patches/patch-$$.tar.gz.gpg") != 1) { + $errormessage = $!; + } else { + my $exitcode = system("/usr/local/bin/installpackage $$ > /dev/null") >> 8; + if ($exitcode == 0) { + #Hack to get correct version displayed after update + open (XX,"perl -e \"require'${General::swroot}/general-functions.pl';print \\\$General::version\"|"); + $General::version=; + close (XX); + &General::log("$Lang::tr{'the following update was successfully installed'} ($General::version)"); + } + elsif($exitcode == 2) { + $errormessage = "$Lang::tr{'could not create directory'}"; + } + elsif($exitcode == 3) { + $errormessage = "$Lang::tr{'this is not an authorised update'}"; + } + elsif($exitcode == 4) { + $errormessage = "$Lang::tr{'this is not a valid archive'}"; + } + elsif($exitcode == 5) { + $errormessage = "$Lang::tr{'could not open update information file'}"; + } + elsif($exitcode == 6) { + $errormessage = "$Lang::tr{'could not open installed updates file'}"; + } + elsif($exitcode == 7) { + $errormessage = "$Lang::tr{'this update is already installed'}"; + } + elsif($exitcode == 11) { + $errormessage = "$Lang::tr{'not enough disk space'}"; + } else { + $errormessage = "$Lang::tr{'package failed to install'}"; + } + } +} +elsif ($uploadsettings{'ACTION'} eq $Lang::tr{'refresh update list'}) { + my $return = &downloadlist(); + if ($return && $return->is_success) { + if (open(LIST, ">${General::swroot}/patches/available")) { + flock LIST, 2; + my @this = split(/----START LIST----\n/,$return->content); + print LIST $this[1]; + close(LIST); + &General::log($Lang::tr{'successfully refreshed updates list'}); + } else { + $errormessage = $Lang::tr{'could not open available updates file'}; + } + } else { + $errormessage = $Lang::tr{'could not download the available updates list'}; + } +} +elsif ($uploadsettings{'ACTION'} eq "$Lang::tr{'clear cache'} (squid)") { + system('/usr/local/bin/restartsquid','-f'); +} + +if (!open(AV, "<${General::swroot}/patches/available")) { + $errormessage = $Lang::tr{'could not open available updates file'}; +} else { + @av = ; + close(AV); +} +if (!open (PF, "<${General::swroot}/patches/installed")) { + $errormessage = $Lang::tr{'could not open installed updates file'}; +} else { + @pf = ; + close (PF); + #substract installed patch from list displayed (AV list may not be updated) + foreach my $P (@pf) { + $P =~ /^(...)/; + my $order=$1; + my $idx=0; + foreach my $A (@av) { + $A =~ /^(...)/; + if ($1 eq $order) { # match + splice (@av,$idx,1); + last; + } + $idx++; + } + } +} + +&Header::openpage($Lang::tr{'updates'}, 1, ''); + +&Header::openbigbox('100%', 'left', 'download.png', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print $errormessage; + print " "; + &Header::closebox(); +} + +if ($warnmessage) { + &Header::openbox('100%', 'LEFT', "$Lang::tr{'warning messages'}:"); + print "$warnmessage \n"; + print " \n"; + &Header::closebox(); +} + + +&Header::openbox('100%', 'left', $Lang::tr{'available updates'}); + +if ( defined $av[0] ) { + print $Lang::tr{'there are updates available'}; + print qq| + + + + + + + +|; + foreach (@av) { + my @temp = split(/\|/,$_); + print ""; + } + print "
    $Lang::tr{'id'}$Lang::tr{'title'}$Lang::tr{'description'}$Lang::tr{'released'} 
    $temp[0]$temp[1]$temp[2]$temp[3]$Lang::tr{'info'}
    "; + + +} else { + print $Lang::tr{'all updates installed'}; +} + +print qq|

    +$Lang::tr{'to install an update'} +
    +
    + + + + +
    +$Lang::tr{'upload update file'} +
    |; + +print "$Lang::tr{'disk usage'}"; +open (XX,'df -h / /var/log|'); +my @df=; +close (XX); +print ""; +map ( $_ =~ s/ +/"; +print ""; +print ""; +print "
    /g,@df); # tablify each line! +print "
    $df[0]
    $df[1]
    $df[2]
    "; + +print "\n
    "; +print "\n\n"; +print "\n\t"; +print "\n\t"; +print "\n
     
    \n"; +print ""; + +&Header::closebox(); + +&Header::openbox('100%', 'LEFT', $Lang::tr{'installed updates'}); + +print qq| + + + + + + + +|; + +foreach my $pf (@pf) { + next if $pf =~ m/^#/; + my @temp = split(/\|/,$pf); +#??? @av = grep(!/^$temp[0]/, @av); + print ""; +} +close(PF); + +print "
    $Lang::tr{'id'}$Lang::tr{'title'}$Lang::tr{'description'}$Lang::tr{'released'}$Lang::tr{'installed'}
    " . join("",@temp) . "
    "; + +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); + +sub downloadlist { + unless (-e "${General::swroot}/red/active") { + return 0; + } + + my $downloader = LWP::UserAgent->new; + $downloader->timeout(5); + + my %proxysettings=(); + &General::readhash("${General::swroot}/proxy/settings", \%proxysettings); + + if ($_=$proxysettings{'UPSTREAM_PROXY'}) { + my ($peer, $peerport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/); + if ($proxysettings{'UPSTREAM_USER'}) { + $downloader->proxy("http","http://$proxysettings{'UPSTREAM_USER'}:$proxysettings{'UPSTREAM_PASSWORD'}@"."$peer:$peerport/"); + } else { + $downloader->proxy("http","http://$peer:$peerport/"); + } + } + + return $downloader->get("http://www.ipcop.org/patches/${General::version}", 'Cache-Control', 'no-cache'); + +} diff --git a/html/cgi-bin/upload.cgi b/html/cgi-bin/upload.cgi new file mode 100644 index 0000000000..59395fe903 --- /dev/null +++ b/html/cgi-bin/upload.cgi @@ -0,0 +1,187 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# +# $Id: upload.cgi,v 1.2.2.21 2005/08/14 23:43:38 gespinasse Exp $ +# + +use File::Copy; +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %uploadsettings=(); +my $errormessage = ''; + +&Header::showhttpheaders(); +$uploadsettings{'ACTION'} = ''; + +&Header::getcgihash(\%uploadsettings, {'wantfile' => 1, 'filevar' => 'FH'}); + +my $extraspeedtouchmessage=''; +my $extrafritzdslmessage=''; +my $extraeciadslmessage=''; +my $modem=''; +my $firmwarename=''; +my $kernel=''; + +my $speedtouch = &Header::speedtouchversion; +if ($speedtouch == 4) { + $modem='v4_b'; + $firmwarename="$Lang::tr{'upload'} ZZZL_3.012"; +} else { + $modem='v0123'; + $firmwarename="$Lang::tr{'upload'} KQD6_3.012"; +} + +$kernel=`/bin/uname -r | /usr/bin/tr -d '\012'`; + +if ($uploadsettings{'ACTION'} eq $firmwarename) { + if ($modem eq 'v0123' || $modem eq 'v4_b') { + if (copy ($uploadsettings{'FH'}, "${General::swroot}/alcatelusb/firmware.$modem.bin") != 1) { + $errormessage = $!; + } else { + $extraspeedtouchmessage = $Lang::tr{'upload successful'}; + } + } +} +elsif ($uploadsettings{'ACTION'} eq "$Lang::tr{'upload'} fcdsl-${General::version}.tgz") +{ + if (copy ($uploadsettings{'FH'}, "/var/patches/fcdsl-x.tgz") != 1) { + $errormessage = $!; + } else { + $extrafritzdslmessage = $Lang::tr{'upload successful'}; + } +} +elsif ($uploadsettings{'ACTION'} eq $Lang::tr{'upload synch.bin'}) +{ + if (copy ($uploadsettings{'FH'}, "${General::swroot}/eciadsl/synch.bin") != 1) { + $errormessage = $!; + } else { + $extraeciadslmessage = $Lang::tr{'upload successful'}; + } +} + +&Header::openpage($Lang::tr{'firmware upload'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage \n"; + &Header::closebox(); +} +print "
    \n"; + +&Header::openbox('100%','left', $Lang::tr{'alcatelusb upload'}); +print < + + $Lang::tr{'alcatelusb help'}
    + URL:
    http://www.speedtouch.com/support.htm + + +$Lang::tr{'modem'}: Rev $speedtouch + + $Lang::tr{'upload file'}:  + + + +END +; +if (-e "${General::swroot}/alcatelusb/firmware.$modem.bin") { + if ($extraspeedtouchmessage ne '') { + print ("$extraspeedtouchmessage"); + } else { + print ("$Lang::tr{'present'}"); + } +} else { + print ("$Lang::tr{'not present'}"); +} +print < + +END +; + +&Header::closebox(); + +&Header::openbox('100%','left', $Lang::tr{'eciadsl upload'}); +print < + + $Lang::tr{'eciadsl help'}
    + URL: http://eciadsl.flashtux.org/ + + + + $Lang::tr{'upload file'}:  + + + +END +; +if (-e "${General::swroot}/eciadsl/synch.bin") { + if ($extraeciadslmessage ne '') { + print ("$extraeciadslmessage"); + } else { + print ("$Lang::tr{'present'}"); + } +} else { + print ("$Lang::tr{'not present'}"); +} +print < + +END +; +&Header::closebox(); + +&Header::openbox('100%','left', $Lang::tr{'fritzdsl upload'}); +print < + + $Lang::tr{'fritzdsl help'}
    + URL: http://www.ipcop.org/ + + + + $Lang::tr{'upload file'}:  + + + +END +; +if ($extrafritzdslmessage ne '') { + print ("$extrafritzdslmessage 
    ");
    +	print `/usr/local/bin/installfcdsl`;
    +	print ("
    "); +} else { + if (-e "/lib/modules/$kernel/misc/fcdsl.o.gz") { + print ("$Lang::tr{'present'}"); + } else { + print ("$Lang::tr{'not present'}"); + } +} +print < + +END +; +&Header::closebox(); + +print "\n"; + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/cgi-bin/vpnmain.cgi b/html/cgi-bin/vpnmain.cgi new file mode 100644 index 0000000000..1aa7984b65 --- /dev/null +++ b/html/cgi-bin/vpnmain.cgi @@ -0,0 +1,2580 @@ +#!/usr/bin/perl +# +# This file is part of the IPCop Firewall. +# +# IPCop is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# IPCop is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with IPCop; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Copyright (C) 2003-05-25 Mark Wormgoor +# +# $Id: vpnmain.cgi,v 1.10.2.69 2006/01/31 02:07:19 franck78 Exp $ +# + +use Net::DNS; +use File::Copy; +use File::Temp qw/ tempfile tempdir /; +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +require "${General::swroot}/countries.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::colourgreen} ); +undef (@dummy); + +### +### Initialize variables +### +my $sleepDelay = '4s'; # after a call to ipsecctrl S or R, wait this delay (seconds) before reading status + # (let the ipsec do its job) +my %netsettings=(); +my %cgiparams=(); +my %vpnsettings=(); +my %checked=(); +my %confighash=(); +my %cahash=(); +my %selected=(); +my $warnmessage = ''; +my $errormessage = ''; +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); +$cgiparams{'ENABLED'} = 'off'; +$cgiparams{'ENABLED_BLUE'} = 'off'; +$cgiparams{'EDIT_ADVANCED'} = 'off'; +$cgiparams{'NAT'} = 'off'; +$cgiparams{'COMPRESSION'} = 'off'; +$cgiparams{'ONLY_PROPOSED'} = 'off'; +$cgiparams{'ACTION'} = ''; +$cgiparams{'CA_NAME'} = ''; +$cgiparams{'DBG_CRYPT'} = ''; +$cgiparams{'DBG_PARSING'} = ''; +$cgiparams{'DBG_EMITTING'} = ''; +$cgiparams{'DBG_CONTROL'} = ''; +$cgiparams{'DBG_KLIPS'} = ''; +$cgiparams{'DBG_DNS'} = ''; +$cgiparams{'DBG_NAT_T'} = ''; + +&Header::getcgihash(\%cgiparams, {'wantfile' => 1, 'filevar' => 'FH'}); + +### +### Useful functions +### +sub valid_dns_host { + my $hostname = $_[0]; + unless ($hostname) { return "No hostname"}; + my $res = new Net::DNS::Resolver; + my $query = $res->search("$hostname"); + if ($query) { + foreach my $rr ($query->answer) { + ## Potential bug - we are only looking at A records: + return 0 if $rr->type eq "A"; + } + } else { + return $res->errorstring; + } +} + +# +# old version: maintain serial number to one, without explication. +# this : let the counter go, so that each cert is numbered. +# +sub cleanssldatabase +{ + if (open(FILE, ">${General::swroot}/certs/serial")) { + print FILE "01"; + close FILE; + } + if (open(FILE, ">${General::swroot}/certs/index.txt")) { + print FILE ""; + close FILE; + } + unlink ("${General::swroot}/certs/index.txt.old"); + unlink ("${General::swroot}/certs/serial.old"); + unlink ("${General::swroot}/certs/01.pem"); +} +sub newcleanssldatabase +{ + if (! -s "${General::swroot}/certs/serial" ) { + open(FILE, ">${General::swroot}/certs/serial"); + print FILE "01"; + close FILE; + } + if (! -s ">${General::swroot}/certs/index.txt") { + system ("touch ${General::swroot}/certs/index.txt"); + } + unlink ("${General::swroot}/certs/index.txt.old"); + unlink ("${General::swroot}/certs/serial.old"); +# unlink ("${General::swroot}/certs/01.pem"); numbering evolves. Wrong place to delete +} + +sub writeipsecfiles { + my %lconfighash = (); + my %lvpnsettings = (); + &General::readhasharray("${General::swroot}/vpn/config", \%lconfighash); + &General::readhash("${General::swroot}/vpn/settings", \%lvpnsettings); + + open(CONF, ">${General::swroot}/vpn/ipsec.conf") or die "Unable to open ${General::swroot}/vpn/ipsec.conf: $!"; + open(SECRETS, ">${General::swroot}/vpn/ipsec.secrets") or die "Unable to open ${General::swroot}/vpn/ipsec.secrets: $!"; + flock CONF, 2; + flock SECRETS, 2; + print CONF "config setup\n"; + if ($lvpnsettings{'ENABLED_BLUE'} eq 'on') + { + if ($lvpnsettings{'ENABLED'} eq 'on') + { + print CONF "\tinterfaces=\"%defaultroute ipsec1=$netsettings{'BLUE_DEV'}\"\n"; + } else { + print CONF "\tinterfaces=ipsec0=$netsettings{'BLUE_DEV'}\n"; + } + } else { + print CONF "\tinterfaces=%defaultroute\n"; + } + + my $plutodebug = ''; # build debug list + map ($plutodebug .= $lvpnsettings{$_} eq 'on' ? lc (substr($_,4)).' ' : '', + ('DBG_CRYPT','DBG_PARSING','DBG_EMITTING','DBG_CONTROL', + 'DBG_KLIPS','DBG_DNS','DBG_NAT_T')); + $plutodebug = 'none' if $plutodebug eq ''; # if nothing selected, use 'none'. + print CONF "\tklipsdebug=none\n"; + print CONF "\tplutodebug=\"$plutodebug\"\n"; + print CONF "\tplutoload=%search\n"; + print CONF "\tplutostart=%search\n"; + print CONF "\tuniqueids=yes\n"; + print CONF "\tnat_traversal=yes\n"; + print CONF "\toverridemtu=$lvpnsettings{'VPN_OVERRIDE_MTU'}\n" if ($lvpnsettings{'VPN_OVERRIDE_MTU'} ne ''); + print CONF "\tvirtual_private=%v4:10.0.0.0/8,%v4:172.16.0.0/12,%v4:192.168.0.0/16"; + print CONF ",%v4:!$netsettings{'GREEN_NETADDRESS'}/$netsettings{'GREEN_NETMASK'}"; + if (length($netsettings{'ORANGE_DEV'}) > 2) { + print CONF ",%v4:!$netsettings{'ORANGE_NETADDRESS'}/$netsettings{'ORANGE_NETMASK'}"; + } + if (length($netsettings{'BLUE_DEV'}) > 2) { + print CONF ",%v4:!$netsettings{'BLUE_NETADDRESS'}/$netsettings{'BLUE_NETMASK'}"; + } + foreach my $key (keys %lconfighash) { + if ($lconfighash{$key}[3] eq 'net') { + print CONF ",%v4:!$lconfighash{$key}[11]"; + } + } + print CONF "\n\n"; + print CONF "conn %default\n"; + print CONF "\tkeyingtries=0\n"; + print CONF "\tdisablearrivalcheck=no\n"; + print CONF "\n"; + + if (-f "${General::swroot}/certs/hostkey.pem") { + print SECRETS ": RSA ${General::swroot}/certs/hostkey.pem\n" + } + + foreach my $key (keys %lconfighash) { + if ($lconfighash{$key}[0] eq 'on') { + if ($lconfighash{$key}[10] eq '') { $lconfighash{$key}[10] = '%any'; } + + print CONF "conn $lconfighash{$key}[1]\n"; + #always choose LEFT localside for roadwarrior + if ($lconfighash{$key}[3] eq 'host' || $lconfighash{$key}[6] eq 'left') { + if ($lconfighash{$key}[26] eq 'BLUE') + { + print CONF "\tleft=$netsettings{'BLUE_ADDRESS'}\n"; +# print CONF "\tleftnexthop=$netsettings{'BLUE_NETADDRESS'}\n"; + } + elsif ($lconfighash{$key}[26] eq 'ORANGE') + { + print CONF "\tleft=$netsettings{'ORANGE_ADDRESS'}\n"; + } + elsif ($lconfighash{$key}[26] eq 'GREEN') + { + print CONF "\tleft=$netsettings{'GREEN_ADDRESS'}\n"; + } + elsif ($lconfighash{$key}[26] eq 'RED') + { + print CONF "\tleft=$lvpnsettings{'VPN_IP'}\n"; + print CONF "\tleftnexthop=%defaultroute\n" if ($lvpnsettings{'VPN_IP'} ne '%defaultroute'); + } + print CONF "\tleftsubnet=$lconfighash{$key}[8]\n"; + print CONF "\tright=$lconfighash{$key}[10]\n"; + if ($lconfighash{$key}[3] eq 'net') { + print CONF "\trightsubnet=$lconfighash{$key}[11]\n"; + print CONF "\trightnexthop=%defaultroute\n"; + } elsif ($lconfighash{$key}[10] eq '%any' && $lconfighash{$key}[14] eq 'on') { + print CONF "\trightsubnet=vhost:%no,%priv\n"; + } + if ($lconfighash{$key}[4] eq 'cert') { + print CONF "\tleftcert=${General::swroot}/certs/hostcert.pem\n"; + print CONF "\trightcert=${General::swroot}/certs/$lconfighash{$key}[1]cert.pem\n"; + } + } else { + print CONF "\tright=$lvpnsettings{'VPN_IP'}\n"; + print CONF "\trightsubnet=$lconfighash{$key}[8]\n"; + print CONF "\trightnexthop=%defaultroute\n" if ($lvpnsettings{'VPN_IP'} ne '%defaultroute'); + print CONF "\tleft=$lconfighash{$key}[10]\n"; + if ($lconfighash{$key}[3] eq 'net') { + print CONF "\tleftsubnet=$lconfighash{$key}[11]\n"; + print CONF "\tleftnexthop=%defaultroute\n"; + } + if ($lconfighash{$key}[4] eq 'cert') { + print CONF "\trightcert=${General::swroot}/certs/hostcert.pem\n"; + print CONF "\tleftcert=${General::swroot}/certs/$lconfighash{$key}[1]cert.pem\n"; + } + } + print CONF "\tleftid=$lconfighash{$key}[7]\n" if ($lconfighash{$key}[7]); + print CONF "\trightid=$lconfighash{$key}[9]\n" if ($lconfighash{$key}[9]); + + # Algorithms + if ($lconfighash{$key}[18] && $lconfighash{$key}[19] && $lconfighash{$key}[20]) { + print CONF "\tike="; + my @encs = split('\|', $lconfighash{$key}[18]); + my @ints = split('\|', $lconfighash{$key}[19]); + my @groups = split('\|', $lconfighash{$key}[20]); + my $comma = 0; + foreach my $i (@encs) { + foreach my $j (@ints) { + foreach my $k (@groups) { + if ($comma != 0) { print CONF ","; } else { $comma = 1; } + print CONF "$i-$j-modp$k"; + } + } + } + if ($lconfighash{$key}[24] eq 'on') { + print CONF "!\n"; + } else { + print CONF "\n"; + } + } + if ($lconfighash{$key}[21] && $lconfighash{$key}[22]) { + print CONF "\tesp="; + my @encs = split('\|', $lconfighash{$key}[21]); + my @ints = split('\|', $lconfighash{$key}[22]); + my $comma = 0; + foreach my $i (@encs) { + foreach my $j (@ints) { + if ($comma != 0) { print CONF ","; } else { $comma = 1; } + print CONF "$i-$j"; + } + } + if ($lconfighash{$key}[24] eq 'on') { + print CONF "!\n"; + } else { + print CONF "\n"; + } + } + if ($lconfighash{$key}[23]) { + print CONF "\tpfsgroup=$lconfighash{$key}[23]\n"; + } + + # Lifetimes + if ($lconfighash{$key}[16]) { + print CONF "\tikelifetime=$lconfighash{$key}[16]h\n"; + } + if ($lconfighash{$key}[17]) { + print CONF "\tkeylife=$lconfighash{$key}[17]h\n"; + } + + # Compression + if ($lconfighash{$key}[13] eq 'on') { + print CONF "\tcompress=yes\n"; + } + + # Dead Peer Detection + print CONF "\tdpddelay=30\n"; + print CONF "\tdpdtimeout=120\n"; + print CONF "\tdpdaction=$lconfighash{$key}[27]\n"; + + # Disable pfs ? + print CONF "\tpfs=$lconfighash{$key}[28]\n"; + + # Print Authentication details + if ($lconfighash{$key}[4] eq 'psk') { + if ($lconfighash{$key}[6] eq 'left'){ + if ($lconfighash{$key}[26] eq 'BLUE') { + print SECRETS ($lconfighash{$key}[7] ? $lconfighash{$key}[7] : $netsettings{'BLUE_ADDRESS'}) . " "; + print SECRETS $lconfighash{$key}[9] ? $lconfighash{$key}[9] : $lconfighash{$key}[10]; + print SECRETS " : PSK \"$lconfighash{$key}[5]\"\n"; + } else { + print SECRETS ($lconfighash{$key}[7] ? $lconfighash{$key}[7] : $lvpnsettings{'VPN_IP'}) . " "; + print SECRETS $lconfighash{$key}[9] ? $lconfighash{$key}[9] : $lconfighash{$key}[10]; + print SECRETS " : PSK \"$lconfighash{$key}[5]\"\n"; + } + } else { + if ($lconfighash{$key}[26] eq 'BLUE') { + print SECRETS ($lconfighash{$key}[9] ? $lconfighash{$key}[9] : $netsettings{'BLUE_ADDRESS'}) . " "; + print SECRETS $lconfighash{$key}[7] ? $lconfighash{$key}[7] : $lconfighash{$key}[10]; + print SECRETS " : PSK \"$lconfighash{$key}[5]\"\n"; + } else { + print SECRETS ($lconfighash{$key}[9] ? $lconfighash{$key}[9] : $lvpnsettings{'VPN_IP'}) . " "; + print SECRETS $lconfighash{$key}[7] ? $lconfighash{$key}[7] : $lconfighash{$key}[10]; + print SECRETS " : PSK \"$lconfighash{$key}[5]\"\n"; + } + } + + print CONF "\tauthby=secret\n"; + } else { + print CONF "\tauthby=rsasig\n"; + } + + # Automatically start only if a net-to-net connection + if ($lconfighash{$key}[3] eq 'host') { + print CONF "\tauto=add\n"; + } else { + print CONF "\tauto=start\n"; + } + print CONF "\n"; + }#on + }#foreach key + + close(CONF); + close(SECRETS); +} + +### +### Save main settings +### +if ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'TYPE'} eq '' && $cgiparams{'KEY'} eq '') { + &General::readhash("${General::swroot}/vpn/settings", \%vpnsettings); + unless (&General::validfqdn($cgiparams{'VPN_IP'}) || &General::validip($cgiparams{'VPN_IP'}) + || $cgiparams{'VPN_IP'} eq '%defaultroute' ) { + $errormessage = $Lang::tr{'invalid input for hostname'}; + goto SAVE_ERROR; + } + + unless ($cgiparams{'VPN_DELAYED_START'} =~ /^[0-9]{1,3}$/ ) { #allow 0-999 seconds ! + $errormessage = $Lang::tr{'invalid time period'}; + goto SAVE_ERROR; + } + + unless ($cgiparams{'VPN_OVERRIDE_MTU'} =~ /^(|[0-9]{1,5})$/ ) { #allow 0-99999 + $errormessage = $Lang::tr{'vpn mtu invalid'}; + goto SAVE_ERROR; + } + + map ($vpnsettings{$_} = $cgiparams{$_}, + ('ENABLED','ENABLED_BLUE','DBG_CRYPT','DBG_PARSING','DBG_EMITTING','DBG_CONTROL', + 'DBG_KLIPS','DBG_DNS','DBG_NAT_T')); + + $vpnsettings{'VPN_IP'} = $cgiparams{'VPN_IP'}; + $vpnsettings{'VPN_DELAYED_START'} = $cgiparams{'VPN_DELAYED_START'}; + $vpnsettings{'VPN_OVERRIDE_MTU'} = $cgiparams{'VPN_OVERRIDE_MTU'}; + &General::writehash("${General::swroot}/vpn/settings", \%vpnsettings); + &writeipsecfiles(); + if ($vpnsettings{'ENABLED'} eq 'on' || + $vpnsettings{'ENABLED_BLUE'} eq 'on') { + system('/usr/local/bin/ipsecctrl', 'S'); + } else { + system('/usr/local/bin/ipsecctrl', 'D'); + } + sleep $sleepDelay; + SAVE_ERROR: +### +### Reset all step 2 +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'reset'} && $cgiparams{'AREUSURE'} eq 'yes') { + my $file = ''; + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + + foreach my $key (keys %confighash) { + if ($confighash{$key}[4] eq 'cert') { + delete $confighash{$key}; + } + } + while ($file = glob("${General::swroot}/{ca,certs,crls,private}/*")) { + unlink $file + } + &cleanssldatabase(); + if (open(FILE, ">${General::swroot}/vpn/caconfig")) { + print FILE ""; + close FILE; + } + &General::writehasharray("${General::swroot}/vpn/config", \%confighash); + &writeipsecfiles(); + system('/usr/local/bin/ipsecctrl', 'R'); + sleep $sleepDelay; + +### +### Reset all step 1 +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'reset'}) { + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'vpn configuration main'}, 1, ''); + &Header::openbigbox('100%', 'LEFT', '', ''); + &Header::openbox('100%', 'LEFT', $Lang::tr{'are you sure'}); + print <
    + + $Lang::tr{'capswarning'}: + $Lang::tr{'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections'} + + +
    +END + ; + &Header::closebox(); + &Header::closebigbox(); + &Header::closepage(); + exit (0); + +### +### Upload CA Certificate +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'upload ca certificate'}) { + &General::readhasharray("${General::swroot}/vpn/caconfig", \%cahash); + + if ($cgiparams{'CA_NAME'} !~ /^[a-zA-Z0-9]+$/) { + $errormessage = $Lang::tr{'name must only contain characters'}; + goto UPLOADCA_ERROR; + } + + if (length($cgiparams{'CA_NAME'}) >60) { + $errormessage = $Lang::tr{'name too long'}; + goto VPNCONF_ERROR; + } + + if ($cgiparams{'CA_NAME'} eq 'ca') { + $errormessage = $Lang::tr{'name is invalid'}; + goto UPLOAD_CA_ERROR; + } + + # Check if there is no other entry with this name + foreach my $key (keys %cahash) { + if ($cahash{$key}[0] eq $cgiparams{'CA_NAME'}) { + $errormessage = $Lang::tr{'a ca certificate with this name already exists'}; + goto UPLOADCA_ERROR; + } + } + + if (ref ($cgiparams{'FH'}) ne 'Fh') { + $errormessage = $Lang::tr{'there was no file upload'}; + goto UPLOADCA_ERROR; + } + # Move uploaded ca to a temporary file + (my $fh, my $filename) = tempfile( ); + if (copy ($cgiparams{'FH'}, $fh) != 1) { + $errormessage = $!; + goto UPLOADCA_ERROR; + } + my $temp = `/usr/bin/openssl x509 -text -in $filename`; + if ($temp !~ /CA:TRUE/i) { + $errormessage = $Lang::tr{'not a valid ca certificate'}; + unlink ($filename); + goto UPLOADCA_ERROR; + } else { + move($filename, "${General::swroot}/ca/$cgiparams{'CA_NAME'}cert.pem"); + if ($? ne 0) { + $errormessage = "$Lang::tr{'certificate file move failed'}: $!"; + unlink ($filename); + goto UPLOADCA_ERROR; + } + } + + my $casubject = `/usr/bin/openssl x509 -text -in ${General::swroot}/ca/$cgiparams{'CA_NAME'}cert.pem`; + $casubject =~ /Subject: (.*)[\n]/; + $casubject = $1; + $casubject =~ s+/Email+, E+; + $casubject =~ s/ ST=/ S=/; + $casubject = &Header::cleanhtml($casubject); + + my $key = &General::findhasharraykey (\%cahash); + $cahash{$key}[0] = $cgiparams{'CA_NAME'}; + $cahash{$key}[1] = $casubject; + &General::writehasharray("${General::swroot}/vpn/caconfig", \%cahash); + system('/usr/local/bin/ipsecctrl', 'R'); + sleep $sleepDelay; + + UPLOADCA_ERROR: + +### +### Display ca certificate +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'show ca certificate'}) { + &General::readhasharray("${General::swroot}/vpn/caconfig", \%cahash); + + if ( -f "${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem") { + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'vpn configuration main'}, 1, ''); + &Header::openbigbox('100%', 'LEFT', '', ''); + &Header::openbox('100%', 'LEFT', "$Lang::tr{'ca certificate'}:"); + my $output = `/usr/bin/openssl x509 -text -in ${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem`; + $output = &Header::cleanhtml($output,"y"); + print "
    $output
    \n"; + &Header::closebox(); + print ""; + &Header::closebigbox(); + &Header::closepage(); + exit(0); + } else { + $errormessage = $Lang::tr{'invalid key'}; + } + +### +### Download ca certificate +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'download ca certificate'}) { + &General::readhasharray("${General::swroot}/vpn/caconfig", \%cahash); + + if ( -f "${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem" ) { + print "Content-Type: application/octet-stream\r\n"; + print "Content-Disposition: filename=$cahash{$cgiparams{'KEY'}}[0]cert.pem\r\n\r\n"; + print `/usr/bin/openssl x509 -in ${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem`; + exit(0); + } else { + $errormessage = $Lang::tr{'invalid key'}; + } + +### +### Remove ca certificate (step 2) +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'remove ca certificate'} && $cgiparams{'AREUSURE'} eq 'yes') { + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + &General::readhasharray("${General::swroot}/vpn/caconfig", \%cahash); + + if ( -f "${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem" ) { + foreach my $key (keys %confighash) { + my $test = `/usr/bin/openssl verify -CAfile ${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem ${General::swroot}/certs/$confighash{$key}[1]cert.pem`; + if ($test =~ /: OK/) { + # Delete connection + if ($vpnsettings{'ENABLED'} eq 'on' || + $vpnsettings{'ENABLED_BLUE'} eq 'on') { + system('/usr/local/bin/ipsecctrl', 'D', $key); + } + unlink ("${General::swroot}/certs/$confighash{$key}[1]cert.pem"); + unlink ("${General::swroot}/certs/$confighash{$key}[1].p12"); + delete $confighash{$key}; + &General::writehasharray("${General::swroot}/vpn/config", \%confighash); + &writeipsecfiles(); + } + } + unlink ("${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem"); + delete $cahash{$cgiparams{'KEY'}}; + &General::writehasharray("${General::swroot}/vpn/caconfig", \%cahash); + system('/usr/local/bin/ipsecctrl', 'R'); + sleep $sleepDelay; + } else { + $errormessage = $Lang::tr{'invalid key'}; + } +### +### Remove ca certificate (step 1) +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'remove ca certificate'}) { + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + &General::readhasharray("${General::swroot}/vpn/caconfig", \%cahash); + + my $assignedcerts = 0; + if ( -f "${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem" ) { + foreach my $key (keys %confighash) { + my $test = `/usr/bin/openssl verify -CAfile ${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem ${General::swroot}/certs/$confighash{$key}[1]cert.pem`; + if ($test =~ /: OK/) { + $assignedcerts++; + } + } + if ($assignedcerts) { + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'vpn configuration main'}, 1, ''); + &Header::openbigbox('100%', 'LEFT', '', ''); + &Header::openbox('100%', 'LEFT', $Lang::tr{'are you sure'}); + print <
    + + + $Lang::tr{'capswarning'}: $assignedcerts + $Lang::tr{'connections are associated with this ca. deleting the ca will delete these connections as well.'} + + +
    +END + ; + &Header::closebox(); + &Header::closebigbox(); + &Header::closepage(); + exit (0); + } else { + unlink ("${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem"); + delete $cahash{$cgiparams{'KEY'}}; + &General::writehasharray("${General::swroot}/vpn/caconfig", \%cahash); + system('/usr/local/bin/ipsecctrl', 'R'); + sleep $sleepDelay; + } + } else { + $errormessage = $Lang::tr{'invalid key'}; + } + +### +### Display root certificate +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'show root certificate'} || + $cgiparams{'ACTION'} eq $Lang::tr{'show host certificate'}) { + my $output; + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'vpn configuration main'}, 1, ''); + &Header::openbigbox('100%', 'LEFT', '', ''); + if ($cgiparams{'ACTION'} eq $Lang::tr{'show root certificate'}) { + &Header::openbox('100%', 'LEFT', "$Lang::tr{'root certificate'}:"); + $output = `/usr/bin/openssl x509 -text -in ${General::swroot}/ca/cacert.pem`; + } else { + &Header::openbox('100%', 'LEFT', "$Lang::tr{'host certificate'}:"); + $output = `/usr/bin/openssl x509 -text -in ${General::swroot}/certs/hostcert.pem`; + } + $output = &Header::cleanhtml($output,"y"); + print "
    $output
    \n"; + &Header::closebox(); + print ""; + &Header::closebigbox(); + &Header::closepage(); + exit(0); + +### +### Download root certificate +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'download root certificate'}) { + if ( -f "${General::swroot}/ca/cacert.pem" ) { + print "Content-Type: application/octet-stream\r\n"; + print "Content-Disposition: filename=cacert.pem\r\n\r\n"; + print `/usr/bin/openssl x509 -in ${General::swroot}/ca/cacert.pem`; + exit(0); + } +### +### Download host certificate +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'download host certificate'}) { + if ( -f "${General::swroot}/certs/hostcert.pem" ) { + print "Content-Type: application/octet-stream\r\n"; + print "Content-Disposition: filename=hostcert.pem\r\n\r\n"; + print `/usr/bin/openssl x509 -in ${General::swroot}/certs/hostcert.pem`; + exit(0); + } +### +### Form for generating a root certificate +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'generate root/host certificates'} || + $cgiparams{'ACTION'} eq $Lang::tr{'upload p12 file'}) { + + &General::readhash("${General::swroot}/vpn/settings", \%vpnsettings); + if (-f "${General::swroot}/ca/cacert.pem") { + $errormessage = $Lang::tr{'valid root certificate already exists'}; + $cgiparams{'ACTION'} = ''; + goto ROOTCERT_ERROR; + } + + if (($cgiparams{'ROOTCERT_HOSTNAME'} eq '') && -e "${General::swroot}/red/active") { + if (open(IPADDR, "${General::swroot}/red/local-ipaddress")) { + my $ipaddr = ; + close IPADDR; + chomp ($ipaddr); + $cgiparams{'ROOTCERT_HOSTNAME'} = (gethostbyaddr(pack("C4", split(/\./, $ipaddr)), 2))[0]; + if ($cgiparams{'ROOTCERT_HOSTNAME'} eq '') { + $cgiparams{'ROOTCERT_HOSTNAME'} = $ipaddr; + } + } + } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'upload p12 file'}) { + + if (ref ($cgiparams{'FH'}) ne 'Fh') { + $errormessage = $Lang::tr{'there was no file upload'}; + goto ROOTCERT_ERROR; + } + + # Move uploaded certificate request to a temporary file + (my $fh, my $filename) = tempfile( ); + if (copy ($cgiparams{'FH'}, $fh) != 1) { + $errormessage = $!; + goto ROOTCERT_ERROR; + } + + # Create a temporary dirctory + my $tempdir = tempdir( CLEANUP => 1 ); + + # Extract the CA certificate from the file + my $pid = open(OPENSSL, "|-"); + $SIG{ALRM} = sub { $errormessage = $Lang::tr{'broken pipe'}; goto ROOTCERT_ERROR;}; + if ($pid) { # parent + if ($cgiparams{'P12_PASS'} ne '') { + print OPENSSL "$cgiparams{'P12_PASS'}\n"; + } + close (OPENSSL); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ($filename); + goto ROOTCERT_ERROR; + } + } else { # child + unless (exec ('/usr/bin/openssl', 'pkcs12', '-cacerts', '-nokeys', + '-in', $filename, + '-out', "$tempdir/cacert.pem")) { + $errormessage = "$Lang::tr{'cant start openssl'}: $!"; + unlink ($filename); + goto ROOTCERT_ERROR; + } + } + + # Extract the Host certificate from the file + $pid = open(OPENSSL, "|-"); + $SIG{ALRM} = sub { $errormessage = $Lang::tr{'broken pipe'}; goto ROOTCERT_ERROR;}; + if ($pid) { # parent + if ($cgiparams{'P12_PASS'} ne '') { + print OPENSSL "$cgiparams{'P12_PASS'}\n"; + } + close (OPENSSL); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ($filename); + goto ROOTCERT_ERROR; + } + } else { # child + unless (exec ('/usr/bin/openssl', 'pkcs12', '-clcerts', '-nokeys', + '-in', $filename, + '-out', "$tempdir/hostcert.pem")) { + $errormessage = "$Lang::tr{'cant start openssl'}: $!"; + unlink ($filename); + goto ROOTCERT_ERROR; + } + } + + # Extract the Host key from the file + $pid = open(OPENSSL, "|-"); + $SIG{ALRM} = sub { $errormessage = $Lang::tr{'broken pipe'}; goto ROOTCERT_ERROR;}; + if ($pid) { # parent + if ($cgiparams{'P12_PASS'} ne '') { + print OPENSSL "$cgiparams{'P12_PASS'}\n"; + } + close (OPENSSL); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ($filename); + goto ROOTCERT_ERROR; + } + } else { # child + unless (exec ('/usr/bin/openssl', 'pkcs12', '-nocerts', + '-nodes', + '-in', $filename, + '-out', "$tempdir/hostkey.pem")) { + $errormessage = "$Lang::tr{'cant start openssl'}: $!"; + unlink ($filename); + goto ROOTCERT_ERROR; + } + } + + move("$tempdir/cacert.pem", "${General::swroot}/ca/cacert.pem"); + if ($? ne 0) { + $errormessage = "$Lang::tr{'certificate file move failed'}: $!"; + unlink ($filename); + unlink ("${General::swroot}/ca/cacert.pem"); + unlink ("${General::swroot}/certs/hostcert.pem"); + unlink ("${General::swroot}/certs/hostkey.pem"); + goto ROOTCERT_ERROR; + } + + move("$tempdir/hostcert.pem", "${General::swroot}/certs/hostcert.pem"); + if ($? ne 0) { + $errormessage = "$Lang::tr{'certificate file move failed'}: $!"; + unlink ($filename); + unlink ("${General::swroot}/ca/cacert.pem"); + unlink ("${General::swroot}/certs/hostcert.pem"); + unlink ("${General::swroot}/certs/hostkey.pem"); + goto ROOTCERT_ERROR; + } + + move("$tempdir/hostkey.pem", "${General::swroot}/certs/hostkey.pem"); + if ($? ne 0) { + $errormessage = "$Lang::tr{'certificate file move failed'}: $!"; + unlink ($filename); + unlink ("${General::swroot}/ca/cacert.pem"); + unlink ("${General::swroot}/certs/hostcert.pem"); + unlink ("${General::swroot}/certs/hostkey.pem"); + goto ROOTCERT_ERROR; + } + + # Create an empty CRL + system('/usr/bin/openssl', 'ca', '-gencrl', + '-out', "${General::swroot}/crls/cacrl.pem"); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ("${General::swroot}/certs/hostkey.pem"); + unlink ("${General::swroot}/certs/hostcert.pem"); + unlink ("${General::swroot}/ca/cacert.pem"); + unlink ("${General::swroot}/crls/cacrl.pem"); + &cleanssldatabase(); + goto ROOTCERT_ERROR; + } else { + &cleanssldatabase(); + } + + goto ROOTCERT_SUCCESS; + + } elsif ($cgiparams{'ROOTCERT_COUNTRY'} ne '') { + + # Validate input since the form was submitted + if ($cgiparams{'ROOTCERT_ORGANIZATION'} eq ''){ + $errormessage = $Lang::tr{'organization cant be empty'}; + goto ROOTCERT_ERROR; + } + if (length($cgiparams{'ROOTCERT_ORGANIZATION'}) >60) { + $errormessage = $Lang::tr{'organization too long'}; + goto ROOTCERT_ERROR; + } + if ($cgiparams{'ROOTCERT_ORGANIZATION'} !~ /^[a-zA-Z0-9 ,\.\-_]*$/) { + $errormessage = $Lang::tr{'invalid input for organization'}; + goto ROOTCERT_ERROR; + } + if ($cgiparams{'ROOTCERT_HOSTNAME'} eq ''){ + $errormessage = $Lang::tr{'hostname cant be empty'}; + goto ROOTCERT_ERROR; + } + unless (&General::validfqdn($cgiparams{'ROOTCERT_HOSTNAME'}) || &General::validip($cgiparams{'ROOTCERT_HOSTNAME'})) { + $errormessage = $Lang::tr{'invalid input for hostname'}; + goto ROOTCERT_ERROR; + } + if ($cgiparams{'ROOTCERT_EMAIL'} ne '' && (! &General::validemail($cgiparams{'ROOTCERT_EMAIL'}))) { + $errormessage = $Lang::tr{'invalid input for e-mail address'}; + goto ROOTCERT_ERROR; + } + if (length($cgiparams{'ROOTCERT_EMAIL'}) > 40) { + $errormessage = $Lang::tr{'e-mail address too long'}; + goto ROOTCERT_ERROR; + } + if ($cgiparams{'ROOTCERT_OU'} ne '' && $cgiparams{'ROOTCERT_OU'} !~ /^[a-zA-Z0-9 ,\.\-_]*$/) { + $errormessage = $Lang::tr{'invalid input for department'}; + goto ROOTCERT_ERROR; + } + if ($cgiparams{'ROOTCERT_CITY'} ne '' && $cgiparams{'ROOTCERT_CITY'} !~ /^[a-zA-Z0-9 ,\.\-_]*$/) { + $errormessage = $Lang::tr{'invalid input for city'}; + goto ROOTCERT_ERROR; + } + if ($cgiparams{'ROOTCERT_STATE'} ne '' && $cgiparams{'ROOTCERT_STATE'} !~ /^[a-zA-Z0-9 ,\.\-_]*$/) { + $errormessage = $Lang::tr{'invalid input for state or province'}; + goto ROOTCERT_ERROR; + } + if ($cgiparams{'ROOTCERT_COUNTRY'} !~ /^[A-Z]*$/) { + $errormessage = $Lang::tr{'invalid input for country'}; + goto ROOTCERT_ERROR; + } + + # Copy the cgisettings to vpnsettings and save the configfile + $vpnsettings{'ROOTCERT_ORGANIZATION'} = $cgiparams{'ROOTCERT_ORGANIZATION'}; + $vpnsettings{'ROOTCERT_HOSTNAME'} = $cgiparams{'ROOTCERT_HOSTNAME'}; + $vpnsettings{'ROOTCERT_EMAIL'} = $cgiparams{'ROOTCERT_EMAIL'}; + $vpnsettings{'ROOTCERT_OU'} = $cgiparams{'ROOTCERT_OU'}; + $vpnsettings{'ROOTCERT_CITY'} = $cgiparams{'ROOTCERT_CITY'}; + $vpnsettings{'ROOTCERT_STATE'} = $cgiparams{'ROOTCERT_STATE'}; + $vpnsettings{'ROOTCERT_COUNTRY'} = $cgiparams{'ROOTCERT_COUNTRY'}; + &General::writehash("${General::swroot}/vpn/settings", \%vpnsettings); + + # Replace empty strings with a . + (my $ou = $cgiparams{'ROOTCERT_OU'}) =~ s/^\s*$/\./; + (my $city = $cgiparams{'ROOTCERT_CITY'}) =~ s/^\s*$/\./; + (my $state = $cgiparams{'ROOTCERT_STATE'}) =~ s/^\s*$/\./; + + # Create the CA certificate + my $pid = open(OPENSSL, "|-"); + $SIG{ALRM} = sub { $errormessage = $Lang::tr{'broken pipe'}; goto ROOTCERT_ERROR;}; + if ($pid) { # parent + print OPENSSL "$cgiparams{'ROOTCERT_COUNTRY'}\n"; + print OPENSSL "$state\n"; + print OPENSSL "$city\n"; + print OPENSSL "$cgiparams{'ROOTCERT_ORGANIZATION'}\n"; + print OPENSSL "$ou\n"; + print OPENSSL "$cgiparams{'ROOTCERT_ORGANIZATION'} CA\n"; + print OPENSSL "$cgiparams{'ROOTCERT_EMAIL'}\n"; + close (OPENSSL); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ("${General::swroot}/private/cakey.pem"); + unlink ("${General::swroot}/ca/cacert.pem"); + goto ROOTCERT_ERROR; + } + } else { # child + unless (exec ('/usr/bin/openssl', 'req', '-x509', '-nodes', '-rand', '/proc/interrupts:/proc/net/rt_cache', + '-days', '999999', '-newkey', 'rsa:2048', + '-keyout', "${General::swroot}/private/cakey.pem", + '-out', "${General::swroot}/ca/cacert.pem")) { + $errormessage = "$Lang::tr{'cant start openssl'}: $!"; + goto ROOTCERT_ERROR; + } + } + + # Create the Host certificate request + $pid = open(OPENSSL, "|-"); + $SIG{ALRM} = sub { $errormessage = $Lang::tr{'broken pipe'}; goto ROOTCERT_ERROR;}; + if ($pid) { # parent + print OPENSSL "$cgiparams{'ROOTCERT_COUNTRY'}\n"; + print OPENSSL "$state\n"; + print OPENSSL "$city\n"; + print OPENSSL "$cgiparams{'ROOTCERT_ORGANIZATION'}\n"; + print OPENSSL "$ou\n"; + print OPENSSL "$cgiparams{'ROOTCERT_HOSTNAME'}\n"; + print OPENSSL "$cgiparams{'ROOTCERT_EMAIL'}\n"; + print OPENSSL ".\n"; + print OPENSSL ".\n"; + close (OPENSSL); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ("${General::swroot}/certs/hostkey.pem"); + unlink ("${General::swroot}/certs/hostreq.pem"); + goto ROOTCERT_ERROR; + } + } else { # child + unless (exec ('/usr/bin/openssl', 'req', '-nodes', '-rand', '/proc/interrupts:/proc/net/rt_cache', + '-newkey', 'rsa:1024', + '-keyout', "${General::swroot}/certs/hostkey.pem", + '-out', "${General::swroot}/certs/hostreq.pem")) { + $errormessage = "$Lang::tr{'cant start openssl'}: $!"; + unlink ("${General::swroot}/certs/hostkey.pem"); + unlink ("${General::swroot}/certs/hostreq.pem"); + unlink ("${General::swroot}/private/cakey.pem"); + unlink ("${General::swroot}/ca/cacert.pem"); + goto ROOTCERT_ERROR; + } + } + + # Sign the host certificate request + system('/usr/bin/openssl', 'ca', '-days', '999999', + '-batch', '-notext', + '-in', "${General::swroot}/certs/hostreq.pem", + '-out', "${General::swroot}/certs/hostcert.pem"); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ("${General::swroot}/private/cakey.pem"); + unlink ("${General::swroot}/ca/cacert.pem"); + unlink ("${General::swroot}/certs/hostkey.pem"); + unlink ("${General::swroot}/certs/hostreq.pem"); + unlink ("${General::swroot}/certs/hostcert.pem"); + &cleanssldatabase(); + goto ROOTCERT_ERROR; + } else { + unlink ("${General::swroot}/certs/hostreq.pem"); + &cleanssldatabase(); + } + + # Create an empty CRL + system('/usr/bin/openssl', 'ca', '-gencrl', + '-out', "${General::swroot}/crls/cacrl.pem"); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ("${General::swroot}/certs/hostkey.pem"); + unlink ("${General::swroot}/certs/hostcert.pem"); + unlink ("${General::swroot}/ca/cacert.pem"); + unlink ("${General::swroot}/crls/cacrl.pem"); + &cleanssldatabase(); + goto ROOTCERT_ERROR; + } else { + &cleanssldatabase(); + } + goto ROOTCERT_SUCCESS; + } + ROOTCERT_ERROR: + if ($cgiparams{'ACTION'} ne '') { + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'vpn configuration main'}, 1, ''); + &Header::openbigbox('100%', 'LEFT', '', $errormessage); + if ($errormessage) { + &Header::openbox('100%', 'LEFT', $Lang::tr{'error messages'}); + print "$errormessage"; + print " "; + &Header::closebox(); + } + &Header::openbox('100%', 'LEFT', "$Lang::tr{'generate root/host certificates'}:"); + print < + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    $Lang::tr{'organization name'}: 
    $Lang::tr{'ipcops hostname'}: 
    $Lang::tr{'your e-mail'}: * 
    $Lang::tr{'your department'}: * 
    $Lang::tr{'city'}: * 
    $Lang::tr{'state or province'}: * 
    $Lang::tr{'country'}: 
     


      
    + * $Lang::tr{'this field may be blank'} + $Lang::tr{'capswarning'}: + $Lang::tr{'generating the root and host certificates may take a long time. it can take up to several minutes on older hardware. please be patient'} +

    $Lang::tr{'upload p12 file'}: 
    $Lang::tr{'pkcs12 file password'}: * 
      
    + * $Lang::tr{'this field may be blank'}
    +END + ; + &Header::closebox(); + + &Header::closebigbox(); + &Header::closepage(); + exit(0) + } + + ROOTCERT_SUCCESS: + if ($vpnsettings{'ENABLED'} eq 'on' || + $vpnsettings{'ENABLE_BLUE'} eq 'on') { + system('/usr/local/bin/ipsecctrl', 'S'); + sleep $sleepDelay; + } +### +### Download PKCS12 file +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'download pkcs12 file'}) { + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + + print "Content-Disposition: filename=" . $confighash{$cgiparams{'KEY'}}[1] . ".p12\r\n"; + print "Content-Type: application/octet-stream\r\n\r\n"; + print `/bin/cat ${General::swroot}/certs/$confighash{$cgiparams{'KEY'}}[1].p12`; + exit (0); + +### +### Display certificate +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'show certificate'}) { + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + + if ( -f "${General::swroot}/certs/$confighash{$cgiparams{'KEY'}}[1]cert.pem") { + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'vpn configuration main'}, 1, ''); + &Header::openbigbox('100%', 'LEFT', '', ''); + &Header::openbox('100%', 'LEFT', "$Lang::tr{'certificate'}:"); + my $output = `/usr/bin/openssl x509 -text -in ${General::swroot}/certs/$confighash{$cgiparams{'KEY'}}[1]cert.pem`; + $output = &Header::cleanhtml($output,"y"); + print "
    $output
    \n"; + &Header::closebox(); + print ""; + &Header::closebigbox(); + &Header::closepage(); + exit(0); + } + +### +### Download Certificate +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'download certificate'}) { + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + + if ( -f "${General::swroot}/certs/$confighash{$cgiparams{'KEY'}}[1]cert.pem") { + print "Content-Disposition: filename=" . $confighash{$cgiparams{'KEY'}}[1] . "cert.pem\r\n"; + print "Content-Type: application/octet-stream\r\n\r\n"; + print `/bin/cat ${General::swroot}/certs/$confighash{$cgiparams{'KEY'}}[1]cert.pem`; + exit (0); + } + +### +### Enable/Disable connection +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'toggle enable disable'}) { + + &General::readhash("${General::swroot}/vpn/settings", \%vpnsettings); + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + + if ($confighash{$cgiparams{'KEY'}}) { + if ($confighash{$cgiparams{'KEY'}}[0] eq 'off') { + $confighash{$cgiparams{'KEY'}}[0] = 'on'; + &General::writehasharray("${General::swroot}/vpn/config", \%confighash); + &writeipsecfiles(); + if ($vpnsettings{'ENABLED'} eq 'on' || + $vpnsettings{'ENABLED_BLUE'} eq 'on') { + system('/usr/local/bin/ipsecctrl', 'S', $cgiparams{'KEY'}); + sleep $sleepDelay; + } + } else { + $confighash{$cgiparams{'KEY'}}[0] = 'off'; + if ($vpnsettings{'ENABLED'} eq 'on' || + $vpnsettings{'ENABLED_BLUE'} eq 'on') { + system('/usr/local/bin/ipsecctrl', 'D', $cgiparams{'KEY'}); + } + &General::writehasharray("${General::swroot}/vpn/config", \%confighash); + &writeipsecfiles(); + } + } else { + $errormessage = $Lang::tr{'invalid key'}; + } + +### +### Restart connection +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'restart'}) { + &General::readhash("${General::swroot}/vpn/settings", \%vpnsettings); + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + + if ($confighash{$cgiparams{'KEY'}}) { + if ($vpnsettings{'ENABLED'} eq 'on' || + $vpnsettings{'ENABLED_BLUE'} eq 'on') { + system('/usr/local/bin/ipsecctrl', 'S', $cgiparams{'KEY'}); + sleep $sleepDelay; + } + } else { + $errormessage = $Lang::tr{'invalid key'}; + } + +### +### Remove connection +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) { + &General::readhash("${General::swroot}/vpn/settings", \%vpnsettings); + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + + if ($confighash{$cgiparams{'KEY'}}) { + if ($vpnsettings{'ENABLED'} eq 'on' || + $vpnsettings{'ENABLED_BLUE'} eq 'on') { + system('/usr/local/bin/ipsecctrl', 'D', $cgiparams{'KEY'}); + } + unlink ("${General::swroot}/certs/$confighash{$cgiparams{'KEY'}}[1]cert.pem"); + unlink ("${General::swroot}/certs/$confighash{$cgiparams{'KEY'}}[1].p12"); + delete $confighash{$cgiparams{'KEY'}}; + &General::writehasharray("${General::swroot}/vpn/config", \%confighash); + &writeipsecfiles(); + } else { + $errormessage = $Lang::tr{'invalid key'}; + } + +### +### Choose between adding a host-net or net-net connection +### +} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'add'} && $cgiparams{'TYPE'} eq '') { + &General::readhash("${General::swroot}/vpn/settings", \%vpnsettings); + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'vpn configuration main'}, 1, ''); + &Header::openbigbox('100%', 'LEFT', '', ''); + &Header::openbox('100%', 'LEFT', $Lang::tr{'connection type'}); + print <$Lang::tr{'connection type'}:

    + + + + + + +
    $Lang::tr{'host to net vpn'}
    $Lang::tr{'net to net vpn'}
    +END + ; + &Header::closebox(); + &Header::closebigbox(); + &Header::closepage(); + exit (0); +### +### Adding a new connection +### +} elsif (($cgiparams{'ACTION'} eq $Lang::tr{'add'}) || + ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) || + ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'ADVANCED'} eq '')) { + + &General::readhash("${General::swroot}/vpn/settings", \%vpnsettings); + &General::readhasharray("${General::swroot}/vpn/caconfig", \%cahash); + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + + if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) { + if (! $confighash{$cgiparams{'KEY'}}[0]) { + $errormessage = $Lang::tr{'invalid key'}; + goto VPNCONF_END; + } + $cgiparams{'ENABLED'} = $confighash{$cgiparams{'KEY'}}[0]; + $cgiparams{'NAME'} = $confighash{$cgiparams{'KEY'}}[1]; + $cgiparams{'TYPE'} = $confighash{$cgiparams{'KEY'}}[3]; + $cgiparams{'AUTH'} = $confighash{$cgiparams{'KEY'}}[4]; + $cgiparams{'PSK'} = $confighash{$cgiparams{'KEY'}}[5]; + $cgiparams{'SIDE'} = $confighash{$cgiparams{'KEY'}}[6]; + $cgiparams{'LOCAL_ID'} = $confighash{$cgiparams{'KEY'}}[7]; + $cgiparams{'LOCAL_SUBNET'} = $confighash{$cgiparams{'KEY'}}[8]; + $cgiparams{'REMOTE_ID'} = $confighash{$cgiparams{'KEY'}}[9]; + $cgiparams{'REMOTE'} = $confighash{$cgiparams{'KEY'}}[10]; + $cgiparams{'REMOTE_SUBNET'} = $confighash{$cgiparams{'KEY'}}[11]; + $cgiparams{'REMARK'} = $confighash{$cgiparams{'KEY'}}[25]; + $cgiparams{'INTERFACE'} = $confighash{$cgiparams{'KEY'}}[26]; + $cgiparams{'DPD_ACTION'}= $confighash{$cgiparams{'KEY'}}[27]; + $cgiparams{'PFS_YES_NO'}= $confighash{$cgiparams{'KEY'}}[28]; + + } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'save'}) { + $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'}); + if ($cgiparams{'TYPE'} !~ /^(host|net)$/) { + $errormessage = $Lang::tr{'connection type is invalid'}; + goto VPNCONF_ERROR; + } + + if ($cgiparams{'NAME'} !~ /^[a-zA-Z0-9]+$/) { + $errormessage = $Lang::tr{'name must only contain characters'}; + goto VPNCONF_ERROR; + } + + if ($cgiparams{'NAME'} =~ /^(host|01|block|private|clear|packetdefault)$/) { + $errormessage = $Lang::tr{'name is invalid'}; + goto VPNCONF_ERROR; + } + + if (length($cgiparams{'NAME'}) >60) { + $errormessage = $Lang::tr{'name too long'}; + goto VPNCONF_ERROR; + } + + if (($cgiparams{'TYPE'} eq 'net') && ($cgiparams{'SIDE'} !~ /^(left|right)$/)) { + $errormessage = $Lang::tr{'ipcop side is invalid'}; + goto VPNCONF_ERROR; + } + + # Check if there is no other entry with this name + if (! $cgiparams{'KEY'}) { + foreach my $key (keys %confighash) { + if ($confighash{$key}[1] eq $cgiparams{'NAME'}) { + $errormessage = $Lang::tr{'a connection with this name already exists'}; + goto VPNCONF_ERROR; + } + } + } + + if (($cgiparams{'TYPE'} eq 'net') && (! $cgiparams{'REMOTE'})) { + $errormessage = $Lang::tr{'invalid input for remote host/ip'}; + goto VPNCONF_ERROR; + } + + if ($cgiparams{'REMOTE'}) { + if (! &General::validip($cgiparams{'REMOTE'})) { + if (! &General::validfqdn ($cgiparams{'REMOTE'})) { + $errormessage = $Lang::tr{'invalid input for remote host/ip'}; + goto VPNCONF_ERROR; + } else { + if (&valid_dns_host($cgiparams{'REMOTE'})) { + $warnmessage = "$Lang::tr{'check vpn lr'} $cgiparams{'REMOTE'}. $Lang::tr{'dns check failed'}"; + } + } + } + } + + unless (&General::validipandmask($cgiparams{'LOCAL_SUBNET'})) { + $errormessage = $Lang::tr{'local subnet is invalid'}; + goto VPNCONF_ERROR; + } + + # Check if there is no other entry without IP-address and PSK + if ($cgiparams{'REMOTE'} eq '') { + foreach my $key (keys %confighash) { + if(($cgiparams{'KEY'} ne $key) && + ($confighash{$key}[4] eq 'psk' || $cgiparams{'AUTH'} eq 'psk') && + $confighash{$key}[10] eq '') { + $errormessage = $Lang::tr{'you can only define one roadwarrior connection when using pre-shared key authentication'}; + goto VPNCONF_ERROR; + } + } + } + if (($cgiparams{'TYPE'} eq 'net') && (! &General::validipandmask($cgiparams{'REMOTE_SUBNET'}))) { + $errormessage = $Lang::tr{'remote subnet is invalid'}; + goto VPNCONF_ERROR; + } + + if ($cgiparams{'ENABLED'} !~ /^(on|off)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto VPNCONF_ERROR; + } + if ($cgiparams{'EDIT_ADVANCED'} !~ /^(on|off)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto VPNCONF_ERROR; + } + + if (($cgiparams{'LOCAL_ID'} !~ /^(|@[a-zA-Z0-9_.-]*)$/) || + ($cgiparams{'REMOTE_ID'} !~ /^(|@[a-zA-Z0-9_.-]*)$/) || + (($cgiparams{'REMOTE_ID'} eq $cgiparams{'LOCAL_ID'}) && ($cgiparams{'LOCAL_ID'} ne '')) + ) { + $errormessage = $Lang::tr{'invalid local-remote id'}; + goto VPNCONF_ERROR; + } + + if ($cgiparams{'AUTH'} eq 'psk') { + if (! length($cgiparams{'PSK'}) ) { + $errormessage = $Lang::tr{'pre-shared key is too short'}; + goto VPNCONF_ERROR; + } + if ($cgiparams{'PSK'} =~ /['",&]/) { # " ' correct coloring syntax editor ! + $errormessage = $Lang::tr{'invalid characters found in pre-shared key'}; + goto VPNCONF_ERROR; + } + } elsif ($cgiparams{'AUTH'} eq 'certreq') { + if ($cgiparams{'KEY'}) { + $errormessage = $Lang::tr{'cant change certificates'}; + goto VPNCONF_ERROR; + } + if (ref ($cgiparams{'FH'}) ne 'Fh') { + $errormessage = $Lang::tr{'there was no file upload'}; + goto VPNCONF_ERROR; + } + + # Move uploaded certificate request to a temporary file + (my $fh, my $filename) = tempfile( ); + if (copy ($cgiparams{'FH'}, $fh) != 1) { + $errormessage = $!; + goto VPNCONF_ERROR; + } + + # Sign the certificate request and move it + # Sign the host certificate request + system('/usr/bin/openssl', 'ca', '-days', '999999', + '-batch', '-notext', + '-in', $filename, + '-out', "${General::swroot}/certs/$cgiparams{'NAME'}cert.pem"); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ($filename); + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}cert.pem"); + &cleanssldatabase(); + goto VPNCONF_ERROR; + } else { + unlink ($filename); + &cleanssldatabase(); + } + + my $temp = `/usr/bin/openssl x509 -text -in ${General::swroot}/certs/$cgiparams{'NAME'}cert.pem`; + $temp =~ /Subject:.*CN=(.*)[\n]/; + $temp = $1; + $temp =~ s+/Email+, E+; + $temp =~ s/ ST=/ S=/; + $cgiparams{'CERT_NAME'} = $temp; + $cgiparams{'CERT_NAME'} =~ s/,//g; + $cgiparams{'CERT_NAME'} =~ s/\'//g; + if ($cgiparams{'CERT_NAME'} eq '') { + $errormessage = $Lang::tr{'could not retrieve common name from certificate'}; + goto VPNCONF_ERROR; + } + } elsif ($cgiparams{'AUTH'} eq 'certfile') { + if ($cgiparams{'KEY'}) { + $errormessage = $Lang::tr{'cant change certificates'}; + goto VPNCONF_ERROR; + } + if (ref ($cgiparams{'FH'}) ne 'Fh') { + $errormessage = $Lang::tr{'there was no file upload'}; + goto VPNCONF_ERROR; + } + # Move uploaded certificate to a temporary file + (my $fh, my $filename) = tempfile( ); + if (copy ($cgiparams{'FH'}, $fh) != 1) { + $errormessage = $!; + goto VPNCONF_ERROR; + } + + # Verify the certificate has a valid CA and move it + my $validca = 0; + my $test = `/usr/bin/openssl verify -CAfile ${General::swroot}/ca/cacert.pem $filename`; + if ($test =~ /: OK/) { + $validca = 1; + } else { + foreach my $key (keys %cahash) { + $test = `/usr/bin/openssl verify -CAfile ${General::swroot}/ca/$cahash{$key}[0]cert.pem $filename`; + if ($test =~ /: OK/) { + $validca = 1; + } + } + } + if (! $validca) { + $errormessage = $Lang::tr{'certificate does not have a valid ca associated with it'}; + unlink ($filename); + goto VPNCONF_ERROR; + } else { + move($filename, "${General::swroot}/certs/$cgiparams{'NAME'}cert.pem"); + if ($? ne 0) { + $errormessage = "$Lang::tr{'certificate file move failed'}: $!"; + unlink ($filename); + goto VPNCONF_ERROR; + } + } + + my $temp = `/usr/bin/openssl x509 -text -in ${General::swroot}/certs/$cgiparams{'NAME'}cert.pem`; + $temp =~ /Subject:.*CN=(.*)[\n]/; + $temp = $1; + $temp =~ s+/Email+, E+; + $temp =~ s/ ST=/ S=/; + $cgiparams{'CERT_NAME'} = $temp; + $cgiparams{'CERT_NAME'} =~ s/,//g; + $cgiparams{'CERT_NAME'} =~ s/\'//g; + if ($cgiparams{'CERT_NAME'} eq '') { + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}cert.pem"); + $errormessage = $Lang::tr{'could not retrieve common name from certificate'}; + goto VPNCONF_ERROR; + } + } elsif ($cgiparams{'AUTH'} eq 'certgen') { + if ($cgiparams{'KEY'}) { + $errormessage = $Lang::tr{'cant change certificates'}; + goto VPNCONF_ERROR; + } + # Validate input since the form was submitted + if (length($cgiparams{'CERT_NAME'}) >60) { + $errormessage = $Lang::tr{'name too long'}; + goto VPNCONF_ERROR; + } + if ($cgiparams{'CERT_NAME'} !~ /^[a-zA-Z0-9 ,\.\-_]+$/) { + $errormessage = $Lang::tr{'invalid input for name'}; + goto VPNCONF_ERROR; + } + if ($cgiparams{'CERT_EMAIL'} ne '' && (! &General::validemail($cgiparams{'CERT_EMAIL'}))) { + $errormessage = $Lang::tr{'invalid input for e-mail address'}; + goto VPNCONF_ERROR; + } + if (length($cgiparams{'CERT_EMAIL'}) > 40) { + $errormessage = $Lang::tr{'e-mail address too long'}; + goto VPNCONF_ERROR; + } + if ($cgiparams{'CERT_OU'} ne '' && $cgiparams{'CERT_OU'} !~ /^[a-zA-Z0-9 ,\.\-_]*$/) { + $errormessage = $Lang::tr{'invalid input for department'}; + goto VPNCONF_ERROR; + } + if (length($cgiparams{'CERT_ORGANIZATION'}) >60) { + $errormessage = $Lang::tr{'organization too long'}; + goto VPNCONF_ERROR; + } + if ($cgiparams{'CERT_ORGANIZATION'} !~ /^[a-zA-Z0-9 ,\.\-_]+$/) { + $errormessage = $Lang::tr{'invalid input for organization'}; + goto VPNCONF_ERROR; + } + if ($cgiparams{'CERT_CITY'} ne '' && $cgiparams{'CERT_CITY'} !~ /^[a-zA-Z0-9 ,\.\-_]*$/) { + $errormessage = $Lang::tr{'invalid input for city'}; + goto VPNCONF_ERROR; + } + if ($cgiparams{'CERT_STATE'} ne '' && $cgiparams{'CERT_STATE'} !~ /^[a-zA-Z0-9 ,\.\-_]*$/) { + $errormessage = $Lang::tr{'invalid input for state or province'}; + goto VPNCONF_ERROR; + } + if ($cgiparams{'CERT_COUNTRY'} !~ /^[A-Z]*$/) { + $errormessage = $Lang::tr{'invalid input for country'}; + goto VPNCONF_ERROR; + } + if (length($cgiparams{'CERT_PASS1'}) < 5) { + $errormessage = $Lang::tr{'password too short'}; + goto VPNCONF_ERROR; + } + if ($cgiparams{'CERT_PASS1'} ne $cgiparams{'CERT_PASS2'}) { + $errormessage = $Lang::tr{'passwords do not match'}; + goto VPNCONF_ERROR; + } + + # Replace empty strings with a . + (my $ou = $cgiparams{'CERT_OU'}) =~ s/^\s*$/\./; + (my $city = $cgiparams{'CERT_CITY'}) =~ s/^\s*$/\./; + (my $state = $cgiparams{'CERT_STATE'}) =~ s/^\s*$/\./; + + # Create the Host certificate request + my $pid = open(OPENSSL, "|-"); + $SIG{ALRM} = sub { $errormessage = $Lang::tr{'broken pipe'}; goto VPNCONF_ERROR;}; + if ($pid) { # parent + print OPENSSL "$cgiparams{'CERT_COUNTRY'}\n"; + print OPENSSL "$state\n"; + print OPENSSL "$city\n"; + print OPENSSL "$cgiparams{'CERT_ORGANIZATION'}\n"; + print OPENSSL "$ou\n"; + print OPENSSL "$cgiparams{'CERT_NAME'}\n"; + print OPENSSL "$cgiparams{'CERT_EMAIL'}\n"; + print OPENSSL ".\n"; + print OPENSSL ".\n"; + close (OPENSSL); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}key.pem"); + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}req.pem"); + goto VPNCONF_ERROR; + } + } else { # child + unless (exec ('/usr/bin/openssl', 'req', '-nodes', '-rand', '/proc/interrupts:/proc/net/rt_cache', + '-newkey', 'rsa:1024', + '-keyout', "${General::swroot}/certs/$cgiparams{'NAME'}key.pem", + '-out', "${General::swroot}/certs/$cgiparams{'NAME'}req.pem")) { + $errormessage = "$Lang::tr{'cant start openssl'}: $!"; + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}key.pem"); + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}req.pem"); + goto VPNCONF_ERROR; + } + } + + # Sign the host certificate request + system('/usr/bin/openssl', 'ca', '-days', '999999', + '-batch', '-notext', + '-in', "${General::swroot}/certs/$cgiparams{'NAME'}req.pem", + '-out', "${General::swroot}/certs/$cgiparams{'NAME'}cert.pem"); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}key.pem"); + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}req.pem"); + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}cert.pem"); + &cleanssldatabase(); + goto VPNCONF_ERROR; + } else { + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}req.pem"); + &cleanssldatabase(); + } + + # Create the pkcs12 file + system('/usr/bin/openssl', 'pkcs12', '-export', + '-inkey', "${General::swroot}/certs/$cgiparams{'NAME'}key.pem", + '-in', "${General::swroot}/certs/$cgiparams{'NAME'}cert.pem", + '-name', $cgiparams{'NAME'}, + '-passout', "pass:$cgiparams{'CERT_PASS1'}", + '-certfile', "${General::swroot}/ca/cacert.pem", + '-caname', "$vpnsettings{'ROOTCERT_ORGANIZATION'} CA", + '-out', "${General::swroot}/certs/$cgiparams{'NAME'}.p12"); + if ($?) { + $errormessage = "$Lang::tr{'openssl produced an error'}: $?"; + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}key.pem"); + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}cert.pem"); + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}.p12"); + goto VPNCONF_ERROR; + } else { + unlink ("${General::swroot}/certs/$cgiparams{'NAME'}key.pem"); + } + } elsif ($cgiparams{'AUTH'} eq 'cert') { + ;# Nothing, just editing + } else { + $errormessage = $Lang::tr{'invalid input for authentication method'}; + goto VPNCONF_ERROR; + } + + # Check if there is no other entry with this common name + if ((! $cgiparams{'KEY'}) && ($cgiparams{'AUTH'} ne 'psk')) { + foreach my $key (keys %confighash) { + if ($confighash{$key}[2] eq $cgiparams{'CERT_NAME'}) { + $errormessage = $Lang::tr{'a connection with this common name already exists'}; + goto VPNCONF_ERROR; + } + } + } + + # Save the config + my $key = $cgiparams{'KEY'}; + if (! $key) { + $key = &General::findhasharraykey (\%confighash); + foreach my $i (0 .. 28) { $confighash{$key}[$i] = "";} + } + $confighash{$key}[0] = $cgiparams{'ENABLED'}; + $confighash{$key}[1] = $cgiparams{'NAME'}; + if ((! $cgiparams{'KEY'}) && $cgiparams{'AUTH'} ne 'psk') { + $confighash{$key}[2] = $cgiparams{'CERT_NAME'}; + } + $confighash{$key}[3] = $cgiparams{'TYPE'}; + if ($cgiparams{'AUTH'} eq 'psk') { + $confighash{$key}[4] = 'psk'; + $confighash{$key}[5] = $cgiparams{'PSK'}; + } else { + $confighash{$key}[4] = 'cert'; + } + if ($cgiparams{'TYPE'} eq 'net') { + $confighash{$key}[6] = $cgiparams{'SIDE'}; + $confighash{$key}[11] = $cgiparams{'REMOTE_SUBNET'}; + } + $confighash{$key}[7] = $cgiparams{'LOCAL_ID'}; + $confighash{$key}[8] = $cgiparams{'LOCAL_SUBNET'}; + $confighash{$key}[9] = $cgiparams{'REMOTE_ID'}; + $confighash{$key}[10] = $cgiparams{'REMOTE'}; + $confighash{$key}[25] = $cgiparams{'REMARK'}; + $confighash{$key}[26] = $cgiparams{'INTERFACE'}; + $confighash{$key}[27] = $cgiparams{'DPD_ACTION'}; + $confighash{$key}[28] = $cgiparams{'PFS_YES_NO'}; + + #use default advanced value + $confighash{$key}[14] = 'on'; + $confighash{$key}[13] = 'off'; + $confighash{$key}[18] = 'aes128|3des'; + $confighash{$key}[19] = 'sha|md5'; + $confighash{$key}[20] = '1536|1024'; + $confighash{$key}[16] = '1'; + $confighash{$key}[21] = 'aes128|3des'; + $confighash{$key}[22] = 'sha1|md5'; + $confighash{$key}[23] = ''; + $confighash{$key}[17] = '8'; + $confighash{$key}[24] = 'off'; + + #free unused fields! + #$confighash{$key}[12] = ''; + #$confighash{$key}[15] = ''; + + &General::writehasharray("${General::swroot}/vpn/config", \%confighash); + &writeipsecfiles(); + if ($vpnsettings{'ENABLED'} eq 'on' || + $vpnsettings{'ENABLED_BLUE'} eq 'on') { + system('/usr/local/bin/ipsecctrl', 'S', $key); + sleep $sleepDelay; + } + if ($cgiparams{'EDIT_ADVANCED'} eq 'on') { + $cgiparams{'KEY'} = $key; + $cgiparams{'ACTION'} = $Lang::tr{'advanced'}; + } + goto VPNCONF_END; + } else { # add new connection + $cgiparams{'ENABLED'} = 'on'; + $cgiparams{'SIDE'} = 'left'; + if ( ! -f "${General::swroot}/private/cakey.pem" ) { + $cgiparams{'AUTH'} = 'psk'; + } elsif ( ! -f "${General::swroot}/ca/cacert.pem") { + $cgiparams{'AUTH'} = 'certfile'; + } else { + $cgiparams{'AUTH'} = 'certgen'; + } + $cgiparams{'LOCAL_SUBNET'} ="$netsettings{'GREEN_NETADDRESS'}/$netsettings{'GREEN_NETMASK'}"; + $cgiparams{'CERT_ORGANIZATION'} = $vpnsettings{'ROOTCERT_ORGANIZATION'}; + $cgiparams{'CERT_CITY'} = $vpnsettings{'ROOTCERT_CITY'}; + $cgiparams{'CERT_STATE'} = $vpnsettings{'ROOTCERT_STATE'}; + $cgiparams{'CERT_COUNTRY'} = $vpnsettings{'ROOTCERT_COUNTRY'}; + + # choose appropriate dpd action + if ($cgiparams{'TYPE'} eq 'host') { + $cgiparams{'DPD_ACTION'} = 'clear'; + } else { + $cgiparams{'DPD_ACTION'} = 'hold'; #restart when available! + } + + # Default is yes for 'pfs' + $cgiparams{'PFS_YES_NO'} = 'yes'; + + # ID are empty + $cgiparams{'LOCAL_ID'} = ''; + $cgiparams{'REMOTE_ID'} = ''; + + } + + VPNCONF_ERROR: + $checked{'ENABLED'}{'off'} = ''; + $checked{'ENABLED'}{'on'} = ''; + $checked{'ENABLED'}{$cgiparams{'ENABLED'}} = "checked='checked'"; + $checked{'ENABLED_BLUE'}{'off'} = ''; + $checked{'ENABLED_BLUE'}{'on'} = ''; + $checked{'ENABLED_BLUE'}{$cgiparams{'ENABLED_BLUE'}} = "checked='checked'"; + + $checked{'EDIT_ADVANCED'}{'off'} = ''; + $checked{'EDIT_ADVANCED'}{'on'} = ''; + $checked{'EDIT_ADVANCED'}{$cgiparams{'EDIT_ADVANCED'}} = "checked='checked'"; + + $selected{'SIDE'}{'left'} = ''; + $selected{'SIDE'}{'right'} = ''; + $selected{'SIDE'}{$cgiparams{'SIDE'}} = "selected='selected'"; + + $checked{'AUTH'}{'psk'} = ''; + $checked{'AUTH'}{'certreq'} = ''; + $checked{'AUTH'}{'certgen'} = ''; + $checked{'AUTH'}{'certfile'} = ''; + $checked{'AUTH'}{$cgiparams{'AUTH'}} = "checked='checked'"; + + $selected{'INTERFACE'}{$cgiparams{'INTERFACE'}} = "selected='selected'"; + $selected{'DPD_ACTION'}{$cgiparams{'DPD_ACTION'}} = "selected='selected'"; + $selected{'PFS_YES_NO'}{$cgiparams{'PFS_YES_NO'}} = "selected='selected'"; + + if (1) { + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'vpn configuration main'}, 1, ''); + &Header::openbigbox('100%', 'LEFT', '', $errormessage); + if ($errormessage) { + &Header::openbox('100%', 'LEFT', $Lang::tr{'error messages'}); + print "$errormessage"; + print " "; + &Header::closebox(); + } + + if ($warnmessage) { + &Header::openbox('100%', 'LEFT', "$Lang::tr{'warning messages'}:"); + print "$warnmessage"; + print " "; + &Header::closebox(); + } + + print "
    "; + print ""; + + if ($cgiparams{'KEY'}) { + print ""; + print ""; + } + + &Header::openbox('100%', 'LEFT', "$Lang::tr{'connection'}:"); + print ""; + print ""; + if ($cgiparams{'KEY'}) { + print ""; + } else { + print ""; + } + print ""; + + if ($cgiparams{'TYPE'} eq 'host') { + + print ""; + print ""; + print < + + + + + +END + ; + } else { + print < + + + + + + + + +END + ; + } + print < + + + + + + + + + + +END + ; + if (!$cgiparams{'KEY'}) { + print ""; + } + print "
    $Lang::tr{'name'}:$cgiparams{'NAME'}$Lang::tr{'enabled'}
    $Lang::tr{'interface'}
    $Lang::tr{'local subnet'} 
    $Lang::tr{'remote host/ip'}: * 
    $Lang::tr{'ipcop side'}$Lang::tr{'remote host/ip'}:
    $Lang::tr{'local subnet'}$Lang::tr{'remote subnet'}
    $Lang::tr{'dpd action'}:  ? $Lang::tr{'pfs yes no'}:
    $Lang::tr{'options'}
    leftid: * +
    ($Lang::tr{'eg'} @xy.example.com)
    rightid: *
    $Lang::tr{'remark title'} *
    $Lang::tr{'edit advanced settings when done'}
    "; + &Header::closebox(); + + if ($cgiparams{'KEY'} && $cgiparams{'AUTH'} eq 'psk') { + &Header::openbox('100%', 'LEFT', $Lang::tr{'authentication'}); + print < + $Lang::tr{'use a pre-shared key'} + + +END + ; + &Header::closebox(); + } elsif (! $cgiparams{'KEY'}) { + my $disabled=''; + my $cakeydisabled=''; + my $cacrtdisabled=''; + if ( ! -f "${General::swroot}/private/cakey.pem" ) { $cakeydisabled = "disabled='disabled'" } else { $cakeydisabled = "" }; + if ( ! -f "${General::swroot}/ca/cacert.pem" ) { $cacrtdisabled = "disabled='disabled'" } else { $cacrtdisabled = "" }; + &Header::openbox('100%', 'LEFT', $Lang::tr{'authentication'}); + print < + + $Lang::tr{'use a pre-shared key'} + + + + $Lang::tr{'upload a certificate request'} + + + $Lang::tr{'upload a certificate'} + + + $Lang::tr{'generate a certificate'}  +   + $Lang::tr{'users fullname or system hostname'}: + +   + $Lang::tr{'users email'}: * + +   + $Lang::tr{'users department'}: * + +   + $Lang::tr{'organization name'}: * + +   + $Lang::tr{'city'}: * + +   + $Lang::tr{'state or province'}: * + +   + $Lang::tr{'country'}: + +  $Lang::tr{'pkcs12 file password'}:
    ($Lang::tr{'confirmation'}) + + +END + ; + &Header::closebox(); + } + + print "
    "; + if ($cgiparams{'KEY'}) { + print ""; + } + print "
    "; + &Header::closebigbox(); + &Header::closepage(); + exit (0); + } + VPNCONF_END: +} + +### +### Advanced settings +### +if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || + ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'ADVANCED'} eq 'yes')) { + &General::readhash("${General::swroot}/vpn/settings", \%vpnsettings); + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + if (! $confighash{$cgiparams{'KEY'}}) { + $errormessage = $Lang::tr{'invalid key'}; + goto ADVANCED_END; + } + + if ($cgiparams{'ACTION'} eq $Lang::tr{'save'}) { + if ($cgiparams{'NAT'} !~ /^(on|off)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + if ($cgiparams{'COMPRESSION'} !~ /^(on|off)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + if ($cgiparams{'NAT'} eq 'on' && $cgiparams{'COMPRESSION'} eq 'on') { + $errormessage = $Lang::tr{'cannot enable both nat traversal and compression'}; + goto ADVANCED_ERROR; + } + my @temp = split('\|', $cgiparams{'IKE_ENCRYPTION'}); + if ($#temp < 0) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + foreach my $val (@temp) { + if ($val !~ /^(aes256|aes128|3des|twofish256|twofish128|serpent256|serpent128|blowfish256|blowfish128|cast128)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + } + @temp = split('\|', $cgiparams{'IKE_INTEGRITY'}); + if ($#temp < 0) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + foreach my $val (@temp) { + if ($val !~ /^(sha2_512|sha2_256|sha|md5)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + } + @temp = split('\|', $cgiparams{'IKE_GROUPTYPE'}); + if ($#temp < 0) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + foreach my $val (@temp) { + if ($val !~ /^(768|1024|1536|2048|3072|4096|6144|8192)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + } + if ($cgiparams{'IKE_LIFETIME'} !~ /^\d+$/) { + $errormessage = $Lang::tr{'invalid input for ike lifetime'}; + goto ADVANCED_ERROR; + } + if ($cgiparams{'IKE_LIFETIME'} < 1 || $cgiparams{'IKE_LIFETIME'} > 8) { + $errormessage = $Lang::tr{'ike lifetime should be between 1 and 8 hours'}; + goto ADVANCED_ERROR; + } + @temp = split('\|', $cgiparams{'ESP_ENCRYPTION'}); + if ($#temp < 0) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + foreach my $val (@temp) { + if ($val !~ /^(aes256|aes128|3des|twofish256|twofish128|serpent256|serpent128|blowfish256|blowfish128)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + } + @temp = split('\|', $cgiparams{'ESP_INTEGRITY'}); + if ($#temp < 0) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + foreach my $val (@temp) { + if ($val !~ /^(sha2_512|sha2_256|sha1|md5)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + } + if ($cgiparams{'ESP_GROUPTYPE'} ne '' && + $cgiparams{'ESP_GROUPTYPE'} !~ /^modp(768|1024|1536|2048|3072|4096)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + + if ($cgiparams{'ESP_KEYLIFE'} !~ /^\d+$/) { + $errormessage = $Lang::tr{'invalid input for esp keylife'}; + goto ADVANCED_ERROR; + } + if ($cgiparams{'ESP_KEYLIFE'} < 1 || $cgiparams{'ESP_KEYLIFE'} > 24) { + $errormessage = $Lang::tr{'esp keylife should be between 1 and 24 hours'}; + goto ADVANCED_ERROR; + } + if ($cgiparams{'ONLY_PROPOSED'} !~ /^(on|off)$/) { + $errormessage = $Lang::tr{'invalid input'}; + goto ADVANCED_ERROR; + } + $confighash{$cgiparams{'KEY'}}[14] = $cgiparams{'NAT'}; + $confighash{$cgiparams{'KEY'}}[13] = $cgiparams{'COMPRESSION'}; + $confighash{$cgiparams{'KEY'}}[18] = $cgiparams{'IKE_ENCRYPTION'}; + $confighash{$cgiparams{'KEY'}}[19] = $cgiparams{'IKE_INTEGRITY'}; + $confighash{$cgiparams{'KEY'}}[20] = $cgiparams{'IKE_GROUPTYPE'}; + $confighash{$cgiparams{'KEY'}}[16] = $cgiparams{'IKE_LIFETIME'}; + $confighash{$cgiparams{'KEY'}}[21] = $cgiparams{'ESP_ENCRYPTION'}; + $confighash{$cgiparams{'KEY'}}[22] = $cgiparams{'ESP_INTEGRITY'}; + $confighash{$cgiparams{'KEY'}}[23] = $cgiparams{'ESP_GROUPTYPE'}; + $confighash{$cgiparams{'KEY'}}[17] = $cgiparams{'ESP_KEYLIFE'}; + $confighash{$cgiparams{'KEY'}}[24] = $cgiparams{'ONLY_PROPOSED'}; + &General::writehasharray("${General::swroot}/vpn/config", \%confighash); + &writeipsecfiles(); + if ($vpnsettings{'ENABLED'} eq 'on' || + $vpnsettings{'ENABLED_BLUE'} eq 'on') { + system('/usr/local/bin/ipsecctrl', 'S', $cgiparams{'KEY'}); + sleep $sleepDelay; + } + goto ADVANCED_END; + } else { + + $cgiparams{'NAT'} = $confighash{$cgiparams{'KEY'}}[14]; + $cgiparams{'COMPRESSION'} = $confighash{$cgiparams{'KEY'}}[13]; + $cgiparams{'IKE_ENCRYPTION'} = $confighash{$cgiparams{'KEY'}}[18]; + $cgiparams{'IKE_INTEGRITY'} = $confighash{$cgiparams{'KEY'}}[19]; + $cgiparams{'IKE_GROUPTYPE'} = $confighash{$cgiparams{'KEY'}}[20]; + $cgiparams{'IKE_LIFETIME'} = $confighash{$cgiparams{'KEY'}}[16]; + $cgiparams{'ESP_ENCRYPTION'} = $confighash{$cgiparams{'KEY'}}[21]; + $cgiparams{'ESP_INTEGRITY'} = $confighash{$cgiparams{'KEY'}}[22]; + $cgiparams{'ESP_GROUPTYPE'} = $confighash{$cgiparams{'KEY'}}[23]; + $cgiparams{'ESP_KEYLIFE'} = $confighash{$cgiparams{'KEY'}}[17]; + $cgiparams{'ONLY_PROPOSED'} = $confighash{$cgiparams{'KEY'}}[24]; + + if ($confighash{$cgiparams{'KEY'}}[3] eq 'net' || $confighash{$cgiparams{'KEY'}}[10]) { + $cgiparams{'NAT'} = 'off'; + } + } + + ADVANCED_ERROR: + $checked{'NAT'}{'off'} = ''; + $checked{'NAT'}{'on'} = ''; + $checked{'NAT'}{$cgiparams{'NAT'}} = "checked='checked'"; + $checked{'COMPRESSION'}{'off'} = ''; + $checked{'COMPRESSION'}{'on'} = ''; + $checked{'COMPRESSION'}{$cgiparams{'COMPRESSION'}} = "checked='checked'"; + $checked{'IKE_ENCRYPTION'}{'aes256'} = ''; + $checked{'IKE_ENCRYPTION'}{'aes128'} = ''; + $checked{'IKE_ENCRYPTION'}{'3des'} = ''; + $checked{'IKE_ENCRYPTION'}{'twofish256'} = ''; + $checked{'IKE_ENCRYPTION'}{'twofish128'} = ''; + $checked{'IKE_ENCRYPTION'}{'serpent256'} = ''; + $checked{'IKE_ENCRYPTION'}{'serpent128'} = ''; + $checked{'IKE_ENCRYPTION'}{'blowfish256'} = ''; + $checked{'IKE_ENCRYPTION'}{'blowfish128'} = ''; + $checked{'IKE_ENCRYPTION'}{'cast128'} = ''; + my @temp = split('\|', $cgiparams{'IKE_ENCRYPTION'}); + foreach my $key (@temp) {$checked{'IKE_ENCRYPTION'}{$key} = "selected='selected'"; } + $checked{'IKE_INTEGRITY'}{'sha2_512'} = ''; + $checked{'IKE_INTEGRITY'}{'sha2_256'} = ''; + $checked{'IKE_INTEGRITY'}{'sha'} = ''; + $checked{'IKE_INTEGRITY'}{'md5'} = ''; + @temp = split('\|', $cgiparams{'IKE_INTEGRITY'}); + foreach my $key (@temp) {$checked{'IKE_INTEGRITY'}{$key} = "selected='selected'"; } + $checked{'IKE_GROUPTYPE'}{'768'} = ''; + $checked{'IKE_GROUPTYPE'}{'1024'} = ''; + $checked{'IKE_GROUPTYPE'}{'1536'} = ''; + $checked{'IKE_GROUPTYPE'}{'2048'} = ''; + $checked{'IKE_GROUPTYPE'}{'3072'} = ''; + $checked{'IKE_GROUPTYPE'}{'4096'} = ''; + $checked{'IKE_GROUPTYPE'}{'6144'} = ''; + $checked{'IKE_GROUPTYPE'}{'8192'} = ''; + @temp = split('\|', $cgiparams{'IKE_GROUPTYPE'}); + foreach my $key (@temp) {$checked{'IKE_GROUPTYPE'}{$key} = "selected='selected'"; } + $checked{'ESP_ENCRYPTION'}{'aes256'} = ''; + $checked{'ESP_ENCRYPTION'}{'aes128'} = ''; + $checked{'ESP_ENCRYPTION'}{'3des'} = ''; + $checked{'ESP_ENCRYPTION'}{'twofish256'} = ''; + $checked{'ESP_ENCRYPTION'}{'twofish128'} = ''; + $checked{'ESP_ENCRYPTION'}{'serpent256'} = ''; + $checked{'ESP_ENCRYPTION'}{'serpent128'} = ''; + $checked{'ESP_ENCRYPTION'}{'blowfish256'} = ''; + $checked{'ESP_ENCRYPTION'}{'blowfish128'} = ''; + @temp = split('\|', $cgiparams{'ESP_ENCRYPTION'}); + foreach my $key (@temp) {$checked{'ESP_ENCRYPTION'}{$key} = "selected='selected'"; } + $checked{'ESP_INTEGRITY'}{'sha2_512'} = ''; + $checked{'ESP_INTEGRITY'}{'sha2_256'} = ''; + $checked{'ESP_INTEGRITY'}{'sha1'} = ''; + $checked{'ESP_INTEGRITY'}{'md5'} = ''; + @temp = split('\|', $cgiparams{'ESP_INTEGRITY'}); + foreach my $key (@temp) {$checked{'ESP_INTEGRITY'}{$key} = "selected='selected'"; } + $checked{'ESP_GROUPTYPE'}{'modp768'} = ''; + $checked{'ESP_GROUPTYPE'}{'modp1024'} = ''; + $checked{'ESP_GROUPTYPE'}{'modp1536'} = ''; + $checked{'ESP_GROUPTYPE'}{'modp2048'} = ''; + $checked{'ESP_GROUPTYPE'}{'modp3072'} = ''; + $checked{'ESP_GROUPTYPE'}{'modp4096'} = ''; + $checked{'ESP_GROUPTYPE'}{$cgiparams{'ESP_GROUPTYPE'}} = "selected='selected'"; + $checked{'ONLY_PROPOSED'}{'off'} = ''; + $checked{'ONLY_PROPOSED'}{'on'} = ''; + $checked{'ONLY_PROPOSED'}{$cgiparams{'ONLY_PROPOSED'}} = "checked='checked'"; + + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'vpn configuration main'}, 1, ''); + &Header::openbigbox('100%', 'LEFT', '', $errormessage); + + if ($errormessage) { + &Header::openbox('100%', 'LEFT', $Lang::tr{'error messages'}); + print "$errormessage"; + print " "; + &Header::closebox(); + } + + if ($warnmessage) { + &Header::openbox('100%', 'LEFT', $Lang::tr{'warning messages'}); + print "$warnmessage"; + print " "; + &Header::closebox(); + } + + print "
    \n"; + print "\n"; + print "\n"; + + &Header::openbox('100%', 'LEFT', "$Lang::tr{'advanced'}:"); + print "\n"; + print "\n"; + print "\n"; + if ($confighash{$cgiparams{'KEY'}}[3] eq 'net') { + print "\n"; + } elsif ($confighash{$cgiparams{'KEY'}}[10]) { + print "\n"; + print "\n"; + } else { + print "\n"; + print "\n"; + } + print < + + + + + + + + + + + + + + + + +
    $Lang::tr{'compression'} 
    $Lang::tr{'nat-traversal'}
    $Lang::tr{'nat-traversal'}
    $Lang::tr{'ike encryption'}$Lang::tr{'ike integrity'}
    $Lang::tr{'ike lifetime'} $Lang::tr{'hours'}$Lang::tr{'ike grouptype'}
    $Lang::tr{'esp encryption'}$Lang::tr{'esp integrity'}
    $Lang::tr{'esp keylife'} $Lang::tr{'hours'}$Lang::tr{'esp grouptype'}
    + $Lang::tr{'use only proposed settings'}
    +EOF + ; + &Header::closebox(); + print "
    "; + print "
    "; + &Header::closebigbox(); + &Header::closepage(); + exit(0); + + ADVANCED_END: +} + +### +### Default status page +### + %cgiparams = (); + %cahash = (); + %confighash = (); + &General::readhash("${General::swroot}/vpn/settings", \%cgiparams); + &General::readhasharray("${General::swroot}/vpn/caconfig", \%cahash); + &General::readhasharray("${General::swroot}/vpn/config", \%confighash); + + my @status = `/usr/sbin/ipsec auto --status`; + + # suggest a default name for this side + if ($cgiparams{'VPN_IP'} eq '' && -e "${General::swroot}/red/active") { + if (open(IPADDR, "${General::swroot}/red/local-ipaddress")) { + my $ipaddr = ; + close IPADDR; + chomp ($ipaddr); + $cgiparams{'VPN_IP'} = (gethostbyaddr(pack("C4", split(/\./, $ipaddr)), 2))[0]; + if ($cgiparams{'VPN_IP'} eq '') { + $cgiparams{'VPN_IP'} = $ipaddr; + } + } + } + # no IP found, use %defaultroute + $cgiparams{'VPN_IP'} ='%defaultroute' if ($cgiparams{'VPN_IP'} eq ''); + + $cgiparams{'VPN_DELAYED_START'} = 0 if (! defined ($cgiparams{'VPN_DELAYED_START'})); + map ($checked{$_} = $cgiparams{$_} eq 'on' ? "checked='checked'" : '', + ('ENABLED','ENABLED_BLUE','DBG_CRYPT','DBG_PARSING','DBG_EMITTING','DBG_CONTROL', + 'DBG_KLIPS','DBG_DNS','DBG_NAT_T')); + + + &Header::showhttpheaders(); + &Header::openpage($Lang::tr{'vpn configuration main'}, 1, ''); + &Header::openbigbox('100%', 'LEFT', '', $errormessage); + + if ($errormessage) { + &Header::openbox('100%', 'LEFT', $Lang::tr{'error messages'}); + print "$errormessage\n"; + print " \n"; + &Header::closebox(); + } + + &Header::openbox('100%', 'LEFT', $Lang::tr{'global settings'}); + print < + + + + + + +END + ; + if ($netsettings{'BLUE_DEV'} ne '') { + print < + + + + +END + ; + } +print <$Lang::tr{'vpn delayed start'}: * + + + +
    $Lang::tr{'local vpn hostname/ip'}:$Lang::tr{'enabled'}
    $Lang::tr{'vpn on blue'}:$Lang::tr{'enabled'}
    $Lang::tr{'override mtu'}: *
    + + + + + + + + + +
    PLUTO DEBUGcrypt:parsing:emitting:control:klips:dns:nat_t:
    +
    + + + + + + +
    *$Lang::tr{'vpn delayed start help'}
    +END +; + print ""; + &Header::closebox(); + + &Header::openbox('100%', 'LEFT', $Lang::tr{'connection status and controlc'}); + print < + + $Lang::tr{'name'} + $Lang::tr{'type'} + $Lang::tr{'common name'} + $Lang::tr{'remark'}
    L2089 + $Lang::tr{'status'} + $Lang::tr{'action'} + +END + ; + my $id = 0; + my $gif; + foreach my $key (keys %confighash) { + if ($confighash{$key}[0] eq 'on') { $gif = 'on.gif'; } else { $gif = 'off.gif'; } + + if ($id % 2) { + print "\n"; + } else { + print "\n"; + } + print "$confighash{$key}[1]"; + print "" . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")"; + if ($confighash{$key}[4] eq 'cert') { + print "$confighash{$key}[2]"; + } else { + print " "; + } + print "$confighash{$key}[25]"; + my $active = "
    $Lang::tr{'capsclosed'}
    "; + if ($confighash{$key}[0] eq 'off') { + $active = "
    $Lang::tr{'capsclosed'}
    "; + } else { + foreach my $line (@status) { + if ($line =~ /\"$confighash{$key}[1]\".*IPsec SA established/) { + $active = "
    $Lang::tr{'capsopen'}
    "; + } + } + } + print <$active +
    + + + +
    +END + ; + if ($confighash{$key}[4] eq 'cert') { + print < + + + + +END + ; } else { + print " "; + } + if ($confighash{$key}[4] eq 'cert' && -f "${General::swroot}/certs/$confighash{$key}[1].p12") { + print < + + + + +END + ; } elsif ($confighash{$key}[4] eq 'cert') { + print < + + + + +END + ; } else { + print " "; + } + print < + + + + + +
    + + + +
    +
    + + + +
    + +END + ; + $id++; + } + ; + + # If the config file contains entries, print Key to action icons + if ( $id ) { + print < + +   $Lang::tr{'legend'}: +   $Lang::tr{ + $Lang::tr{'click to disable'} +     $Lang::tr{ + $Lang::tr{'show certificate'} +     $Lang::tr{ + $Lang::tr{'edit'} +     $Lang::tr{ + $Lang::tr{'remove'} + + +   +   ?OFF + $Lang::tr{'click to enable'} +     ?FLOPPY + $Lang::tr{'download certificate'} +     ?RELOAD + $Lang::tr{'restart'} + + +END + ; + } + + print < +
    + +
    + +END + ; + &Header::closebox(); + + &Header::openbox('100%', 'LEFT', "$Lang::tr{'certificate authorities'}:"); + print < + + $Lang::tr{'name'} + $Lang::tr{'subject'} + $Lang::tr{'action'} + +EOF + ; + if (-f "${General::swroot}/ca/cacert.pem") { + my $casubject = `/usr/bin/openssl x509 -text -in ${General::swroot}/ca/cacert.pem`; + $casubject =~ /Subject: (.*)[\n]/; + $casubject = $1; + $casubject =~ s+/Email+, E+; + $casubject =~ s/ ST=/ S=/; + + print < + $Lang::tr{'root certificate'} + $casubject +
    + + +
    +
    + + +
    +   +END + ; + } else { + # display rootcert generation buttons + print < + $Lang::tr{'root certificate'}: + $Lang::tr{'not present'} +   +END + ; + } + + if (-f "${General::swroot}/certs/hostcert.pem") { + my $hostsubject = `/usr/bin/openssl x509 -text -in ${General::swroot}/certs/hostcert.pem`; + $hostsubject =~ /Subject: (.*)[\n]/; + $hostsubject = $1; + $hostsubject =~ s+/Email+, E+; + $hostsubject =~ s/ ST=/ S=/; + + print < + $Lang::tr{'host certificate'} + $hostsubject +
    + + +
    +
    + + +
    +   +END + ; + } else { + # Nothing + print < + $Lang::tr{'host certificate'}: + $Lang::tr{'not present'} +   +END + ; + } + + if (! -f "${General::swroot}/ca/cacert.pem") { + print "
    "; + print ""; + print "
    \n"; + } + + if (keys %cahash > 0) { + foreach my $key (keys %cahash) { + if (($key + 1) % 2) { + print "\n"; + } else { + print "\n"; + } + print "$cahash{$key}[0]\n"; + print "$cahash{$key}[1]\n"; + print < + + + + +
    + + + +
    +
    + + + +
    +END + ; + } + } + + print ""; + + # If the file contains entries, print Key to action icons + if ( -f "${General::swroot}/ca/cacert.pem") { + print < + +   $Lang::tr{'legend'}: +     $Lang::tr{ + $Lang::tr{'show certificate'} +     $Lang::tr{ + $Lang::tr{'download certificate'} + + +END + ; + } + print < + + + + +
    $Lang::tr{'ca name'}: +
    +END + ; + &Header::closebox(); + + print "
    \n"; + print "$Lang::tr{'this feature has been sponsored by'} : "; + print "Seminole Canada Gas Company.\n"; + + &Header::closebigbox(); + &Header::closepage(); diff --git a/html/cgi-bin/wireless.cgi b/html/cgi-bin/wireless.cgi new file mode 100644 index 0000000000..8b2bbb8dae --- /dev/null +++ b/html/cgi-bin/wireless.cgi @@ -0,0 +1,508 @@ +#!/usr/bin/perl +# +# IPCop CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) 2003 Alan Hourihane +# (c) 2005 Eric Oberlander, Robert Kerr - Inline editing & DHCP leases +# +# $Id: wireless.cgi,v 1.4.2.15 2005/06/11 12:14:49 eoberlander Exp $ +# + +use strict; +use Time::Local; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::colouryellow} ); +undef (@dummy); + +my %cgiparams=(); +my %checked=(); +my $errormessage = ''; +my $filename = "${General::swroot}/wireless/config"; +my $hostsfile = "${General::swroot}/main/hosts"; +our %dhcpsettings=(); +our %netsettings=(); + +$cgiparams{'ENABLED'} = 'off'; +$cgiparams{'ACTION'} = ''; +$cgiparams{'VALID'} = ''; +$cgiparams{'SOURCE_IP'} =''; +$cgiparams{'SOURCE_MAC'} =''; +$cgiparams{'REMARK'} =''; + +&Header::getcgihash(\%cgiparams); + +&General::readhash("${General::swroot}/dhcp/settings", \%dhcpsettings); +&General::readhash("${General::swroot}/ethernet/settings", \%netsettings); + +&Header::showhttpheaders(); + +open(FILE, $filename) or die 'Unable to open config file.'; +my @current = ; +close(FILE); + +if ($cgiparams{'ACTION'} eq 'add') +{ + + if ($cgiparams{'SOURCE_IP'} eq '' && $cgiparams{'SOURCE_MAC'} eq '') + { + goto ADDEXIT; + } + + $cgiparams{'SOURCE_MAC'} =~ tr/-/:/; + + my $key = 0; + foreach my $line (@current) + { + $key++; + my @temp = split(/\,/,$line); + + if ($temp[1] ne '' && $cgiparams{'SOURCE_IP'} eq $temp[1] && $cgiparams{'EDITING'} ne $key) + { + $errormessage = $Lang::tr{'duplicate ip'}; + goto ADDERROR; + } + if ($temp[2] ne '' && lc($cgiparams{'SOURCE_MAC'}) eq lc($temp[2]) && $cgiparams{'EDITING'} ne $key) + { + $errormessage = $Lang::tr{'duplicate mac'}; + goto ADDERROR; + } + } + + if ($cgiparams{'SOURCE_IP'} eq '') + { + $cgiparams{'SOURCE_IP'} = 'NONE'; + } else { + unless(&General::validip($cgiparams{'SOURCE_IP'})) + { + $errormessage = $Lang::tr{'invalid fixed ip address'}; + goto ADDERROR; + } + } + if ($cgiparams{'SOURCE_MAC'} eq '') + { + $cgiparams{'SOURCE_MAC'} = 'NONE'; + } else { + unless(&General::validmac($cgiparams{'SOURCE_MAC'})) + { + $errormessage = $Lang::tr{'invalid fixed mac address'}; + } + } + +ADDERROR: + if ($errormessage) + { + $cgiparams{'SOURCE_MAC'} = '' if $cgiparams{'SOURCE_MAC'} eq 'NONE'; + $cgiparams{'SOURCE_IP'} = '' if $cgiparams{'SOURCE_IP'} eq 'NONE'; + } else { + if ($cgiparams{'EDITING'} eq 'no') { + open(FILE,">>$filename") or die 'Unable to open config file.'; + flock FILE, 2; + print FILE "$key,$cgiparams{'SOURCE_IP'},$cgiparams{'SOURCE_MAC'},$cgiparams{'ENABLED'},$cgiparams{'REMARK'}\n"; + } else { + open(FILE,">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + my $id = 0; + foreach my $line (@current) + { + $id++; + if ($cgiparams{'EDITING'} eq $id) { + print FILE "$id,$cgiparams{'SOURCE_IP'},$cgiparams{'SOURCE_MAC'},$cgiparams{'ENABLED'},$cgiparams{'REMARK'}\n"; + } else { print FILE "$line"; } + } + } + close(FILE); + undef %cgiparams; + &General::log($Lang::tr{'wireless config added'}); + system('/usr/local/bin/restartwireless'); + } +ADDEXIT: +} + +if ($cgiparams{'ACTION'} eq 'edit') +{ + my $id = 0; + foreach my $line (@current) + { + $id++; + if ($cgiparams{'ID'} eq $id) + { + chomp($line); + my @temp = split(/\,/,$line); + $cgiparams{'SOURCE_IP'} = $temp[1]; + $cgiparams{'SOURCE_MAC'} = $temp[2]; + $cgiparams{'ENABLED'} = $temp[3]; + $cgiparams{'REMARK'} = $temp[4]; + $cgiparams{'SOURCE_IP'} = '' if $cgiparams{'SOURCE_IP'} eq 'NONE'; + $cgiparams{'SOURCE_MAC'} = '' if $cgiparams{'SOURCE_MAC'} eq 'NONE'; + } + } + &General::log($Lang::tr{'wireless config changed'}); + system('/usr/local/bin/restartwireless'); +} + +if ($cgiparams{'ACTION'} eq 'remove' || $cgiparams{'ACTION'} eq 'toggle') +{ + my $id = 0; + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + foreach my $line (@current) + { + $id++; + unless ($cgiparams{'ID'} eq $id) { print FILE "$line"; } + elsif ($cgiparams{'ACTION'} eq 'toggle') + { + chomp($line); + my @temp = split(/\,/,$line); + print FILE "$temp[0],$temp[1],$temp[2],$cgiparams{'ENABLE'},$temp[4]\n"; + } + } + close(FILE); + &General::log($Lang::tr{'wireless config changed'}); + system('/usr/local/bin/restartwireless'); +} + + +$checked{'ENABLED'}{'off'} = ''; +$checked{'ENABLED'}{'on'} = ''; +$checked{'ENABLED'}{$cgiparams{'ENABLED'}} = "checked='checked'"; + + +&Header::openpage($Lang::tr{'wireless configuration'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage\n"; + print " \n"; + &Header::closebox(); +} + +print "
    \n"; + +my $buttontext = $Lang::tr{'add'}; +if ($cgiparams{'ACTION'} eq 'edit') { + &Header::openbox('100%', 'left', "$Lang::tr{'edit device'}"); + $buttontext = $Lang::tr{'update'}; +} else { + &Header::openbox('100%', 'left', "$Lang::tr{'add device'}"); +} + +print < + +$Lang::tr{'source ip'}:  + +$Lang::tr{'enabled'}  + + + +$Lang::tr{'source'} $Lang::tr{'mac address'}:  + + + +$Lang::tr{'remark'}: * + + + +
    + + + + + + + +
    *$Lang::tr{'this field may be blank'} + + + + + $Lang::tr{
    +END +; + +if ($cgiparams{'ACTION'} eq 'edit') { + print "\n"; +} else { + print "\n"; +} + +&Header::closebox(); + +print "\n"; + +&Header::openbox('100%', 'left', "$Lang::tr{'devices on blue'}"); +print < +END +; +open (FILE, "$filename"); +my @current = ; +close (FILE); + +print < + +$Lang::tr{'hostname'} +$Lang::tr{'source ip'} +$Lang::tr{'mac address'} +$Lang::tr{'remark'} +$Lang::tr{'action'} + +END +; + +my $id = 0; + +open (HOSTFILE, "$hostsfile"); +my @curhosts = ; +close (HOSTFILE); + +my $connstate = &Header::connectionstatus(); +my @arp = `/sbin/arp -n`; +shift @arp; + +foreach my $line (@current) +{ + $id++; + chomp($line); + my $gif = ""; + my $gdesc = ""; + my $hname = ""; + my $toggle = ""; + my @temp = split(/\,/,$line); + my $wirelessid = $temp[0]; + my $sourceip = $temp[1]; + my $sourcemac = $temp[2]; + if ( $sourceip eq 'NONE' ) { + foreach my $aline ( @arp ) + { + chomp($aline); + my @atemp = split( m{\s+}, $aline ); + my $aipaddr = $atemp[0]; + my $amacaddr = lc( $atemp[2] ); + if ( $amacaddr eq $sourcemac ) { + $sourceip = $aipaddr; + last; + } + } + } + + # SourceIP could now have been set by the ARP probe. + if ( $sourceip ne 'NONE' ) { + foreach my $hline (@curhosts) + { + chomp($hline); + my @htemp = split(/\,/,$hline); + my $hkey = $htemp[0]; + my $hipaddr = $htemp[1]; + my $hostname = $htemp[2]; + my $domainname = $htemp[3]; + if ($sourceip eq $hipaddr) { + $hname = "$hostname.$domainname"; + last; + } + } + if ( $hname eq "" ) { + my ($aliases, $addrtype, $length, @addrs); + ($hname, $aliases, $addrtype, $length, @addrs) = + gethostbyaddr(pack("C4", split(/\./, $sourceip)), 2); + } + } + + if ($temp[3] eq 'on') { $gif = 'on.gif'; $toggle='off'; $gdesc=$Lang::tr{'click to disable'};} + else { $gif = 'off.gif'; $toggle='on'; $gdesc=$Lang::tr{'click to enable'};} + + my $remark = &Header::cleanhtml($temp[4]); + + if ($cgiparams{'ACTION'} eq 'edit' && $cgiparams{'ID'} eq $id) { + print "\n"; + } elsif ($id % 2) { + print "\n"; + } else { + print "\n"; + } + print "$hname\n"; + print "$sourceip\n"; + print "$sourcemac\n"; + print "$remark\n"; +print< +
    + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + +END + ; + print "\n"; +} +print "\n"; + +print "\n"; + +&Header::closebox(); + +if ( $dhcpsettings{"ENABLE_BLUE"} eq 'on') { + &printblueleases; +} + +&Header::closebigbox(); + +&Header::closepage(); + +sub printblueleases +{ + our %entries = (); + + sub blueleasesort { + # Sort by IP address + my $qs ='IPADDR'; + my @a = split(/\./,$entries{$a}->{$qs}); + my @b = split(/\./,$entries{$b}->{$qs}); + ($a[0]<=>$b[0]) || + ($a[1]<=>$b[1]) || + ($a[2]<=>$b[2]) || + ($a[3]<=>$b[3]); + } + + &Header::openbox('100%', 'left', "$Lang::tr{'current dhcp leases on blue'}"); + print < + +$Lang::tr{'ip address'} +$Lang::tr{'mac address'} +$Lang::tr{'hostname'} +$Lang::tr{'lease expires'} (local time d/m/y) + +END + ; + + my ($ip, $endtime, $ether, $hostname, @record, $record); + open(LEASES,"/var/state/dhcp/dhcpd.leases") or die "Can't open dhcpd.leases"; + while (my $line = ) { + next if( $line =~ /^\s*#/ ); + chomp($line); + my @temp = split (' ', $line); + + if ($line =~ /^\s*lease/) { + $ip = $temp[1]; + # All fields are not necessarily read. Clear everything + $endtime = 0; + $ether = ""; + $hostname = ""; + } elsif ($line =~ /^\s*ends never;/) { + $endtime = 'never'; + } elsif ($line =~ /^\s*ends/) { + $line =~ /(\d+)\/(\d+)\/(\d+) (\d+):(\d+):(\d+)/; + $endtime = timegm($6, $5, $4, $3, $2 - 1, $1 - 1900); + } elsif ($line =~ /^\s*hardware ethernet/) { + $ether = $temp[2]; + $ether =~ s/;//g; + } elsif ($line =~ /^\s*client-hostname/) { + shift (@temp); + $hostname = join (' ',@temp); + $hostname =~ s/;//g; + $hostname =~ s/\"//g; + } elsif ($line eq "}") { + # Select records in Blue subnet + if ( &General::IpInSubnet ( $ip, + $netsettings{"BLUE_NETADDRESS"}, + $netsettings{"BLUE_NETMASK"} ) ) { + @record = ('IPADDR',$ip,'ENDTIME',$endtime,'ETHER',$ether,'HOSTNAME',$hostname); + $record = {}; # create a reference to empty hash + %{$record} = @record; # populate that hash with @record + $entries{$record->{'IPADDR'}} = $record; # add this to a hash of hashes + } + } + } + close(LEASES); + + my $id = 0; + foreach my $key (sort blueleasesort keys %entries) { + + my $hostname = &Header::cleanhtml($entries{$key}->{HOSTNAME},"y"); + + if ($id % 2) { + print ""; + } else { + print ""; + } + + print <$entries{$key}->{IPADDR} +$entries{$key}->{ETHER} + $hostname + +END + ; + + if ($entries{$key}->{ENDTIME} eq 'never') { + print "$Lang::tr{'no time limit'}"; + } else { + my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $dst); + ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $dst) = localtime ($entries{$key}->{ENDTIME}); + my $enddate = sprintf ("%02d/%02d/%d %02d:%02d:%02d",$mday,$mon+1,$year+1900,$hour,$min,$sec); + + if ($entries{$key}->{ENDTIME} < time() ){ + print "$enddate"; + } else { + print "$enddate"; + } + } + + if ( $hostname eq '' ) { + $hostname = $Lang::tr{'device'}; + } + + print < +
    + + + + + + + +
    + +END + ; + $id++; + } + + print ""; + &Header::closebox(); +} + diff --git a/html/cgi-bin/xtaccess.cgi b/html/cgi-bin/xtaccess.cgi new file mode 100644 index 0000000000..72d7976396 --- /dev/null +++ b/html/cgi-bin/xtaccess.cgi @@ -0,0 +1,363 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# Copyright (c) 2002/04/13 Steve Bootes - Add destination IP support +# +# $Id: xtaccess.cgi,v 1.6.2.15 2005/03/05 08:44:32 eoberlander Exp $ +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require 'CONFIG_ROOT/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::colouryellow} ); +undef (@dummy); + +my %cgiparams=(); +my %checked=(); +my %selected=(); +my $errormessage = ''; +my $filename = "${General::swroot}/xtaccess/config"; +my $aliasfile = "${General::swroot}/ethernet/aliases"; +my $changed = 'no'; + +&Header::showhttpheaders(); + +$cgiparams{'ENABLED'} = 'off'; +$cgiparams{'ACTION'} = ''; +$cgiparams{'SRC'} = ''; +$cgiparams{'DEST_PORT'} = ''; +$cgiparams{'REMARK'} =''; +&Header::getcgihash(\%cgiparams); +open(FILE, $filename) or die 'Unable to open config file.'; +my @current = ; +close(FILE); + +if ($cgiparams{'ACTION'} eq $Lang::tr{'add'}) +{ + unless($cgiparams{'PROTOCOL'} =~ /^(tcp|udp)$/) { $errormessage = $Lang::tr{'invalid input'}; } + unless(&General::validipormask($cgiparams{'SRC'})) + { + if ($cgiparams{'SRC'} ne '') { + $errormessage = $Lang::tr{'source ip bad'}; } + else { + $cgiparams{'SRC'} = '0.0.0.0/0'; } + } + unless($errormessage){ $errormessage = &General::validportrange($cgiparams{'DEST_PORT'},'dst'); } + if ( ! $errormessage) + { + $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'}); + + if($cgiparams{'EDITING'} eq 'no') { + open(FILE,">>$filename") or die 'Unable to open config file.'; + flock FILE, 2; + print FILE "$cgiparams{'PROTOCOL'},$cgiparams{'SRC'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},$cgiparams{'DEST'},$cgiparams{'REMARK'}\n"; + } else { + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + my $id = 0; + foreach my $line (@current) + { + $id++; + if ($cgiparams{'EDITING'} eq $id) { + print FILE "$cgiparams{'PROTOCOL'},$cgiparams{'SRC'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},$cgiparams{'DEST'},$cgiparams{'REMARK'}\n"; + } else { print FILE "$line"; } + } + } + close(FILE); + undef %cgiparams; + $changed = 'yes'; + &General::log($Lang::tr{'external access rule added'}); + system('/usr/local/bin/setxtaccess'); + } else { + # stay on edit mode if an error occur + if ($cgiparams{'EDITING'} ne 'no') + { + $cgiparams{'ACTION'} = $Lang::tr{'edit'}; + $cgiparams{'ID'} = $cgiparams{'EDITING'}; + } + } +} +if ($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) +{ + my $id = 0; + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + foreach my $line (@current) + { + $id++; + unless ($cgiparams{'ID'} eq $id) { print FILE "$line"; } + } + close(FILE); + system('/usr/local/bin/setxtaccess'); + &General::log($Lang::tr{'external access rule removed'}); +} +if ($cgiparams{'ACTION'} eq $Lang::tr{'toggle enable disable'}) +{ + open(FILE, ">$filename") or die 'Unable to open config file.'; + flock FILE, 2; + my $id = 0; + foreach my $line (@current) + { + $id++; + unless ($cgiparams{'ID'} eq $id) { print FILE "$line"; } + else + { + chomp($line); + my @temp = split(/\,/,$line); + print FILE "$temp[0],$temp[1],$temp[2],$cgiparams{'ENABLE'},$temp[4],$temp[5]\n"; + } + } + close(FILE); + system('/usr/local/bin/setxtaccess'); +} +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) +{ + my $id = 0; + foreach my $line (@current) + { + $id++; + if ($cgiparams{'ID'} eq $id) + { + chomp($line); + my @temp = split(/\,/,$line); + $cgiparams{'PROTOCOL'} = $temp[0]; + $cgiparams{'SRC'} = $temp[1]; + $cgiparams{'DEST_PORT'} = $temp[2]; + $cgiparams{'ENABLED'} = $temp[3]; + $cgiparams{'DEST'} = $temp[4]; + $cgiparams{'REMARK'} = $temp[5]; + } + } +} + +if ($cgiparams{'ACTION'} eq '') +{ + $cgiparams{'PROTOCOL'} = 'tcp'; + $cgiparams{'DEST'} = '0.0.0.0'; + $cgiparams{'ENABLED'} = 'on'; +} + +$selected{'PROTOCOL'}{'udp'} = ''; +$selected{'PROTOCOL'}{'tcp'} = ''; +$selected{'PROTOCOL'}{$cgiparams{'PROTOCOL'}} = "selected='selected'"; + +$selected{'DEST'}{$cgiparams{'DEST'}} = "selected='selected'"; + +$checked{'ENABLED'}{'off'} = ''; +$checked{'ENABLED'}{'on'} = ''; +$checked{'ENABLED'}{$cgiparams{'ENABLED'}} = "checked='checked'"; + +&Header::openpage($Lang::tr{'external access configuration'}, 1, ''); + +&Header::openbigbox('100%', 'left', '', $errormessage); + +if ($errormessage) { + &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); + print "$errormessage\n"; + print " \n"; + &Header::closebox(); +} + +print "
    \n"; + +my $buttontext = $Lang::tr{'add'}; +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) { + &Header::openbox('100%', 'left', $Lang::tr{'edit a rule'}); + $buttontext = $Lang::tr{'update'}; +} else { + &Header::openbox('100%', 'left', $Lang::tr{'add a new rule'}); +} +print < + + + + +$Lang::tr{'source network'} + +$Lang::tr{'destination port'}: + + + + + + + + +
    $Lang::tr{'enabled'}$Lang::tr{'destination ip'}:  +
    + + + + + + +
    +$Lang::tr{'remark'}: * + + + + + +
    + + + + +
    * $Lang::tr{'this field may be blank'} +
    +END +; +if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) { + print "\n"; +} else { + print "\n"; +} + +&Header::closebox(); +print "\n"; + +&Header::openbox('100%', 'left', $Lang::tr{'current rules'}); +print < + +$Lang::tr{'proto'} +$Lang::tr{'source ip'} +$Lang::tr{'destination ip'} +$Lang::tr{'destination port'} +$Lang::tr{'remark'} +$Lang::tr{'action'} + +END +; + +# If something has happened re-read config +if($cgiparams{'ACTION'} ne '' or $changed ne 'no') +{ + open(FILE, $filename) or die 'Unable to open config file.'; + @current = ; + close(FILE); +} +my $id = 0; +foreach my $line (@current) +{ + $id++; + chomp($line); + my @temp = split(/\,/,$line); + my $protocol = ''; + my $gif = ''; + my $gdesc = ''; + my $toggle = ''; + if ($temp[0] eq 'udp') { + $protocol = 'UDP'; } + else { + $protocol = 'TCP' } + if($cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'ID'} eq $id) { + print "\n"; } + elsif ($id % 2) { + print "\n"; } + else { + print "\n"; } + if ($temp[3] eq 'on') { $gif='on.gif'; $toggle='off'; $gdesc=$Lang::tr{'click to disable'};} + else { $gif='off.gif'; $toggle='on'; $gdesc=$Lang::tr{'click to enable'}; } + if ($temp[1] eq '0.0.0.0/0') { + $temp[1] = $Lang::tr{'caps all'}; } + # catch for 'old-style' rules file - assume default ip if + # none exists + if (!&General::validip($temp[4]) || $temp[4] eq '0.0.0.0') { + $temp[4] = 'DEFAULT IP'; } + $temp[5] = '' unless defined $temp[5]; +print <$protocol +$temp[1] +$temp[4] +$temp[2] + $temp[5] + +
    + + + + +
    + + +
    + + + +
    + + +
    + + + +
    + + + +END + ; +} +print "\n"; + +# If the xt access file contains entries, print Key to action icons +if ( ! -z "$filename") { +print < + +   $Lang::tr{'legend'}: +   $Lang::tr{ + $Lang::tr{'click to disable'} +     $Lang::tr{ + $Lang::tr{'click to enable'} +     $Lang::tr{ + $Lang::tr{'edit'} +     $Lang::tr{ + $Lang::tr{'remove'} + + +END +; +} + +&Header::closebox(); + +&Header::closebigbox(); + +&Header::closepage(); diff --git a/html/html/CVS/Entries b/html/html/CVS/Entries new file mode 100644 index 0000000000..d4fc2adf9f --- /dev/null +++ b/html/html/CVS/Entries @@ -0,0 +1,6 @@ +/blob.gif/1.3/Thu Dec 11 11:06:41 2003/-kb/TIPCOP_v1_4_0 +/favicon.ico/1.2/Thu Dec 11 11:06:41 2003/-kb/TIPCOP_v1_4_0 +/index.cgi/1.4/Thu Dec 11 11:06:41 2003//TIPCOP_v1_4_0 +/ipcop_big.gif/1.4/Thu Dec 11 11:06:41 2003/-kb/TIPCOP_v1_4_0 +D/images//// +D/include//// diff --git a/html/html/CVS/Repository b/html/html/CVS/Repository new file mode 100644 index 0000000000..424e62488d --- /dev/null +++ b/html/html/CVS/Repository @@ -0,0 +1 @@ +ipcop/html/html diff --git a/html/html/CVS/Root b/html/html/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/html/html/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/html/html/CVS/Tag b/html/html/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/html/html/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/html/html/blob.gif b/html/html/blob.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b6374773c5d1296cf20af927c393ad9126db9e2 GIT binary patch literal 293 zc-nLKbhEHb@^vgOES_&r6qSth_4nGoi8dnTSR24h;WCHP^+L|y`Vs)kU%*fPsXRrl9xplr<78{JkBfQ$(0}c{ExT;uQK$wk?U`u$AO_ j9-O7wvO*vuC2A+1bC}oFB2^AI4jwM{2Df%6M+R#Er`J5O literal 0 Hc-jL100001 diff --git a/html/html/favicon.ico b/html/html/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8fcd7134c481440000e77d9018e90ed678c8d4c2 GIT binary patch literal 1406 zc-nQ;F=!f59LMorD5ag!OoclST4*kIGDL4`o75O+jgw2_?o<%6+~(wzQNh76bSNFp z$tCC}85BBXx+ypmCC-w?LLsl;=h09~e1HFU{-2+Fy!X62X@l6>636HI@>F^$=`Bf@ zUMuOhEx(~Pt+D#3(MV1<_%a+0HJl8!`0-uw!l*YjYQ{#jkx{X4Wvd>7xshxiKiggnOYCo($5@8kFIKHkAE@Kbz@AL0A>2p{3w_&UCdFX6LzgEx4CH+X|L_7vI8%_=@ZbCahq<3OcMHWCdkbU}DDY z_3%x64PV6jYj#I6GyE9e#kcSwzT(TA;E(b9_&vOjckm1R6d&V9_&z?uNBB0rj<4cN z_$=Pw4c_1l-rx=MVL}roG+;sF-U%{`r zeHb@Z58uSs@I}0jU$;TAnc>IyF203lr%grcHYhd={1hMKNBBOT%~`WSvEhCun`DhF zl0La^gYNF`G@s9Pb91BX>uX(IUFq`jQc)D?;^IQ>c3bD?=c?E1Iy*a4wOZBb>8VPk zk`4|Il+9+fv$G@Db+x&VvFfmOE^S*b$QKG0q|=_4BGN%nC{TMTleEmcd|~-dZ8CwaQ|?2Z zJG`~^_O97|@3@{9e>E{#Pc{X`ZHvZ4QzghQ!Yd$8|{sC2E-G2Nk%w1VH5xq0HXf@|L2_j006N70RF$fz`(%Q*VmSomH+?%A^8LW000C4 zEC2ui02BZe06+s@NV?pvXN(YpI3;Iy`eudqKoVtP;{gEG6?U-5mBBGG(bS?TeHMfl zu%QANFq(`EPJtIjoiXid)1w}KRMSm5OHLns=Nu~@frWCvxqFo@~s IQV9tFJ3xIuEC2ui literal 0 Hc-jL100001 diff --git a/html/html/images/addblue.gif b/html/html/images/addblue.gif new file mode 100644 index 0000000000000000000000000000000000000000..9a8ffb74c3053be7f4284a75395755e7e39e37a1 GIT binary patch literal 154 zc-jG)0A>G2Nk%w1VH5xq0HXf@VPLrc0Qi%z^#A9a*Vos;z`&N4mH+?%A^8LW000F5 zEC2ui02BZe06+s@Si0PEPJtIjoiXid)1w}KRMSm5OHQz#mdu~@frWCvxqFo@~s IQVR(HJ6pm(bpQYW literal 0 Hc-jL100001 diff --git a/html/html/images/bounceback.png b/html/html/images/bounceback.png new file mode 100644 index 0000000000000000000000000000000000000000..d10b0ef4d10c1ea08056920d49b816ed796241b2 GIT binary patch literal 5947 zc-jFw7sTj^P)WdKxYbs#h#Q)O@$!E@l19*P zIzb#1b!chk;@s)esO!<3$Ek&?m3F3vXoh=(hiO%!W;NQ2L?{aa#fnGr(q`b9OEU@r zCm0x|n3(YG@c#JMvZ}9>jFDMECsQvWO)3`R&%9DgQ8gwfXHHN#H8*ElWRQJ_)5o&b z)602tchQYfLk$4xwQALSHg-c7@5Wj1%4X@YN!f%ts!l7)#K`B|$l}$v>E`It%FNTv z(x#iFqK9_k-QkybTep~a(yDRDnri2}gypGZ^wNxob5#)x4X&q@`Rl~x$)?7qk!Vpy z$#*wH6$90$RpX^f##JPtJ{K<`8%i`NaZWI0Jtcu&N~U&IuzF_oDX=P}GdV1Nkhlf@v zwrMo& zrgBAbbcc$m)_A4XmbK$AN^t4KilDsZc!QS1+Va%s_GV8>ke8_E^!wAeq-bz?XJ>bU zoXeDIHkPEenw4v{rF6=~e%8a6x@sw*ZbOVp8cAG+Qb8W9muww8ZI_jE#da?DZk7*%~u5 z->Ybyjh%MwbU|>PH}1WPIy8ZqgYIPvQxT>h8X|wZtAN?qVhNIU%ig-L-MV&rdq1D| zITK4uj3GMjy?w{d*uQh0@ALcrd!Er~zu*`Ag4+hEOePKV816h62+Azuh)8*$2Xd!j z;?O(}kM#)74D?9uEFh+%XRv>$$LVZB|E=_0#_8?hmE)})9i10ZIMAcHgOCbO_I5Fk*pHGXx&Gh6&o$dWTas9H>e9vIpMQR`eb7UL>?>_K+|(Vqe~QwB`8Gqn}@FJ9&E0<#sn7rq!d&V}TyqZ3X`J)0;Qv<&{T;&t1DV zG`OXuvhjPED$=$gx zaqg6jc~Maj3pPY0%neV7iV#+YqKC)nD*U_9Pm(pcxoaw;cIMXAe)q+9lb>Gm^f%w+ zMXA;5gd{Y1d@i9kiR8RM^ZYRwNeRO8@(X)|Bye478D3-B`Q6(WE?ih2nz=kOZd@*a zm}4`nR+JxTrq_TklP?U3df}cRmep$Y@`N~!i}0#cv<9t3lUU<(4RU)@hLvu$^7Mgb zdlga`4-MY=!o>d#qBHQr9?xa(5f)2SlUgN0$4=6zW*Ml_D+~r-{5}$k5!q z*r6PyvbYG_i=X=H>&urVGFTrejf`YKr6&0}5ts5J0dKlMpubxx0MiFE*vjZ4F@W)r zTJ)>Gef^b5c0g)nq$ncwWDTcqJjygFCwa~cI^8M|&=&z~4>V^A5SkOs)~cq7mH8^w zqWjQur_Z+ZS>hP{6h(?2A@Q2RTkgS0l9PFHR)VkzFmR`XX}BBwn|!j)xciTrzkT=9 zKRo#1!dkcrZR#6hMM4MQ6r`?-gH{&aS}2psnLLG+F0g3;Ys_Y&1L8DUAY~5WDCK70 z*ja1d$>oHrr)--Nu10whhV*b<9mIfO3j$l}P@KfaehnESLgGN65NHUU)~F?HHo``y zS!stQf#c1<<(wp-#V{GWB8Wy?G*?~l`-lD!oNGx@@Fg+^Ll4)L!3d0(3(3f_T|tWA zA|3Q()=@jwHUXP+KV8lgMD}+~~KNuVRvZPY}!L#J`|me z*$B+G*L(T07rC8|UA|pyW{q$GhzAB1iJ~MbGMCD)h*TDwv|YX3l#0|rz_poh6fLh5 zp6f%$Fi45~ijsp&%_h)j^NmI9&Ch4uuOl!Z{tQ68KE>~IN{0_4iCU^)K@f`pq%9F5 za)|`KVLjxNxD}}};gw95sTAeF2w8}3PhzE#oLUQ9h18zIg{3WhG_SsI44r0uES);P zfFcg0%r;~feOWMX?Hd$v8{BZ&^Y{Ldz6!%~aPuAH6j+W;cBc#ahL9$3f2XYk(0*%dP zR2J ztGgRK=rL!XJ=E{EiDaRMN>M4|K-UGjt?x~Y+5hN^iSL0-1{0u{zPiK-5OEql9BUY& zeuvxb^#Yw1H8i39CQyv_HM$3#gRR1Pk9UZ4^dbJQAy&XBy;Ogn<8LU6jaM4cldb|7kk%N94 zq$OD6D@c6A={8$-&g`NW3;sHH;uZpkJoosema$|-H-Tc*N=ZUjcuPr-PvTxrBZ;HjTdE^@0ehMSd-t_ni}%kf_!C83wYuU&_2@?V18yi$J%b;~Wa(i(%`Ahh zGJW!Bx;t`G;tS>d9lcJ6XQaP~P9&?e9toQcH++ z6l01!;7#oR>%8bsKG`$nJ&o3=T8&nW94LHI+83#>kJ1u}43g*}g-jv?_Y8?l7O6;< zG5CltkTEkdKn~6vm4IY8hYw7AsJGYI({ZZbge8A6{9FF2Yis5`ujF`xbT6YWUr_Dojq$1E6{zf$I;W<)8q2i*CT%VqOw^UU5SQL zYYLb~w@aDBR(`U0N;UxsG);Mezr4p8a}css(Pt6+9{=wT^J3B- zjdk_3_c&cnrxQ4QtGD4C>Q@6wFl(kxTVzOkIX;GKP;z6^0DW=3Qf$b}EQ(2w=VpZk zje*S1E1lFAcBK-Ubl4}cU@2;W#rnQByU`~&FwB!DBXC(N?5nJJzVcWhx&ie8q5U*a_3BeDN8N_=dtUwM zJ~j8yp!eX=;&>4 zJ8AFe?K*9*P^;D3E623Qb#Hh9g~SE3HFVz#Nu>!w|FR)yn6Y2q`abSSWqJr2ac44Y zZ*F!t9rb8af1|sxq2Y+z+1}aK)z;NAFxXORHmj@E+tsEqZ3jW-E;;|32RE)1Schqh zxxIQ@;(+(u0Px+8rhbRR;dZ!PZeZQLU7cNB>QW)4s6gV|%gM2<=`+@==iVEUxSM`E zhCL1-Io(GT$+~(V!fSR?T+^LuIj=H%0>bC!b1O>j`X0NVOd3o4$Ta`OZQ1C za4U@VI}W?uAZmLZj*iau_O|x+_Rg-8$IYceArN^X=`V3b3iQFMh~35_Hk-X`&E2_8 zk|_l~-;N&v1uD>ZXD_gC5Xjrkw0CuOo<7@bCP~zUlK!2Or4E1p{ovr$7?zopy*c|n zT$Bvob>yjb3?tG)avEI@kf!$Zc64=gw4dqfY(MkouC~@b7Kek#{j5{!LLPZ!ZxBXo z!3YiZ<`!b_ibZj++^$UZ>Us4D?AL;qi3;;^QkjM9Zf&P{gJ=fQxvtJOAoi}a-TsY2 zA%l5HawsCO5nG5E?-dm(l|@B4I-N$aI`@|7jo@8bSGy53TCxyf!94w_=ht+l8N-)K z?9ENBr&`-iw|8^`_jcybXWBX)r~K7B5=`}e%NHT(6| znUhD8s@^1ZW9h*SJmtxG2tYE2Q-*LvdMP54_!=-AU-KBkM;SCBA90z&%8(wbZ?c1^ z-rP(cZ?-qJ96xdV#K}_sexxG0($o^z1azw)h%TT91!?v^vigY?i*nb5ZF=P`1Rm?2 zXg&-}GGq`yq(T8HBBcuOkRdCR$e56n%2E!KBED6sA6-9!BJOLsDqyP>WIXjp8XE0K z(Ta*vlr$F#LE0wtV`~6VGLhc5dSufP7}app5SrmWj6kqu%bTw+Pf5v;@y0W}@qOA( zL0-6!2TS~LB)_gbfVNhwRT*`MR9Y1{ zV3-X%q$4yMFbUKwk0bLR;BQ`->eEjC)sC}OgdeQJaa1Tot59Kr*}p)R5)4F35G5*1 zh3P2L#vHcNsMTt9TCo`LCkTw7N8TMj_kqf+*Fr)f@|rpeQdK8EAhVbgD*f69^F%12 z(_z|tqfrHDYL#M@PNyn*X>%|vzsRQoI^f_`m`$Tn7H3WJ&5dMuS)kw3|IuYy`?L5a?6}C3~Td`05E0M%{Ll z@)_U;k`@^xgA|ZVFPFo5iA(`WkW{|>%Ca-1-@c74h=PC9JxlPal4g%up6i)_GLO$P=^>dc1BRK& z$sFX~T}HN{*kC9wj*nRT1d-$w8UE42cAiz!X~=56m$ik>d&&R0w(wxV#>g=pjfUK_}|O#ei*0e0&U-%T13@j~5%b zFvmhw|1NE0rP3gihuX}KWs~! zo{*s4t}et&^;gezH9LakG%&$Z^e5|oHU0O_9dV1PApao(> zKHC5+VCzm=ayDfOhUi^8rq770> z;YBH_$l@pC#c50CEd{)vis7a|{2z%SW7yXiw|vElxVT6u0|1y6pT=iEz&m7Q01qf* z$yctNz48f~Vj;3}&Z^AJtn3^mo2_~}G?0y0&YX}(+3|DdO`Sg#_@-Yy@K^$GY|SEp z;HGc;I7Y$<6X8t=dwfCE+{CasPXv%R@Qah99*myy(9~({n1>&j9uhk)zq`6Q==4Ws z%$zm*zCd^0?+d#(B>et~zj`1dViI$VJJtU=5p>Tz6N2vz2?=H1Ex(hxgWQAYjJvJ{ d{tNy^@&B#aZ6U`Lga-fs002ovPDHLkV1h;=dl>)# literal 0 Hc-jL100001 diff --git a/html/html/images/boxbottom1.png b/html/html/images/boxbottom1.png new file mode 100644 index 0000000000000000000000000000000000000000..ac30c96579d7ff0492462cca7506fb5edf28b199 GIT binary patch literal 355 zc-jGD0i6DcP)pG6-h)vRCt_)&r5EDFc5%Y-+vdW7s(<=2!3K?8~hkdA%+A3?H#%x zQmRx+N8j?-Xa@PP)b+KhE`oQAwiL(1;UoW=)A5WRk-7-pF#_aIlygSjFV;><4T5)+ z04c)Th$Tt@zmGUe6#o|q{@nBeJ--tjqb5nhrgfIG=PXeIq=>i(xCo>O zq=*DZ6yn{vn=zwOLn%7W62zz)T@IzQL-q;*!ZFGa^_%W2D5+6kUegw^|{Zm!0R zl^Ue%OYteoPg(X#4oVJ64G3V{&$4#XRj$-fRTr(ZF{3r3wUf0IYSY)=IXBn!b=NdE z=VtGh9ZKCdv|Eg;4~z4&^RxF$i1!F9zzVPdY(ISEoup6T5Pkpv002ovPDHLkV1m1s BnI!-K literal 0 Hc-jL100001 diff --git a/html/html/images/boxbottom2.png b/html/html/images/boxbottom2.png new file mode 100644 index 0000000000000000000000000000000000000000..f8bff5470b70f20931d94243ec0e981512a04b16 GIT binary patch literal 134 zc-rd>@N?(olHy`uVBq!ia0vp^j6lrC!2~1|6(4c~Db50q$YP+_VGw3Kp1&dmC}`p7 z;uumfC;7&%j~a&;yY~ltIMNv`u`SQ$RKcGcylukA^Nr?MRnC6+XXkI8>H7AGI|?7G d9$p*0o^g|sl3d7CJ6WI^44$rjF6*2UngErNE9L+I literal 0 Hc-jL100001 diff --git a/html/html/images/boxbottom3.png b/html/html/images/boxbottom3.png new file mode 100644 index 0000000000000000000000000000000000000000..44bebe16f162c72558aae42ffdef687da74df41f GIT binary patch literal 294 zc-rd>@N?(olHy`uVBq!ia0vp^+(697!2~4Bmjmjga_wvQ&mf&5-v8FjLQJgj8Q(i4FYkcWWnXmNW-YG_ z@bc`}Tso&uRQ1G4VH*w0EL+E0XX=G}6w>29EJ!h_|NBEXFmhY2rA*wuB~#`J2fpU? zJD$}Zc4Ecq_quA#${ywtg;N$h*q3>4_q!w?wsSVi-${S&Nziq=J@5Cwq&Q;^xw0&| zThG=!$?)0sjmyhT)m`=YaiOU_bGvHiZ<*JY$hKJhuW<4wgEJl63!(+SubI1cuae%m p^$!laSM0XsG=Coc{QB>g!k)tQanqW-&H??%;OXk;vd$@?2>|Htc1!>O literal 0 Hc-jL100001 diff --git a/html/html/images/boxleft.png b/html/html/images/boxleft.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed550ae01daf9a2265cac03c7c0b44870616afc GIT binary patch literal 116 zc-rd>@N?(olHy`uVBq!ia0vp^JV4CI!2~2zJ8$FxDb50q$YKTtzQZ8Qcszea3Q$nZ z)5S5QVovgo%FkD)YWwTYsW13-W$tA4JX!m)@N?(olHy`uVBq!ia0vp^+(698!2~4RLl27sDb50q$YKTtzQZ8Qcszea3Q$nl z)5S5QVovgp|Ns9ht86HJd{Ov#{ydw)*I!mzKR<83qv)w7!%Gtxfx0(4f`Q5zJYD@< J);T3K0RUUwBq0C* literal 0 Hc-jL100001 diff --git a/html/html/images/boxtop1.png b/html/html/images/boxtop1.png new file mode 100644 index 0000000000000000000000000000000000000000..1e41b24241b8692996abf76821db23ad852ca5a9 GIT binary patch literal 1307 zc-l2oYfw{16yAFiVh9N&fRccX7knXYF~J}KL_@?7p~Q$d)+xkLZH@Ry#s^?X?2QQ; z9RweY(iRko2i8t;6z_osQAWh1$EpU^#H8L&|fU0cG#M)EP z$2N=O;{Z_42LRUtFg^w6J^=P{0C30w2+IS&OL=nBZ4rc?SRECakp76*+~Eu`DnU9r z$M#6ARllM_m@I3{slOq)#t1&2QaM{5M3B(>?82}~M%7?a-FJXn$Wr?# zdUuu;(LKyzn-Xu1^as$BwCe7=?adp`Ce}?7g~IFDU{J10N|llBNT{mh2Xieu*6lv0#$#XWf-X z%?ztvLTT3!=>(oehq$FKwlrKijuTkwkCPwTOO@xA?e|c073t5oesMirH8no>a3DKE zGd@;zX<>F!_<`Z~+8&`iF950re3vT$nZR}HpSA2-vxWqz&z%IBOQv^s^3-}R95^CL1w zJvm!o)b6n$Th+wqSzY)L;|RcTCN4QN?@;U+c0qXB9Hyr!eT9asc%7-AunJqWQL_Mi zH@Uz56p`a#13j9DXV1Q&0iM^l`g6U=(`xg&@v5`|Kg*p`$uo3*kaR3QC6N9pyIJQ> z;^bPNMC_j=am?(8X}hMLwVTp2qFA3v^QkS$g{JW?)9nu#ZGwA*Oc4R%PM%W2dO9&P zCdwJ!0st?1#I5{LD>(y=}g;Kh*g9ydGdRte?0#V^2YE&(YeD+Ey`RF@;Sm~ zyTRU6z74K*l=X7i3b%j}L9#Yqji7Wv;l)mhrFVwBSQ&4J?5K~ndy)UPbG5WAQ2>by z5e`wAz0-5|LG^S2PF`BGw&OlP49UZ5FS2NKfej$nmiqR2Kipe<+71w6$a~~|HB|uY zwrR597JR2x{(Qy`1MqP%bzb-s!hO$b>3y8QgG!HQk*@XY?BWP`b8SM4RN3%ZWc)>^fk>@Vas9Gyzb@i|{$yWog+$*}qq*|5J zUq@812g@=8WW~;59yG|Aa@xF;SN;-Z2tX0h;{3!e*6>ZxVa&v~@L5I(|FgC+g;y!} otyg@`XJBB=@&Et; literal 0 Hc-jL100001 diff --git a/html/html/images/boxtop2.png b/html/html/images/boxtop2.png new file mode 100644 index 0000000000000000000000000000000000000000..01ebb03de27c93349273f86eac112ac6726de18e GIT binary patch literal 387 zc-rd>@N?(olHy`uVBq!ia0vp^j6iJ4!2~4v=ZK{ODb50q$YKTtzQZ8Qcszea3Q&+G z-O<;Pfnj4`&F{d;K)ynz%)UP?3JntH=2tTaIPfg@yT`_%&?bC5pNU1_@W;j1 z8JRi~Umsh{zh*E^m^l;#*zjTlh6t;kYUbx_ R_X7ig!PC{xWt~$(698c9WOD!j literal 0 Hc-jL100001 diff --git a/html/html/images/boxtop3.png b/html/html/images/boxtop3.png new file mode 100644 index 0000000000000000000000000000000000000000..77374ea6e393c27c7c8f4c302859be6502d1ee69 GIT binary patch literal 2362 zc-lQyd03KL6F-0gE+BT@A{EpYyImK`T_Fq$D|1Qjmzf%BrQYb8OHwWgSc=}B*?M#G_R38^Cu5-LYs_eKMNZC+lmwul=CpiQMv=UvVKRAweDc%6g(i6O4L zcL5N$1^{+40AH6NDFfh`B>?Xj0663Upc`>^f9o~?(1PtQ&OXOq2G>W8ug3*6eHv3m zlZ8=pvbpyb&`58PU44`(VqT+DEfRxE>1l6zN=VM-CebJXu!)#3r7W{eEUQc z&%Lk-v%0I`Ui|!&@Nq5yu}Sg#c2{{oJTg5BeZs&Ik9qjZdy9NkTUG$7P}4$?tV9XjJJKdE4~{ zr9Gib2xyp{d^+B?heIM?x}Lgm*{Ez)7QCm4e4RDpbdS}0k%ltYw~vwa_1s?PG2j$E zfwfF3+{{|~{uRY1k)LToz!Mhc4R}O3Chb%5LKlH@TvM-q=+XCyo8EQoz4|`vEb*-8 zHYhtE(dv+r%Vk?bc8jfLG=ZEjKACeHio!8=?A^7USrx`~o83ADOp6f*z|nZA1e|SE z%#ac71F0H;aAO7xTT#Xtd)||0_!pYU7PMG7RcTCbj%U323PCg+NP_vEK`ab(OAIq) zMm)$vyj!!$f{5aI0HG<^g-x4!JS5q6xF{oKbchaMr#6)i=LjP-1bPp^Uwni6vEQDV zF?!Vo+D~r0RF=`rfTjcLUy9QwM0*mFKppv@~ON+~@ z$)WQfl<$f;0TztwYCb`1*c==`Y z=E#pGkcz%En<)%cR4y)b>f0yCzCcH~zoD?E2e)2jlJS|z1eg*|PQrA&xK2e}Yb%GT z9c9!u@y`F>-lkMzYV+Mtg$knp**d$uJKOF?n>AiaL;bW%j8l}47Ufam=2mZW%i1=- z9J|XFx8xl&&4Tc9DQk#t3YBp+#6Qhd(gnp8cx(+8@m^-Kyb0AdM@KqzO;wcF1e^Xd z+3x^9(#Z!>&GC$zc@>YWG9S0A_d+sH(mu_G5wR*tIO^&eA%}$VOIPZ6L8tzs)yYoX z3Z>!(@h48j2QusrVU~gNzk?zPCGxvNSS`Zo_(nXB28Xa#l7y_T%EY0Z-(3I1WXfLY ziaz`C&8n8kz&q+jOKDO}+c&ZlavG|OpsYJ2x`ppEcTD<0xe5pwvWHoa){VRr4c;{B zSdBUS)xn`#`1565R}eEwdIo?n3o(Y59`0H@D16^-$f%_pHS|rP;fF<%6!+jq4lnpH zhcL~bIe?0B`0eoGg8MR&t5yR4Gs%|@iSiR=D@;R2{d6doM%$^!x12pAP(~AjL-1$I zGz^@oSY7gDRHp$YMx}t-{=g!Sl6dPa|}+h5rz zi3O=IyYAALbBwoT4)^%9nzN zRxUa)9j)+Czda4c`=t;Zs^WWt7$oeSYN)qS=}g81a%O^C)6>ajy)7U|Yt-!0bs2PI z&Hu3f_`@6xPp8_-3t(&iNhLmvW-K-Lz0Fz1B7?95hOD38hDQJkEm<=GRXr0<5Dh3BlHmnV_SW`>fP&$zBoyV+l!cMgr7dv{c zc=u=@)!a0o;DJWL9wmz>DTPsNO)1oRQEvQJTT3nn^Xc{dOs?NwP$L|NJ>BLQ`CXhg zYFj+1r)TgW^3#{Hb8Qju9(jl@8*O~LgI%4YeXb}MzR$DeCZiMMW3$(=?KJgW1!AYC zUw^k6yQQCSEQLW`wzS=F42lqef zV4-2?(38;(5;JRGH-r*yD=DMVBU&*{{#bU8&+9}twoj}Wb5-+H1C6dqQGrj6eXMk; z`}+YBP5iyZ>Sfb_mkU9ue@VUnKy^gdMZ`iUZHG6*L`A<}!)T4YVExHa4%5`Bf1P4*eWp#SD<$0WMef1FY=F;@1+5s*4(Kj2n@KglVi#-Rdn8%0gPUp0 zjj4da!>meEJrZc0wrpl0;=*t@Gg14cIRYAJOMHea%sAG$Fh$=x`rGUg-&*9cy5%AI z{4t9khBk8Y%JeyteCUElLF0+(KVs&90HDxC(42Ycm3c5YcoZh#xQJrE-1HWe_9I-6 zK)iu&$Fb2>hij1rW~k{P+663FH4I=@cxkg`m9yHZ*aD{*;Ja^svel!Cz(m!b`pjx; zK`l~esAx^2F7?C4U(sAH%VL-6RB&Uvub@7pEB`z+g@hS{hkR?1UxwzbL*hH^RWIaE t4^tuEY*v^4iZkc{zh!oN7*q&7P+~cAo@ukP5PIi;?OWYl%C|7M{{!nfAPWEh literal 0 Hc-jL100001 diff --git a/html/html/images/clock.gif b/html/html/images/clock.gif new file mode 100644 index 0000000000000000000000000000000000000000..3104e94b2fb671dd1dfdc4d8fb2e577471b617e6 GIT binary patch literal 817 zc-nLKbhEHb6krfw_{7fepMhcK%$e`rz3b@cC@(K}fdR$;+Uys{;r)plVg?qs>4+fkDJhyS{=wNC98gSTvmC?EH=@PEx zx3;}_wT$n~rQWqSeii-O;qH&a01c1`j*ML$X}N)O)q|$G8p)6U4E?i&HpZ}nl)jX*YZ2xERh#^&hj87 z>XEa+?Va;0zUxS|(> z!V_IbeGeZ7yl#gZkYYJ0eP!Ef10FsG0~W)RhYC5iuG+qog^*@TwIzYDDbw@Vlf?EbV&v_wYKd|JW_fg{H^^ir>?D?Z6zcn`s${+Ecx8h{51^{ga5hnlu literal 0 Hc-jL100001 diff --git a/html/html/images/delete.gif b/html/html/images/delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..855a9b3c2f26fce99bac3b6dc6d7505ee11d6299 GIT binary patch literal 153 zc-nLKbhEHb6k!lySoEI(2o^0`bmhvGJ9q9pdGh4x)29ax8~_R`{$ycfU|?g=0jU6~ zbzqLm*mY;$0v1gtQHLqw-T&jZnI2$iV*DU+F=g+JZCbGl&zUTEzei!R5SPyp&OBQdPw&|`lQ$L0cI)Sa&OOgptHQuw F4FH>(KY9QF literal 0 Hc-jL100001 diff --git a/html/html/images/download.png b/html/html/images/download.png new file mode 100644 index 0000000000000000000000000000000000000000..28b85cf632b73a43759ac815bdaff445e5e85f69 GIT binary patch literal 3884 zc-jFh57Y38P)WdK)YWFRvzAWC&?ATls8GaxcEIx;poG&mqDFgY+VDK8AE00007bV*G` z2h#^04jdXw6S1%W000SaNLh0L01mK>)QA4mNB`70|I=Cj(`Wy-0{_z| z{Kbg>#Yq091fNd;{&@i8c?JH60_|@A!BYVLX8`}075|n4|D_oJrZ)ekCjXr@{m51S zs7L>~Y5uh|!+9SB000*R11A*-T}ebwCk|;e36E1QO-2BPMF5CZ0ZADOX*n$@1OhiC z65E?R_m?N;h!X#%TJ5ZQ|H^L9mu>&7eaw$o>6vM)aZid_NXdR=rCTgE8VWcG0&pAw zhcgVFSs3uNu>aKY%Ce8r!;aI%ceSWi?$nyKt98%HugI}*_|3ZTw2zR59~B`mhJT?O zC;(enRgbH)ig<|s#{vF_7{YTgbV)HyD<=BNAG&e}oP=NK$cW*3 za;o-Lgzj*Z_ELW7OLEc`R;x~WcyNiTrMdgB#r=@3{4Psl%hvwI&;Rc5|LN=a)!qIr zT(A>3O6TS5ZFs>pXTA#+GGaVQYIe9)jng+_kXlxQhL`J4V4pf_%9@tZ|8$T4gpvPF zNB^3x|GvflEjs^QVE-8-|2ahe003PxLl+esd9TfojH#*P#hlOmuu%ZZk_P|(tjzHK z{PxWK{E+4S|`tWMa z&oS)X6HiBUB^p@}1WGt9XGJ@4acYr>f1)iSUhwbrU|EG{UWsO1i2OH6QUCw|0d!JM zQvg8b*k%9#3vEe6K~#9!?VJr*8}%K>??Ub+;R1za=OoCB^+JIv3A!R8DNyYa(j;J; za#_J9()iMrhAUV=rF6Ag)`k|8($xw=J1TW8>IAG%S8c60r)cXdbFJ;V65ZOdNfH8W z_w1hl^71&F%lYW`?7rl=yNBogpZmQZc|s0?c=6)Ji`W0Jj<}por^|J@-!(;}o)#8} zu{E|!u4!`i_)l>9Ry0A=39f$s38UWg-96(ZPj$7&_Z!!c-vqb!^x;cmB-f=$vutb$ z?ny$g@35LJVR({I?K`}}iZC>dFv6KI=EVpH!dOtvfe}V*{hqOydi({lGnd?>?rIjn9QAl76o{nvz|{*JYI3q05ia1vh?{|2?h$Vej(}1C zX|Xkp`dtz(aDMf0FCYOMs;_`)H#+QHeA(q>`~oyxx$JWN%hub{+YbmMmzzKUhF!xT zyDsNmKiyy^rU~QSd%YNP4YvRr+3dYHHZ!^o%sJ0n8N01)F=;H^|LqI((y?E~oi0Cqloi zKL8v0#ufN=c>+)12|R%(@C2T~6L z*}3*6#kspV6Bvdof#N))I1?IMIoq)3e|uK1U?vHvxkC1U?&1mxQc%jx6h$!seE`(_ zxSXOYsyTSEcMmmmgj*aoS%3Ik%pmOKN}zVP2K0H@1Ywh$+C&9z14DfRL5Hd4013*+ zD278MD+(xvQ!dsr|7G>S6SxspW-7Q565`Ge$T<*BD=*e0-885SlyEL{?!}NV>JuG~ z0RIZQKn+|}Izn_`IUHXFLO4?ycRr-{2}ez7siVdb$Y{tKICaXAUg@Z*aa0c0{Bs3s zfTHH2_H2#AQR;9wYLtTxIcq}kdGR@uV@wwYPnVugVvYER@*=qYslh>qWAI*wDY^0t zTfz~jb%8?x4LSxd43?H^2Vw#V=I*~=s5=XcAWF{Q zI;V7;t8)A`ejqF0zBrTRIP=Aq$~X?axi2JZ;HFAW-5q{DA%Wxj&C2g`%6%Nr{eKFf z4hpCyrrJy75=;&K6iF?d0n{*`bz;D zf*OX+dm3Q|{`|Q!@aeNeSopSOH(J>c;$Qjf_-Ab|9Y1iKn*HdX$Wsc&4xP5g`A<+% z`(NFE;J~N*-~6=CL>2q~%TD=6YXyrCGMkIdEz=`ezO|73z@2{YKE|~kppUKT+z6k5 zw<_ESdp>5iaP%S|@dTd06L2nf5Jy&fR6%M z`{9YcNfW$A^qu&S9pU7O4^H+?(a8@^oMdUliM|;+!PbqSnFRKccy~JB-2j5g)r1*{ zfB?|@lYsXFBS2hDfWC{W7H}p&oB_~#Uch@?2;RC1q?V@Yop(3_eo)z)nTk55t}Z#L zj@hSB)v8prb~fv6s2ImwNaOwupwl?V$lv9(K{vV%Jp__Wu607v6sR z1+UuQ>iEN2Rh7=(;_qVzTJ~jEF}>{v+q>Gkx;i^L5A}3(yu}!@_xb(Yf)>VL*!d<{ z+}YXF4TIM!9qsL#s|<|)gjPU!F(+7IotsVul`P(7srb5QhR$xM@MJZ zxY}QQ84&yhK#+Wc)_mY#`|}6eeLDF3!53cqt#$*84_TA*w7Yagt9I>LwJLw>Gi_~c z`=8tM8*N^){{-gQs)^n#0==nG>p*X&`QMwq`7nR_e7K$EeDKYv*4D`xr7CARqb9T| zGc!IjGmw?zT3@e7PD&`@K-jr``S$JG@Bei`ix;jpm8H@p^HWoEbLqW-JQ2lMMyoBf z#Yo$%du(PK`zSWiG;K1O3JQwrO{UZ`%alsEsy*v%X0xrpVy5kOd-E1%Tx-o%o6T-( z6kPq{w#IymzDciN*{ILAth4C#`CxC(*Xx^_8kt7s8QW7=BUo3ip_!DF6jMpb^2GFX zwPuZ8UB9!wxWGyq8yoY@*5a!GXuEK!sWv4gHDy8#8be`W;nQ25W}Yrm7v)>Cu0nW< zUb#*OmfuyfJR>7LJ>6i)HW*C0dY#c&Zd7aX^Ub>_PDO;6Z;v6-^N4LSB=WjwGCG=k zvMfiRGF1kHw=s1fEycTvH0sr6`8C%{rPoSHl8lsv0RS2qMM|Ynq>Pk3B9nznGs@QN zRMi406pGr!`}6MFu_L=-UAC73P(@4i7CA{u!IED|!S+4?z&46WnN$`bi;zZ;+hXrj zm=>8b5`pea%*a??Z%SLdXbFNYS+YaZU{Gt+dZ8tY1Xl_V3y+W?A>j}tp1tuQQYs@O zq*7_*!}G`|lhSiirfXJ8?&4XqW`W?ArR3(8m1Tv~4#CDXpQ^>uB0S=cvmTq9)5~ zi@{W$Ra{}Zjf@Nle(2#~M0~FZhaen>F$p5X#keH+K1r%_aX?2iA12H#4w5yn1mqkV38P)B-NU1 z?V?3Gz22bD$<0}KSMK6lmtcsCv}AR-hI z2qm#M{B&N*t*N&m;4YDxu9}~oo}pA`X2mI$S;_?ocigdH!5xWrrro?S78j$)&&K)k05UK4WgZ;FQFG!G66Yq|cvDhRl47n>=`9MmJo)BZVq*{j6M)|G zAy5>9gcynguf#<7kEA~)ulb4e8c<_WnT(8#xDK>X6zHNzkj04T@bH-E*z0G*zy$~q ziLj|{jRuF}B9stfL@0qs@K6lF5fCi`27y8_WL6j~Kn0<`+zD_5Lnl`T`L-f~NC-=S z6+tjgh(kgV5g`e}U=UzLD8eL|5EEbm6o-Z293dtYp|}v5Ix@kiz_1`h0D}aHgF#R+ z5rGQ{Niabmm_&>q1R=o*5h}z{?_3eg9Jgau2!aq49Ko2kNH7!?VK^cZ3Q!CaLKq|v uLPDVcyXrSV;3>y~ueU(~e1qhB)xQBUUu~MD>QSNq0000&_m6GzcweVcfsa;Snd*A<$2LppO0G#eFa{vGU literal 0 Hc-jL100001 diff --git a/html/html/images/floppy.gif b/html/html/images/floppy.gif new file mode 100644 index 0000000000000000000000000000000000000000..7db2f32d1da65f4d4f12af9ee70cef5205620acc GIT binary patch literal 151 zc-nLKbhEHb6k!lySoEL4x8w8w|NjphIMCkS9uySB00W9YSr{1@m>6_G9FSTE<`|7# zcl20$99GLNFyLA8dd4=9qbYNl6}1F^c;0k7S7K{0u`*2Y-roZcxIXRX&EpDqb1=th x_RhPhCntGShAi^CCEeKfpdkImueSc=`LA~bOzLJT6Ef?${!Zn|=9vr()&Ts?Ji!0} literal 0 Hc-jL100001 diff --git a/html/html/images/forward.gif b/html/html/images/forward.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8e09bff0a4ddffa59ee36876cf61d7cbe9e160b GIT binary patch literal 107 zc-nLKbhEHb6k!lynE0RJz<~qTuV1gNtz}?fQ2fcl2&5QvKmNmxh3A`!O2e3I-(vZrw&+j#wt7d literal 0 Hc-jL100001 diff --git a/html/html/images/header.png b/html/html/images/header.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf8902c9f18446fe0424bf799cd790129ae08bd GIT binary patch literal 19115 zc-mCE1ymeM*9DqDaCe8`5Zr=Wa0%}2?t^P^9|FPM-Q5W;gS$Hn?yfKQ``^2{uh&d> ztzN5FckMd+oLzNJg)7KOAi?9qfB5hLNlH>w>B9$@$vU!bCA>oeE2}z{m=hnuceCepPQe|g})1b_)rsr@L~w{;e#}U zl&G+Z`|?Q!%nzbDkMjxc8M~^Lw5L)TNy#4v9ZNrG2R89{nm^rh0gb60)02$A+~Gtx zgrVkx&4#~!MB5^M75^-R9;dK?Emd}Udna(4&S`pHt0h&Yx{@$?KQm`>Hk!f)_6E3| zkNR~!l8oYteE8py7mvz{I*mpKs~GetC<0arw&X5SBCIYcnQhUtCZGYE&J_%Kjiur`a-E6lG85zZj3`HApZzj$uZA}uhSHy@m%X9EZ+0V7FX6M0VW}m6ZbtPoQ zaLGqenaFJHa5E1LAU^zm2N>r?mh*qDA9e5*^sWSXPIm{h)%|W(RZjKp+VF!)9(pzU zN}7aVn^Qd+gyT`{4N5PZ5Ppt@r;}x8uL?!%OGQm3^F5>~(T0qv+SRHYqeP^;Y$N<| zJ~Bixh((-l^wG&-q5%#Lg*$NnzBOIKV8{XHpVsd}gR(_ahLu#sLCUnG6GUgg5rcVK zn@vLcGCqH;d2vM!!5*cKW*GP+xIBHpF22lZrC(IrYT>l0FVlQ4BhInpY$&xUZi#kU zW{8HAKgNmH%-{%(W5gY0!X$WzJAKOGI|H&IF{fuWT+JH|@v z<*RaOZlm%#n4F+%f|*}nOQct)hi<4NM4JGs%v_*>=14jLPkEFO#s8e|5$RxiD=UHZ z?+0*o{Xlg4U(5NqAkk-$XvNt|J_GUo+fwVA>Q{fo(>*(0f1;JtHX|lCGkVGlMGidq zy|@e~flABfPEvGW&`)#50lCb!w(=9NlX4F$bvaPw**I;4saha|7XcO)v;u8-amXq} z58)0)DM*}UFcRV}$nvY@$=USsGfU5QG!E-nb{k3rXGQ;10~?X{e~{U>nQ(ZY@LOSQ z(IvF+y$oWjYGnY@d&~y^Zt;I*K@8SuNZ8_zR9NJkIsN!gM+{6+@WAE2Sv1^KT+G8% zwB*e0m&1=jD#8JKyKW|t=i_P+#zFY~Hcm7wtYi))?)uugn;Z?C{Cq>F+Dw&g%{fl} zMBWAopPx=h&RG0h`_)!7m*_L=vX0~}Cu_EFbvgivF*^%d6)dOSh+GGz4RWEnKLr;B?r4b=aQ;^KTOc`HqbY_uf(3~Fd9y^ z#?f`>rqc6LQLQ+6WK1CV0fIi;A3r651AWXCG5Vkw9gSF5skfWZtcleJHm=AxIK(M% z4k=K!5@ERi&2MBI-08?vz=Ht2rStLM9wp0-yLM;nz!^ueS}E*&Pgt8@9ox%p=~7*) zF?JXvc0T23Xy9O5!~8?%Ca&^ybzpk?l@pL#Ke0#3qg}Z>bD^ZB2KU+T>_AB_Il6jd zUAi&YeLVXxgX!H{ZjGc22bX35CCZ_)RGiRaGb(3b@y&OHOyj;yL42*#O{A^xmZ57` zEsB7ic7ru#%BEY_nZkEq6yt*^(ipP|Aalr4Ag!-81mLmzD{6m9g;msFWCi7D;~j0x zpl!Kf>l2(8Gt-!}`@cQ=aUEHw>#)EcNUjz@FtGSLFSV_pd&P>^ z;>_OE`DU90hIEeTk98vM?8bQwGN28PwT(cgJ8h(!4Nfls%2F&JruPx*u{xXk|GBX?3Oun=eXDE1zik?NVa^;rTC%BsWL| zEe=9YFA|rj!HblKZ9H?%l{DEuHg;0=13xXuhT{B(>|C-A8+V?^$}#q^P(G?ITM9$e zQUSu60_uc#vZieP3bXg&6YH<9=PzG~L9G;1I&`qBK}VRHdGYwrGtL>T(#$N8swyz% z6D6AUCa$Kc2NbCmWyeuU;>>x;Mgc5oakFPpFuZE$`Hz5DB3@`Th_QdL(qPtxag$w) z&G6T&2M0SHwLY_-_Lrtl&AWr|-N%T^wIVORg*>4V^jTyUwyd~zlGY}*7bFTbM8W&2 z$sUSPYNN&uj-mG!1irpJ)-zzg)>oAFjRlt_Q-tW8!0p1*k@I)a8QROKt64w7ce!w7Eb zS#>b;v#?kOQefKk0Wz@@NOr?)s%rd8-q3Mno`*UPwXZ@AlSo{`ad{78&hGB0S zpduxpp)r=^)QdxQB6ye#)(lcpai%66zJ&5^ubLtap(5$x)Sw~fDaqc3AKf8!RTXC_ zuQ`)Sgvs4*^=-~fbWHIZ%`$cr7f$2IA2O26YtZ5%Nh=zDR{vtRy6?M>;$$7^u-Bg% z;|J%l*6$7hKqr?>mKEa+Q|uij@K6TcruYB!ykLvuv!%#NQRMT#|O$RZb{}d-JoBH&Y%-i*!oL*Tlqby|~+r6Ani z@+!qIM&F%{OjL?3jI5U9phlu!%QbtnBC*^c+==TxVj-7uM4nZV5Ty}7dZ9JnVBo%Q z;?8a(3IBwyM3(zSNr6lmE(X^)Uw%L!O$4s|?KqMHvg704lvQ&t#0PV<{qw@g1U+Yf z$3*!t2fD4tt>3Eiq#*b%*J13q%WI(Q^u$BNag17T9V4OMM9=M6%>T37Z$ZMDQXQQc z!mO&{;QXaW9eW80vawh(kYrG+jFa9iV4};}0N~4g8A2Hs`IYe=`jyu;+Ch@EeVwBH zvXcPWDYNx;f&XVdu5@P1vlzaK(i-(e9^QO|Ls$mS;D?xtf(XpCo0p~^1jK(dw)UD0ygT6xXq zcSH3N3~@YPAye=a+22mlB8rCbjcc40-k|(L>a%u?y8d@Awgr6>q!9B~jz5u-8H%=J z>WCSz(ATDS?WMiXPA@i<#@l#Sc6m}-m2>K4xlsACx@1_TFT_PMlPr_NC`>?$eOLd8 zJ+4$Ht`pECpV+4O9Brs9Dr9hs)r=9xgo3D6v+Z0H81Mm zO)eXSAROdQ<>kplLt@T|nlKlff5El2<)54T7{zgYan){$k#E`h7@lz`_rd%pj$U>A zecJ|J#$m`GT?7Owh+o{0wWMCY^>tI@jFRc>5XDD3+v)r5Ea&cS2QXU7d-3S2U~_D} zVH)dAuN3uRNI}M?8?{%@aXB-0IvKW_{B-aU`|hKd@Bh{f6O8irrq$lXUEcza`8n44QL8bwtP zE`1GaMs=k>DX}%LT2cNBWU>GdbyaNKn@Dr~)G0cARS-;W_)fM-bFOjBwyLY~d>fP~*HID0I;zQi8pUir!8dUn!g$fM z_@Q*@&P!tG(#zbq_SphyM`=?SAPClIvRljS;N>1~%_4)H7jBB-xR?hIQ=|VpLjJ%O z@fevh7yuKzpAd0&R9LRk65m3AutZeL=aj9h=kBp~65Lw3xBR^KwkFmcd}r*)W$>toe2$)=?I} z+ve3YT7<8qPOeWNn;Tp8{_qIdQc&p-C@h9v?$^*^-&+WI-r9z5yf$JB)^U~QH7`3I z$~3$~t^ErdvyUw1s>gWkkU(uZ4V*E2!^H7btF8oHZ`<1T17#Vb&O?Epw>_xS506+{ zo<@hhl(&(D?_>8`;zR|Xn>p;9Vt@K2VO4ZpWKA2h)#sh!3*&&cgk8G>vwPI!mMkb) z%BI&LKDXbCeZe^x1ag1eB#&;IJfLBw zmwU#Yp41x-y%K%Z$vH8oUb8*G^;mY}^c62iBf+rCgpXbCc_!AJmDBXBvZH7VJ2`SsX~b z5dLB}(H;p~RIT>~?^kRw5|3L2CUMd{ zMV6XN@c?gR0Yq)Mxt6KFuYvxEbuh~O)AeiVPNodR2@MY^KtTsGt}L|>#K1(P*9-~l z-vh7ho548fn+$+&T+)mm(y2;OThT7R^DP7qX`Ehk|jy*q9BEXqeSH;t{B;*!iBD80LxmuknJ;w^HxsTJu zge2>fmov&;A>>&91?9KwpLjr>xGe{yml%+m$(7lq>_P1f1sw;_5UO_T)mI<3m^bG1 zS{KAq?zH@}uCJ&A?$_~RpIWSHlt`pDc3ILJCpjkW)PhH4gWveTqJR|!XDj*E~a-Q_D59TV@wnjktWDC_lv6F&jc~uyp9ddb4*n9C)cG>FBh?oPkgK~ujcQSs{#MDA%}0W zb5Vgi!^y4V*Ah(`TTsMA-=CaY`ts(b)(~CvR;#Gm(PYx5PElmVD?7Q8e%e zwa%OEc=mf)c>kJFOA`y4`@S7sl#>`QpY4wON}Yz*oE?Lg7Vt7J&vvPiii#&wm-qNB zC%gP&X&u|;E{0cYYn)wE^z$sUwTRmc3}%lXQ$ zVIzv|mX`=_iLbw>UIp(T%L+Ae>Z;4wG{0ENAxV_3#|SpoRWV(6!!Sxy!S6iRdb;$I zWZIK-ZNLcn9@_iOOwarhP*dGMqr#M=fPcTZpNOgI(`mNVK96J~WOlRaw6%cM^Lh>7 zu*Ro8TplJ0)93G4D7gR&uCZ_>bKLVL1iEM$%p=JovA~h8y^xAo&>A~Q9H04{blL_f zBTng$>i9YuxJj6p2#uS?=avuSMK{M1)U|$wZ?33NrxyaG>PB6;U|rdQf(;bTK{@M& zC9Pk#=dK<*%IzlGvMl{#X>Es%NmaIPL%E2}SI1(`E-k98m+I4;$XI#AbkcRtJulXh z80|6xYYel7VH*n&2h(p{t$EC^p<}PA2nf^Mc?$wT)y-5P6!f$=?y?4VcYej#f~*b z6lE&M)b;uu()e*v5hmQLD$V@Q_NbWfizB$zDiD*3Eb-(M#O1_~$j zea}kyy`ZUY_E098Hhc%C&3!vi5*ltN{LVNF;_f*0+vit7iq_8?Bz74JziskcP9LbD zzuF(Y9m=n}gFEQnpN>5CSCaIP9;Q&5j_@<`t*PBUr^ijacfN{{bT$_b_?f`Ocvj0H ze93EnBmj-->sVzV8c?Q1BRMImJ7ymwo=jX!S_ms}~Ryw462W@k2x?VY+$O6(OG&;%8IEX0f6{- zBZ?w-HRa&TRNh*wttsS{`BMm{#g*xrD`jwVTDoY)jM~Z#02<$KaR?*S zcu|o_ye_6w@!v6d-CJpt7(~#zfeGnmZ>@<=ff4E9Pr*;{t=ZuW$>41+f%U8*Dnw4~ zZ|Tf!5K=)8u@bZn1&HJO4kcl2UiB(+_QwT89!V=CnMISS)Z6|zj{(_ddMRULoL2ZX z6lmeSPCS`JJjJFw+%7`-B8+wv=p(8sGYSc3NZ86tIia2Ji+=A5@4IzS*Ao8G_=Cyj zRD9xneD;$zNP5PS{1{t*IsU_#Z4UANl8`RpvA7hRsSD%Q;kYT;t&93lxTLDQM8v{$ zNsFH~!DmJOt)$RW4V%DlKCBWKK?65y`YgGHgkxfDRckZYNneis@w7ROu<17(TpzXW z$}XsA{kSAPD}Qv>jXikPb+`BwBkITJ-dBbn#^VBF4LZlYeu%|IW#T zKeJslofPBuQfr=N>$9)^3=h>%LVHvBtp2_Dr5Or{m1PWNI|>J;K<@h_cV>`5NXV)L zePuvzgvC;apfYX_11+*bh3EVTOl0l#+n0#1ZqbxiIIjgg!;tX7_&C;O>8$bn16LZG$VKvMJ?4mzE0wM!cU_gBjeWmWB4ws%Z{k04-i!YRAl%+lZH&|^Fhn*w5f7QB6*)dqH*}EL32U*ig6)pppp%4 zX`xX-MXcVb#Gps!g7f#y;9-vYlmrX;^Ys|j6$+4i@keD^L8+9PwIxM~yvx)!TO<|H zAppMHCs{$|30uEgRfhy_8&(ExW_j?3|#c{kI8*_7=_I}3+ca4juZuI|9C~9PX z->%7l-p9iUsA_0yYv91VvX;S9y8jj%Q~8{AZvSOBLA8v4>JaoWWdtd_;B#Nas$XTp zb+gFi`gVW+)%VugofMu}oM`af0D}_SB@}-OEvQ zvQ;)Xo$0TR1xsbzHE@Hb9aX^%u4Jl({SXW#A%&%cSp;A9xD|T{WsvS3AOxyFl+sF0 zT(O*V%5$XyT1|r!xH*kIjAVtZHsj#2Umr&g)xHWGGE5G|fBVmbxF~dHpTaH(PHoWTGRD5DuN<#k#+pud_7d7I7W9zV5h}qFZ`-fHlX&_p3!d?S<#38 zJnJn1D0)(RM9%vm5v$%8pju-l1~)_+MVXGdzb-(SF?@cpI%^Fuo+P(^;IcMWSoX zZs|!sTjt&@*KHViit~G^$@nu(eC*HT1!`|K+IIX>aqo>D+vnVl@vC=ve_K>MejJim zI9+AAxKZ|^I*eSfj^0_D|H|rXINJzBdoTvlv*!GMkhb$#F*4C^;w?+ZGv88db8SWL zqc9b?+*BU7{_>m(4^7UOoBGJ)O3a4N3^!g8Bl-!`tVYYP(ycgI@>=qGLZq`*X|_r= z{Mlud_P|TUNrBo=QrfGYO5MaZ`)Hei;%O0WT4^uI%kPXb#?C%s!;pi- z6CmvXR3D}|S6^+^-oYXN*x!W3j~xIH+v+v<nlg3Csc2G`w6(l_3{`i_Vb79A49B7yIgP0+q;z8NKL+$WoqLMO_p(*+_3$?n z@fx>)@CqK$EGedw4Epo}Z|7f9c-XwX8#bh)7oZm2S zHe(u;?{~LN*AO0;!H{NwW2#6<-GW{Qr>Pv#g0I5_5~s^0gkk?M7b!$HNJ5sad~ke} zWX~vn#9}22WH@o>tVp|QlFsop5#mk9rM{3+JV-j?89q~pe-2%me(zhZ-rDB_($f;x z??t&NsvA7iPR6&TMqg{5g{TVlRLF^xRRW#OZ>EW7Q*g`Z-q@vdiA@&r;tZJCdDAM9g4maluz?19;rWM?uH?|%e$c>c>g-ricL5w zW(F@F!I$-_rjuiVQJ0Jyx+=}PU;4h>sP*E$1o*Pv7i;gWhY9n)epTctzIVM1N}Tyj zG$_-)oZ6pGIUkcPJ6eLpIn)NRp&beB`IpCS#4MI!bJKAPJ*sVpZlnZ(BKq-bInHwh*;^HMz zWZnCAth+m6MP;P+1s?`FwP1rzW@a0U}|T^MYPVJ z&Sr`8IqNrXU4{|4_j8tdjq4I_CMFFhC1x?&NR`0fXPvj_$Dc|We3AMcZ#er~ij7F{ zzu8!4vu1f@CQO4Q8Sb4f?R0SNDjWJn}gkJG6I;9qA5lbIXF3m*+Los>>k}%zqNqu7<)2Spq znSV&00Ev5s=i*us593#spxSj2R_SQ9+~j7fh%s-_7?AW_<6W;S-R|ask!`&_kMZwj z%lk<_>rgh@wWOKD_KlDVjfPe@>QY7p;1(eP@p$;2KmA<~rB=pXmDeh2j2ovf@flxT z232ak`J=40d!EJ<+7P`RRjG|R1pTOsT&7Jh((J<}>tO8ADgio+VVO?yI z>@xja5FEdhCx%nO6V8~Va&|)uv98Mx`HuBr^Co+RiH}DkBACsdw}fp@uNbaRr-w8@ zSs&2I(At)3<6-UTa;)}8^jY|+x7>R#-vYwPz*;l)_qU(=#0#9m*JODw` zYH|j}-NDs-c+V7UZI2{IewPxpqc7ne#4Wl8TZ9aTju7!=vsMl;{umX!uP%WE{% zg6-ZKOT~KSUn;7r4T@(msvMj&k4Ap1gOs&zg;p#l1jAVMKvK(oo9La@C3K8D3yMJa zQeJh61Vswglf+bygqw!EH=m#*CH?7xQ?_ZS@odRhk=k)Miq5A^TD1h7S%Z1z_B!LM zF_}`|S=EDENNQaXD&LFz`{SG9dgC1_XOG|H={X{kChGmQ1q#aXb!8*qi1iT~Y&?KW zP0kIbjFngdZq#7ww_6i=)}b(y^ZK2O#4H_3Gf=}+BB#7k!jW6n$iDK4Tt3gssatTl z5wG9l{P8X4c~jZ)Md0BH5Y^^J%sbdyn2yFjLLs+|_XNoaLjPyGFUoKcLT2>>bJVN@ znUZb-(b4_<1So%pxT$y#;q1pkKf9d|}9TY-;I=LzgI2j7%<}l9SZ1jI`Js z(XH5SalB6EF=r64T8-w)jzq@%^>LbqC|pbz0j8jRoE^yn5~?5wJP#X+oc+pEdYy}a zc4bw}6HuLxcy9D4YO8WAgRUj?nCn4i7(JFMS;o|{)dKdc_4Qe>_9Gj+_97tYJsYb0 z$xG+}2+&3h)hz&KuD>$mxZK7&MHp!=A_Ro)=-dU`mrL!2B|MHJe&k#Io6)y4WkqrO zc2T}Gx1iVL6z+jnHPyMUp?@EiYngzRGoU$_6DF88{Jxp9frLnvVGABDdzu-r4<>*6 zWjUmnBh`malOU=Yg?xe=WlF~rBCmCz2(@6DWQiUI^dq>9kWk~0N}J1hps*IJazAsm z6<_u?QGIrG%TV;N`=UDaR2|1qJd4VqMi}mK4Ucods=K$!$dQQdZlt-(KA$6sf1G+t z6JAcH%Sm8BX^kF2BO)MpL?R@>w8O1~Wyl{WiK@XYdFN&UN=i3U_4Mh`42)&^L;Ed9 zB2%nTO)9r(j^a3nxMzlYNt}XT2esQMV?(5qUvi6@XDn?!r~rk6UUF_fb+%>1P9EaZ zIXeUZYlaDmK#?f&p%-Ei*)eQ)z0Z`C$M>Nxj2-z7pS0frND{}T1v*L;;@n;8 zs89m>_;eyj(kHCAfB<1lDdAEe`fg(`CYEia1vcSK+3eURk9E$9=}V?%WE-^Q*ny`Em4d zh@n@$7BGCf48oVf7Wr#%?)e3f0LcS0r zUzrsv@*{J@wG_r0Uz-uU$M&{Fu#pk*lT0di!NvFXN!Hoi?icCt5Oq!NH@HE>!0U%< zDvaLj)^V>jaj9;BrbN0+Myc_ncF4e1iS17~SWtkLoZ|ph@d1Ge4Lo(4V(Tv~Diz5) z9>Pr6+&U`gFa^`qRMa&}vs_fca96nLl|@a7N=!9hu%O1|;QB5+L&_lEL^^!0%h0V4 zoPz8sMX>BB(?|HmsV-y-o4_ zjT~Hxz%R}38}sv-!IAg^4^vJ2uYDo5+IQBiKs03Nj;%0x^aqu~pVGUDmC3J-D~xaB zoPMfbN~Vha#?zOV0A+7mWhAAg!1T;QEEvUeS4`ww9qfXL;+`rLis$?L%%I(z;#O`- zUGgIRLOdy;AE9ZgbA&1$IfEKfN$fD^0_!1M*-z{7lKIb*zZR{$W4;imjo+vrTu!1} zl}uPxvp8+4#CT0K9zI_@;FLZB*`Aho?cA#Aet29C8I|T{&b;EkUSy>N4n12TK^g)z zxKG-J8qm$(S<){#}i;BYaTBh0i*^R3BlPT;9nrAT-8ve|ocQq%+=4(<}SO_*lD)mJ> z4Q$ZQ4gO~*zJxt)_NI_?B9>20>O~<#*Rc*XsPKJ8;rAWKck(`G2z!;>0ldA7yfgZL zCERb1KGANU^Kl?b*ZDDI;APjtY=)Pc+smDLTFq%_tLJGzjNe^l0}j*GBfl+!Zp`}$ zB{18ju=y>Rh;!9>YumJLr)E@=UW^MJ{^^g&c%9ysm0IT=np9p-W`Bl%l&z`q+cogo zSi9F%9>UT0bu=ess?u8V?pLMr@x7l)D?}l`zRI*uKScd#Z|DS@(FwykF7+7#HE5VS zD-a-euiH3iVR*M#WTE0iOyt<_;x0AUs3&}Mi9qGbBjf&BPd`i%EeYOEmhW3btk@yLE3}eBL(DPb9wPt=h0chQTFr8Z0n=1< zA$}2dZN@Iy9Crx zQI}i++rDM^!YR5~ERK5EeZe2^YeyZ#~|g~ zO{}1+8*-BLzDt{F-PW~NBE9WD#Xc?DM+k2>p|&xv-afQd`|$m#N7YJ7e%GUgnd63Q z*|Ej%iGLV;_wId%`@QTd^||+;8)Z}EjxATF!zW(155Uc0go%$Q1p?72}( zL?%7VqZ8@(Ik4|p`Td1fN&Yd9NHWGJwA_zVKP-gUKjWiDV?+!rN)I^U$}41XYXi;q zaK6x;7q_Qte05?Ebx7bK8vV=`FI#>ve#T`IAD}XNRUeMP-cnuu*pu#8!c??-3%}mg z@&nv9^ev?o7LcO?IcyoB&(Y49C`kheM~FFDj?W&~(;b$*tKz?DkY_%Toyug?m+<9F zG7Y>yR+}G9r{zv2llSEsE{2|kUaRvPT~(+5N#bFMKO8oco|=iK8pSupW&^xN=uexr z4H*fhZvQPiXs+_!qubeVb3^98-ld~sOfIr^zP4uASN%HhFk-F#3G!@T>^ozUMIyI* z_Blz{O&&OFt=4l4!f*2VT;GeH7?j$dSdr}0eFRmTOJ%h5w%&K$wc_;p9Y@dI@R}S& zP>}hjg0$9`1V0~uHeY7WY&+sWL2j$HghYOi*VeMwpw$LOmv?V_y12xQ02MvAdOw=A z0w)E|tvjDzwynkSaYi8Ip~LL^p}amIyTQvMKU)#m5d!U#9wurxDpDA~4A8q)}(iwW2*xE#_*opp>}D(4Z?K{xN06iuUH9>Xzhn1Xs$*>GCJ3 zgf(TpRc~);IxUTzo}+qEU9vHEOqwYxWeYwEdg9#yZPGpxX;LIg1XTB=m32#LHTLIX z9@)gX=~xP?AU3xG^!A;fLNy>hwTMar9t_>HSa);+i@8!t^6-}n2WhqX#6-w_=s1eu z+AkM6H0b;8q*atVHRSSW5*}Zx3smDk=GICD5Q!tV^p^> z#^ZZ3;;DUEE#XjgD*jnJ5L_r=t%Z3Y#1lKRrxN%nzz`Bf1-+O;bbAM`Qm?E6mxA2Z ziZljG^{@n$Cw3W2-8eo-M@(v>@o%kn8; zNvX|erMoqWdH*Nm|F86+yQ9gPB7q(s`uo7OF#FWPIJYK6H4bVbD=uZKc%O;L(;V;t-g8s7B`dZ!*Uhc~ue^*d{53^16z8>m#=F;Gs zj*bHeh|C!Df07%%E63P3->)sCoO70MSmLsy-b5i5NsB=(NjXAHxVa&{Klo+6FI4%l zqa$-Qm@4;o`-^&1f1O`caTzWEjXq+PVbkk#G?f7s)0r^$oOuMLFotw3PD1N*|uckbCRMep;xD8{Z{P~)59EserBYnB)x0U zy_VgQ_OgiMQsOD`g$U&;)emD>d%2a@Vy~Kx5aGGHyjJoyd)nm9IvZ~9` zR{dVVOS_7a#$a|<#bfNY?AcSIhcwG@5+`$GxxM+alr9N;eMO*+!gbW!z*$*Z4Bsz4 zeZ4<#>+7PgoriBP>}2OH3kw=m}#FjCkmGb z1R6U3)`EW3GS&oZso~(L!ZtyUYyLTQP*HHH9>-LfFf_^^(T<2L{XmVqK|^IU&*_#D z)b-RbL9g8b#NqOr)K^yCLutNia=UD2W=2)U3%KqZQ^x>( zFD?r2^D`+6%DbzhVt4PgdOUL^A^j)E7E*ki(BJwWL2yQja9dAi6s>Dk!|CE;HM2y& zmcnu)&T@5lRCX0c=qNaH!h_qD@?3ZvOpx0QGAxpdKBnRca0`oZez7d>2~}bhp-jXT zO)#V)&!s9Bm!i^Fz#OBzYSMGt(tkf4Of{RRvwOzitc_6+D_Ci5AOV%@%)dM(W(3FS z;30bN&z$RZnxToGT?tiHUL914d%*p-;&kxltFB|WP8G*PvMD{Fy5l`Ot4gp|)>yd# zL`nASphWvNfc9>*^p`@w_Dn*l2&+ejCEQpx1=>AIYa|I0zJ; zR}jPI_!SJ0RA%rS=DDx79mVF^$1 zkxVvhJ>+;By3r@f7R1ubD)&$lxO6m9v*e4hbyp{NopBYhiE>Af*`2tdeXB{I0>}90^{yM6-(yavjR|?tzX`44Z&gYss zU&*LB$|=g;-{uAdZl~<+HX6I?jH|26^E(Qjr$_|t^?21)v|Uf5rZ)H*9B0bBl*3Q{ zh&~>^^hTUo4jcxXbX9(}A|0h)!#Xw;w|x`uH_M>spSCA&jVnwkyj{LmYReJg9tONJ z1deYW%J6t}Ux`h?#LG{xRmV>n{wcsmxH{uO18Z&1@c{AvN{`ruyoDRijiIr$J^hv- zdyC(y(eC5Y*cB2Gq279gVPt;6ugCJXm&#YYuu{6l^Yb z>T<9HGQ;&W+J;-z94}VCBi%D|&|NOW!kZ5U#wSZ4YERZ!Bzk>QRTPB*lyL(WKVy~M zRr7qaz>V6K-kW)DP(4_QSW%|0#!Sy~^jG;}~}mUy3-$FyHeBk-1$^#=5r&p<&= zg_1nJyq33dX^f`E0Z|M76BWYnp$Ehsw+is$*Uond7Qbk(nQ;bOeL$A>APv0XIzdFo*u|xUCnozX@9^lG z$L35NM}O1~7kDur5Hj+dY94$95w$|tTb9FHu{V-e6i|TpHvzhK@vADcDf>;Z z>$&8ff3ov&F0r!GuqB(>nnq>Yv2DIm8#6+~msS5M^uFu$PA1FG6*QzUGKn-rIc{Cq z^$G-)9+SyYrha`o@Nuy{*wDHygabMKRM$?S-TB~$#N?Eg-H-q@IS3Eu!I-QLWG^`SZtNT=IUWN03j-wKYL%U)>Hnzq-13_|AruR^(5w*h# zD@iu^DRkAlfBr2eILR`Yo+R-gXiLe*S7n5pN|T4T%4nCEh^N8k9O&i-H>bLsgLx#q zrI*WpEpFAjo60cviTf zkm~AkVtuK-`H%vCWWcn9`>bsrv3or4Rdj~kADj{T$`GjQt3rau^qQ<(S)P_%YsU&n zDwtk!AWC&ukN7_~IX-SNX&E!kjT6oGr8#SCN@#|$S)K*I0tOoG7elDCOtQFX6#z^O zY0f>&jC=^CB2D^{Z7Q)2!i|4swgFbB@iEn_oW8st5qF&{iawi<+fd=Y))!t<;g;4hlks-gPxfT z_S{8!Cpfx;3{Up9i8LW3_d2=FZsM&outQ3m&tK$lJurhbi@C_d@cr)YvElmDuzsg} z_R{klwO<^{U%=#eXB@N}fCH^Wnz0(*F-6g@X7qcv*FS&W|bF5_ygx+kiU>4W+Ma8L@R^uXfN#UhSPSKU8CU6Au`S1dnA%>x3IpSb+$C_(qcTLrRvH)3@dw&2<=Bip!jx}Beprm!u#a0r zoN?nI0k-OWw8q~oWWn#*0Cs$H8Ue5nJ8`ggS0NL#^T@AO*vy049BmSHocb5;q*8i#j^>gx9GTpO0J5U~_h zP7!O~WBs>mnQI5{Oq;XGgw;cFTi4Fef@^Ah8SpLb*?ZdX{4`$3ik1MnfqDp=-aT`N zdptYj7u&%B4&MYph|A$QqF?BVs8~Ra0b>z#YEJj-03eqK?VrhHqNs7|4j@s&I8~4h zY{5RR;5~k2A-n!Rz@nf9&j^2GuciPsKJJAo(1+lcA;xHrn<_K39o&;#+N}p-k0EV1 zawChP?%R;#ci;UK_P>bOOt-$C1#yWerwA`TY$@@_Ybf&`u~fAnsL(U_IYO>5%q(Y;Vj)*Z zsmxqy#4B<~SRv%fF$s~3txrX_+Yf#bu#@nr zHpQ)?sr3r89yiZmA1V7fogV@5HQqYAa>1X?i!?(%;>+lJ6BXAj3H;5@aG1I`7>FOD{GcG-r$xSiJ8>AW68jc8U z1A<@GS5^{i)A22RZjMv4;fTuSZFwvR*bPzCST+rAEukS{|4U1Zmgb&h1Iu5wm*UXc zEdhI+O;5*)#9y!;<(5yE`kme2)1Al?eQAD+gNN9bseu-Pq#%xZN)Us;yHY1J#^KKS}-JCTXK!xpS|DIP~V>De-4ULyh z2g$z~r(Q2$!EHQT?|C=R^CDJ&z%;M6>T?IoXovI4gb6_%9^&fP$%r3bpUBxL88p$w zu|T=^!qbgOmrD97$dF2@0(*RKQOFH*58JDM2owlmNF{NnazlQF`vw9^^;-TYtU?xz zzltJ~-aN~5!vqR(Ptm3{mAgM^*jwwU*B<|34q>52b>c+j#}U4+4vB{sYzaeR9ezvb zVf}whvHvO=ch4S=Yjyzjh*EDvQ$kv8ZNYM6&s%V_ zx^kJkb1J!=OGgu~F}sv2Gh1M3KQF+j)lbVxjT!Li;sp&ION)Iedl+>~Qw1!nL@{^j7>hJk0r$sZS4D5O`*hL!r zEG4BW*@lBW@w!^nH9+A+-$Tak^w(SmkrojZ)nZfjW91ryvg95P|0f(ql5prNjU7Cv z53I9nscm&gqYry(WbXszO4kLKmly}dZ|{6IZdcn!FQQbO6@^nOGTU%=jFMw?u7aPq z!l<9^skrYI0aBeox}35pnePV!6m~2d#v*FV!dy@N;VuUHE5{-e!=iC-O}xP7R-$j%;&Tw9M77OMq*j-WF(m zlzZxm>;a`UddXiVWsdD8qs1Vobgc|EwSkflH5QRge3m>s>+t9%8zraU4KHB2r(G(O z+fE}c7Kv6A?yV!!`(yMoM%a>*0jEEZK6{OX5q(2~qqR2Q4?yRG>pXQ9UT1=h~XP^1xO0 zIo3v6PNiwFvtxYDPRtig_4knqH4_h_qxgKHU+vvJFI%GRZYc2Hm-^VX&(cWuq4LU< zMDIr`a|*f^*Ow{*OK33rj@P8Ao!EtfM_AmPW>YJIJ2 zDKJ^sRBFcmAkF||6e-WUgpg(x&Ts5pp2O^)U3$>eNGS!^z{R(~CIZe`te9d!@{Ci| zdd|FvpD*d^o7>Ea16~%Ze9r!0Anv4i{9t=HtsP@N!sdQ(>U3T-D49*pe0ylfq(R(> zn3v|~b*V$%S8zlA8NAT{*V&`TPO@(xjql~FC)GM}_Ai@H!MVR*IW0inRne^x7}%jeX(8LkQF z%gycXgUC=l^mB27@OWwQ!tnggCGt+SE~O53wUng9b6lpKSo}6C1(*%@H`7Wcv3YG> zxONEVkkGf9{gvOeC?VIvW>1282|J1Bs5a&(+or~gV}M}@QzR!EivD61Cie8sjPHlh z%ou!e1P}VE_E7L&^1`$Keo^vbUJ>Z&r<(!u|sY#CK6MGn+Q|meC zH|;KxCqJB#e~Zy|tb-!r>I+BN)$Yr> znCfU04h6db&A^8LW000L7 zEC2ui02BZe06+s|c)HwvVUP)oHFJ(2-q=C-1&<Gq&0N1|rLrrqeO& N)1osZRf7i!06S3>LJa@_ literal 0 Hc-jL100001 diff --git a/html/html/images/null.gif b/html/html/images/null.gif new file mode 100644 index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66 GIT binary patch literal 43 sc-nLKbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ literal 0 Hc-jL100001 diff --git a/html/html/images/off.gif b/html/html/images/off.gif new file mode 100644 index 0000000000000000000000000000000000000000..2fa51220fcdb3124271ec47ba5403de48eb1f925 GIT binary patch literal 125 zc-nLKbhEHb6k!lySoELaz<~pwK7D%g=FOTlYZ#D#;!hSv5Um3uKx!SBoj7*gS;x}i z`MRU;#o4ci`;{8JL*^b7UAMY3DC_Y)O-|2}v+rv7OB`RfsXDSV52>!= R6y#ZVL+9%8SXBlFYXA{>FXaFL literal 0 Hc-jL100001 diff --git a/html/html/images/on.gif b/html/html/images/on.gif new file mode 100644 index 0000000000000000000000000000000000000000..a690ee777b06ec11639f72299b98b311b016ea9e GIT binary patch literal 139 zc-nLKbhEHb6k!lySoELaz<~pwK7D%g=FOTlYs$*X7+^s0CkrEp)&UV9wGPYy9J}tU zV{P&DR!nqB-~ImlH;twpF2aR@lg;+&p9-7F$(SV=5s}TjN%APGwp9Q8C;S?MeD#iE h{U;n=s@cf9Pl~qPK1Hs(N{Hv&3zMHG%+wedtN}4jFroke literal 0 Hc-jL100001 diff --git a/html/html/images/reload.gif b/html/html/images/reload.gif new file mode 100644 index 0000000000000000000000000000000000000000..a456e7e733e703442d5755520a9d870f670e000d GIT binary patch literal 108 zc-nLKbhEHb6k!lynE0RJz<~p2&z@xf1I3>#j38PEM1bTSm~316SE|W=cM#_G6HjtA zzrNGwR+*{FQ4U6lRr6QJxNpDuEqD68*lT=`e;y54EZI}+!!h;bmAr^UcZ@>jY-M1u F1^^bfCgcDB literal 0 Hc-jL100001 diff --git a/html/html/images/web-support.png b/html/html/images/web-support.png new file mode 100644 index 0000000000000000000000000000000000000000..8f580cf7fc209bf0a79927ce68d588cc5b2c0999 GIT binary patch literal 1642 zc-jGK29^1VP)cjr6X_ct$6Z7S>) zpEtjEAAR+ezCTSST{!XRaX}Em;qbt~z{JGs(fPSsbMsuW=yrSZ`Qp^n+~$p&lBoo) z11C>@_1MTE@Ih$8;V@0p`#!nvD`&nIYz_2vZ##78fSYct*VVEpj*X3tPh5NL>YHwh zqtP9_eC2#7wB^C@gAaY?z<-If{r&wTBS+R^?}X<5e)92e?mlotktLqvMM11qDx0@< ze`4E4{JC$ZDzN+Gk1CR^DELyWJT)^nIM}5{wC^XHotb&+dr$N$>Cq>DP`LUk)7oR+ zzDwa*i`8N>S@?=7J$~3Wef3IC^L5^%|4?hF`J>zJ9g5D6r!#ZsU;O!dBGha$)>HAr zzj#)-HOY)$N={sR{=%hXGO5F~_YUqp?$A)V)q>fv3lj#`lCQ0qjvm+nG;s`VF0zR; zkA43qPk(1!giK9N?mcYfMw{K_BfcE^sseuLh~adMH%EiXrghVBCZAUAJLYBf+s zu*&i8W}4a_Ie2VCTf5zEHW-PTTKn?oncFSfa(zQ+*8mD(b93Xnv3Me}8e5vRQjn&d z(fN00Bhvr?l;?Q>>WHe6Btg=2iB$wqMG%B77BLi9%+?}qMx3-#%(2B{CYON~WN{(E z3&~(eQ?DyHZkd^R`<~5P5wFi%7DXIGjTWk{t>gAuj4z7$EXx-10iU~4&-HI^qbRCe zE*J8J$m{~C$2~OR_0bpxP^_*2b%tR807y$q%azMlXn%mf&@Z?U;f=ri@^`<|>2QnD zI6b%Y^kb)no6UHE5dp%a*Kmwz@wd9&)<&8ZN>V;ofDl#`1pt8d_H4g+>D7JhUd;>7 zG?KdCe`)0GpI-ja%DjZ&gI?FSj(w`L!THYVLtTS50iz8VT`$z{@7R3&ser3Tx*fs(+Ngj`2QI{*OXIIg$1_YFlIy?$*U!-q$Q z%@9Lki)^u2s#KTphTo*HSzh*fx6;mlB$m9*K_;6pnMsG;on|s_H`UYK2LM3*zMzMm zm*rBGw2kQ-&Y%6G=fdCo{-#Ve7l}ksoYWFFlL1-{p2)2?J3Bto><`J+id=5UX1UZ_ z{NdyG-x+NtT>t>AF}F{AeiTJ*CKJV^<1Cw1A+%8xsj~squoRCdHI}k8(C#i$kGfnm z$MezXjizSe;>B0)jCTFdo~EOpKK#@Vf7-sGud|~^Q6yCbftD@xx?y4Ay2HI&k*k$T zX*CriO2%|{MH1Pnn%{qL^u6^X>nC4GcXoE(w|8Ln?boBxhz3v%p6#Tr0mqDl&Qb@W ztng)}tkq(&BJq5_B(Cn<+2`|mm*b0fC92o!<#Kt`rcI?%X>xLw;k}uh&aal+|iA7z}rnz0P7Rnog&Ap657@=Xr)<7={r90Ya$L z>Fjp9)9EBh(r7eN6yJt3e1=RaI5BR;vL32!bF8 o!fZC%Y<9DWdjDttujv2dKes&ZmGy}Ec>n+a07*qoM6N<$f@v>3Z2$lO literal 0 Hc-jL100001 diff --git a/html/html/include/CVS/Entries b/html/html/include/CVS/Entries new file mode 100644 index 0000000000..e77d464ba1 --- /dev/null +++ b/html/html/include/CVS/Entries @@ -0,0 +1,3 @@ +/domMenu.js/1.2.2.1/Thu Jul 1 18:59:12 2004//TIPCOP_v1_4_0 +/ipcop.css/1.5.2.1/Sat Apr 17 17:10:24 2004//TIPCOP_v1_4_0 +D diff --git a/html/html/include/CVS/Repository b/html/html/include/CVS/Repository new file mode 100644 index 0000000000..625b853785 --- /dev/null +++ b/html/html/include/CVS/Repository @@ -0,0 +1 @@ +ipcop/html/html/include diff --git a/html/html/include/CVS/Root b/html/html/include/CVS/Root new file mode 100644 index 0000000000..95a1bd070f --- /dev/null +++ b/html/html/include/CVS/Root @@ -0,0 +1 @@ +:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ipcop diff --git a/html/html/include/CVS/Tag b/html/html/include/CVS/Tag new file mode 100644 index 0000000000..6331936028 --- /dev/null +++ b/html/html/include/CVS/Tag @@ -0,0 +1 @@ +TIPCOP_v1_4_0 diff --git a/html/html/include/domMenu.js b/html/html/include/domMenu.js new file mode 100644 index 0000000000..7ce4dbd0db --- /dev/null +++ b/html/html/include/domMenu.js @@ -0,0 +1,1167 @@ +// {{{ docs <-- this is a VIM (text editor) text fold + +/** + * DOM Menu 0.3.2 + * + * Summary: Allows developers to add dynamic drop down menus on webpages. The + * menu can either be horizontal or vertical, and can open in either + * direction. It has both edge detection and