#!/bin/sh
STATUSFILE="/run/foxclient_update_status"

# Pick the first package server found in sources.list
PACKAGE_SERVER="$(
	cat /etc/apt/sources.list /etc/apt/sources.list.d/* 2>/dev/null |
	grep -oP '^deb (https?://[^ ]+)' |
	sed -e 's|.*//||' -e 's|/.*||' |
	head -n 1
)"

# (status)
status() {
    printf "%s\n" "$1" > "$STATUSFILE"
}

wait_for_package_server() {
    status "WAIT Warte auf Paketserver ..."

    while ! /usr/lib/nagios/plugins/check_icmp -H "$PACKAGE_SERVER" -m 10 ; do
        sleep 10
    done
}

run_update() {
    status "RUN Suche nach Updates"
    apt-get update
    if [ "$?" != 0 ] ; then
        status "ERROR Suche nach Updates fehlgeschlagen"
        return 1
    fi
    status "RUN Installiere Updates"
    apt-get upgrade
    if [ "$?" != 0 ] ; then
        status "ERROR Installieren von Updates fehlgeschlagen"
        return 1
    else
        status "OK Updates erfolgreich installiert am $(date '+%Y-%m-%d %H:%M:%S')"
        return 0
    fi
}

wait_time="0"

while sleep "$wait_time"; do
   wait_for_package_server
   run_update
   if [ "$?" == 0 ] ; then
       wait_time=43200
   else
       wait_time=1800
   fi
done
