#!/bin/bash
# Restore initial system state, clean all temporary files

umask 022

# echo "Updating package lists..."
# pump; sleep 2
# perl -pi -e 's/^deb/#deb/g' /etc/apt/sources.list
# apt-get update >/dev/null 2>&1
# perl -pi -e 's/^#deb/deb/g' /etc/apt/sources.list


/etc/init.d/autofs stop
[ -x /etc/init.d/knoppix-terminalserver ] && /etc/init.d/knoppix-terminalserver deconfigure

# remove only "temporary" or saved files in the given directories
nuke(){
for i in `find "$@" -name \*.gz -o -name \*.bz2 -o -name \*.0 -o -name \*.0.log -o -name browse.dat -o -name \*.\*pk 2>/dev/null`; do
rm -f "$i"
done
}

# set all files in the given directories to a length of zero
zero(){
for i in `find "$@" -type f -size +0 -not -name \*.ini 2>/dev/null`; do
:> "$i"
done
}

rmdir /mnt/cdrom?* /mnt/hd?* /mnt/sd?* 2>/dev/null
rm -f /etc/ifstate /etc/X11/XF86Config /etc/X11/XF86Config-4 \
      /etc/XF86Config /etc/XF86Config-4 /etc/sysconfig/* \
      /etc/ssh/*key* \
      /etc/samba/*.SID /var/lib/samba/* /var/cache/samba/* /etc/samba/*.tdb \
      /dev/mouse* /dev/cdrom* /dev/cdwriter* \
      /var/run/*/* /var/run/* /var/log/ksymoops/* /var/lock/*/* /var/lock/* \
      /var/state/*/* /var/state/* /var/log/nessus/* /var/lib/nessus/* \
      /halt /reboot /ash.static /etc/dhcpc/*.info /etc/dhcpc/resolv* \
      /etc/resolv.conf /etc/*passwd- /etc/*shadow- /etc/*group- 2>/dev/null
mkdir -p /etc/sysconfig/network-scripts /etc/sysconfig/provider
cat >/etc/dhcpc/resolv.conf <<EOT
# insert nameservers here
# nameserver 127.0.0.1
EOT
chmod 644 /etc/dhcpc/resolv.conf
ln -s /etc/dhcpc/resolv.conf /etc/
rm -rf /tmp/* /var/tmp/* /var/backups/* /root/.??* /.??* /home/root/.??* \
	/home/*/.ssh /home/*/.bash_history \
       /home/knoppix/* /home/knoppix/.??* /var/lib/texmf/ls-R \
       /var/spool/texmf/ls-R /var/run/screen/* /var/spool/squid/* \
       /usr/share/applnk/System/Nessus.desktop
nuke /var/log /var/cache /var/spool/texmf 
zero /var/local /var/log /var/spool /var/mail \
     /var/lib/games /var/cache/man /var/lib/wine \
     /var/lib/nfs /var/lib/xkb

for i in `find /usr/*/man -name \*.\[0-9ln\]` ; do
[ -f "$i".gz -o -f "$i".bz2 ] && rm -f "$i"
done

# delete old dowloaded packages
apt-get clean

# Strip X11 Libs
strip --strip-unneeded `find /usr/X11R6/lib/modules -name \*.so -o -name \*.o`

# Recreate empty utmp and wtmp
:>/var/run/utmp
:>/var/run/wtmp
# regenerate module dependencies and ls.so.cache
echo -n "Updating ld.so.cache..."
ldconfig
echo "	Done."
echo -n "Updating modules.dep..."
depmod -a 2>/dev/null
echo "	Done."
echo -n "Updating mandb..."
mandb -c
man doesnotexist >/dev/null 2>&1
echo "	Done."
echo -n "Updating menus..."
/usr/sbin/mkmenusfromkde
echo "	Done."
echo -n "Updating locate-database..."
updatedb --prunepaths="/KNOPPIX.build /mnt/hd /mnt/cdrom /tmp /usr/tmp /var/tmp"
update-dlocatedb
echo "	Done."

echo -n "Fixing permissions in /dev/..."
chown root.root /dev/ttyp*
chmod 666 /dev/ttyp* /dev/sg* /dev/audio* /dev/dsp* /dev/mixer* /dev/sequencer*
echo "  Done".

echo -n "Fixing permissions in /etc/ppp/..."
chown root.dip /etc/ppp/*secrets /etc/ppp/ppp_* /etc/ppp/peers/*provider /etc/ppp/peers /etc/ppp /etc/chatscripts /etc/chatscripts/*
chmod g+rwX    /etc/ppp/*secrets /etc/ppp/ppp_* /etc/ppp/peers/*provider /etc/ppp/peers /etc/ppp /etc/chatscripts /etc/chatscripts/* 
echo "  Done".

echo -n "Removing unused architecture Kernel sources: "
for i in `ls -1 /usr/src/linux/arch/ | grep -v i386`; do
	echo -n "$i "; rm -rf /usr/src/linux/arch/"$i" /usr/src/linux/include/asm-"$i"
done
echo "	Done."

# Remove obsolete bluetooth module
rm -f /lib/modules/*/kernel/drivers/usb/bluetooth.o

echo -n "Creating auto.mnt..."
cat >/etc/auto.mnt <<EOT
# Knoppix automounter file for Directory /mnt/auto
# umask=000 only works for msdos/vfat floppies, but otherwise the floppy is read-only.
floppy	-fstype=auto,user,exec,umask=000	:/dev/fd0
cdrom	-fstype=auto,user,exec,ro	:/dev/cdrom
# The following entries (if any) are auto-generated by knoppix-autoconfig
EOT
echo "  Done".
# echo "Setting OpenOffice Link to default EN"
# rm -f /etc/alternatives/soffice.resource ; ln -sf /opt/openoffice/program/resource-en /etc/alternatives/soffice.resource
# rm -f /etc/alternatives/soffice.help ; ln -sf /opt/openoffice/help/help-en /etc/alternatives/soffice.help
echo -n "Zeoring available Package lists ..."
for i in $(find /var/lib/apt/lists -type f \( -name \*Packages -o -name \*Sources \) 2>/dev/null); do  :>"$i"; done
dpkg --clear-avail
rm -f /var/cache/apt/*.bin
apt-cache gencaches
echo "Done."

