#!/bin/sh

set -e

sh -n /etc/default/ooniprobe 2>/dev/null || exit 0

. /etc/default/ooniprobe
test "$OONIPROBE_RUN_DAILY_TEST" = 'true' || exit 0

test -f /var/lib/ooni/decks/debian-default/user.deck || exit 0

fix_permissions() {
	local user group mode path

	read user group mode path
	chown $user:$group $path
	chmod $mode $path
}

if ! [ -d /var/log/ooni ]; then
	mkdir /var/log/ooni
	{ dpkg-statoverride --list /var/log/ooni ||
	  echo Debian-ooni adm 750 /var/log/ooni
	} | fix_permissions
fi

# Remove incomplete reports from former runs
su Debian-ooni -c 'oonireport -f /etc/ooniprobe.conf status' |
sed -n -e '/^Incomplete reports/,$s/^\* //p' | while read path; do
	rm -f "$path"
done

# Try to upload unsent reports
su Debian-ooni -c 'oonireport -f /etc/ooniprobe.conf upload' >> /var/log/ooni/oonireport.log

# Run daily test
flock --nonblock /run/oonprobe.daily.lock su Debian-ooni -c "cd /var/lib/ooni/reports && ooniprobe -f /etc/ooniprobe.conf -i /var/lib/ooni/decks/debian-default/user.deck" > /dev/null
