#!/bin/sh
echo ======================================== rcS

/bin/mount -n -t proc proc /proc
export INSMOD="/sbin/insmod"
export MODDIR="/lib/modules/"$(uname -r)
export TZ=CET-1CEST,M3.5.0/2,M10.5.0/3

$INSMOD -f $MODDIR/misc/fb.o
$INSMOD -f $MODDIR/misc/dream.o
$INSMOD -f $MODDIR/misc/avs.o
$INSMOD -f $MODDIR/misc/dvb_net.o

export PATH=/var/bin:/bin:/sbin

bin/mount -o bind /var /mnt/flash 
[ -e /mnt/flash/etc/rc.config ] && . /mnt/flash/etc/rc.config || . /var_init/etc/rc.config
#umount /mnt/flash
[ -n "$SLEEP" ] && sleep $SLEEP

echo ======================================== Mount HDD
[ -e /dev/ide/host0/bus0/target0/lun0/part1 ] && mount /dev/ide/host0/bus0/target0/lun0/part1 /hdd
[ -e /dev/ide/host0/bus0/target1/lun0/part1 -a ! -e /dev/ide/host0/bus0/target0/lun0/part1 ] && mount /dev/ide/host0/bus0/target1/lun0/part1 /hdd
echo ======================================== Mount USB
[ -d /dev/scsi/host0/bus0/target0/lun0 -a ! -e /dev/scsi/host0/bus0/target0/lun0/disc ] && sleep 5
mount /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/usb ; touch /mnt/usb/a
[  ! -f /mnt/usb/a ] && mount /dev/scsi/host0/bus0/target0/lun0/disc /mnt/usb
echo ======================================== HDD and USB mounted

init=0
/bin/boot || init=1
[ $init = 0 ] && /etc/init.d/rcM

mount -t ramfs none /tmp
chmod 1777 /tmp

$INSMOD -f $MODDIR/misc/ca.o
$INSMOD -f $MODDIR/misc/sdev.o

[ "$VAR_ON" = usb ] && { mkdir -p /mnt/usb/var ; /bin/mount -o bind /mnt/usb/var /var ; }
[ "$VAR_ON" = hdd ] && { mkdir -p /hdd/var ; /bin/mount -o bind /hdd/var /var ; }
# touch /var/a will fail when nothing is mounted
touch 2>/dev/null /var/a

if [ $init -eq 1 ] ; then
	mkdir /tmp/var_backup
	if [ -f "/var/a" ] ; then
		cp -a /var/keys /var/scce /var/etc /tmp/var_backup ; sync
		rm -rf /var/tuxbox # Sorry, I need to remove it
                rm -f /var/etc/use_udhcpc
	else
#remove from Dreamflash
		cp -a /mnt/flash/* /tmp/var_backup ; sync
		umount /mnt/flash
        fi
	/bin/eraseall /dev/mtd/1
fi

[ -e /var/tmp/init -a ! -e /var/.init ] && touch /var/.init
[ -e /var/.init ] || init=1
if [ $init -eq 1 ] ; then 
	cp -a /var_init/* /var
        touch /var/.init
	sync
fi
[ -d "/tmp/var_backup" ] && {
	cp -a /tmp/var_backup/keys /var
	cp -a /tmp/var_backup/scce /var
	cp -a /tmp/var_backup/etc/keyupdate.url /var/etc
	cp -a /tmp/var_backup/etc/romu.cfg /var/etc
	cp -a /tmp/var_backup/etc/init /var/etc/init.save
}

#create empty keyfile for keyfile updater
[ ! -f "/var/keys/irdeto" ]      && touch /var/keys/irdeto
[ ! -f "/var/keys/SoftCam.Key" ] && touch /var/keys/SoftCam.Key
#[ ! -f "/var/scce/irdeto_keys" ] && touch /var/scce/irdeto_keys

# /var hacks
[ ! -f /var/tuxbox/config/shell_tool.cfg ] && cp /var_init/tuxbox/config/shell_tool.cfg /var/tuxbox/config/shell_tool.cfg
[ ! -f /var/bin/nfs.sh ] && cp /var_init/bin/nfs.sh /var/bin/nfs.sh
[ ! -f /var/tuxbox/start_enigma ] && cp /var_init/tuxbox/start_enigma /var/tuxbox/start_enigma
[ ! -e /var/etc/satellites.xml ] && ln -s /var/tuxbox/config/satellites.xml /var/etc/satellites.xml
[ ! -L /var/tmp ] && { mv /var/tmp /var/TMP ; rm -rf /var/TMP ; ln -s /tmp /var/tmp ; }
[ ! -e /mnt/flash/etc/rc.config ] && cp /var_init/etc/rc.config /mnt/flash/etc/rc.config

cd /tmp

. /proc/bus/dbox.sh

mkdir /dev/ost
ln -s /dev/dvb/card0/demux0 /dev/ost/demux0
ln -s /dev/ca0 /dev/dvb/card0/ca0
ln -sf sound/dsp /dev/dsp
ln -sf fb/0 /dev/fb0
ln -s /dev/input/mice /dev/psaux 
ln -s /dev/input/mice /dev/mouse 
mknod /dev/ppp c 108 0

LD_LIBRARY_PATH=/var/lib export LD_LIBRARY_PATH

/bin/hostname dreambox
/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0 up

# sleep after 10min
hdparm -S 120 /dev/ide/host0/bus0/target0/lun0/disc
# accustic management
hdparm -M 128 /dev/ide/host0/bus0/target0/lun0/disc

ls /var/bin |while read x
do
  [ ! -x /var/bin/$x ] && { echo "Setting execute bits on: /var/bin/$x" ; chmod +x /var/bin/$x ; }
done

[ "$DHCP" = enabled ] && udhcpc -n -i eth0 -s /bin/udhcpc.sh
/sbin/inetd &

# I changed in enigma the path to serial device, so I can use serial port for other stuff
[ "`grep console=ttyS0 /proc/cmdline`" != "" ] && SERIAL=console
if [ "$SERIAL" = http ]; then
  ln -s /dev/tts/0 /dev/tts/h
fi
if [ "$SERIAL" = tcpip_client ]; then
  ln -s /dev/tts/0 /dev/tts/m
  echo 1 >/proc/sys/net/ipv4/ip_forward
  modem client >/dev/null 2>&1 &
fi
if [ "$SERIAL" = tcpip_server ]; then
  ln -s /dev/tts/0 /dev/tts/m
  echo 1 >/proc/sys/net/ipv4/ip_forward
  modem >/dev/null 2>&1 &
fi

( sleep 30; /var/bin/nfs.sh ) &

if [ -e /var/etc/init ] ; then
	. /var/etc/init
fi

/bin/daemond &

/var/tuxbox/start_enigma

exit 0
