#!/bin/bash

PROGNAME=$0
BASENAME=${0##*/}

RemoveJobs()
{
    for JOB in $(ls /var/spool/cron/atjobs); do
        if grep -q "$PROGNAME" /var/spool/cron/atjobs/$JOB; then
            JOBHEX=$(echo $JOB | cut -b 2-6)
            atrm $(echo $((0x$JOBHEX))) &>/dev/null
        fi
    done  
}

[ "$(pgrep -f $BASENAME -c)" -le 1 ] || exit 0

for p in $(grep -E '^Package: openvpn$|^Package: x2goserver$|^Package: rsyslog$' /var/lib/dpkg/status); do
    case $p in
        *openvpn)
            ! grep -q ^tun /etc/modules && modprobe tun && echo tun >> /etc/modules
            ! grep -q "xbian.*/usr/sbin/openvpn.*/usr/bin/killall" /etc/sudoers.d/openvpn 2>/dev/null && \
                echo "xbian ALL=(ALL) NOPASSWD: /usr/sbin/openvpn, /usr/bin/killall" >> /etc/sudoers.d/openvpn
        ;;
        *rsyslog)
            rsyslog=1
            if [ ! -e /etc/init/rsyslog.conf ] && [ ! -e /etc/init.d/rsyslog ]; then
cat << \EOF > /etc/init/rsyslog.conf
description "enhanced syslogd"
author      "mkreisl mkreisl@xbian.org"

start on started xbian-run
stop on starting rc RUNLEVEL=[06]

console none
respawn

env DAEMON=/usr/sbin/rsyslogd

pre-start script
    test -e $DAEMON || { stop; exit 0; }
end script

exec $DAEMON -n -iNONE
EOF
            fi
        ;;
        *x2goserver)
            x2goserver=1
            if [ ! -e /etc/init/x2goserver.conf ]; then
cat << \EOF > /etc/init/x2goserver.conf
description "The X2Go daemon is responsible for post-session clean-ups"
author      "mkreisl mkreisl@xbian.org"

env DAEMON=/usr/sbin/x2gocleansessions
env XSOCKDIR=/tmp/.X11-unix

start on remote-filesystems
stop on starting rc RUNLEVEL=[06]

console none

pre-start script
    test -e $DAEMON || { stop; exit 0; }
    test -L /dev/fd || ln -s /proc/self/fd /dev/fd
    [ -d $XSOCKDIR ] || { mkdir $XSOCKDIR; chmod 1777 $XSOCKDIR; }
end script

exec $DAEMON -d
EOF
                rm -fr /etc/init.d/x2goserver
                ln -s /lib/init/upstart-job /etc/init.d/x2goserver
                pkill -f /usr/sbin/x2gocleansessions
            fi
        ;;
    esac
done

[ -n "$x2goserver" ] || rm -f /etc/init/x2goserver.conf /etc/init.d/x2goserver
[ -n "$rsyslog" ] || rm -f /etc/init/rsyslog.conf

if [ "$1" != run -o "$(xbian-config updates progress 2>/dev/null)" != 0 ]; then
    RemoveJobs
    echo "$PROGNAME run" | at -M now + 5min &>/dev/null
    exit 0
fi

[ $(cat /etc/debian_version | cut -f 1 -d '.') -gt $(grep XBian /etc/issue.net | cut -f 3 -d ' ') ] && \
    [ -x /var/lib/dpkg/info/xbian-package-repo.postinst ] && /var/lib/dpkg/info/xbian-package-repo.postinst triggered

[ -e /var/run/reboot-required ] && {
    exec > /run/motd.dynamic
    uname -snrv
    /bin/echo -e "\e[5m"; /bin/echo -e "Upgrades have been installed - Please reboot to complete upgrade\e[25m
"
    exit 0
}

[ ! -e /run/motd.dynamic ] || \
[ $(stat --print=%Y /run/motd.dynamic) -le "$(stat --print=%Y /var/lib/apt/periodic/update-success-stamp 2>/dev/null|| echo 9999999999)" -o -e /var/lib/apt/periodic/dpkg-run ] ||exit 0

rm -f /var/lib/apt/periodic/dpkg-run

exec > /run/motd.dynamic
uname -snrv 
. /usr/local/include/xbian-config/modules/updates/functions
[ -e /tmp/aptupdates ] || retrieveUpdateListFn
/bin/echo -e "\e[5m$(nr=$(grep -c . /tmp/aptupdates); [ $nr -ne 0 ] && { echo; echo $nr packages can be updated; } )\e[25m
"
