First version

This commit is contained in:
andy committed 2026-10-15 20:44:05 -03:00
commit 243e92a9dd
84 files changed
+4012

No files matched your search

@@ -0,0 +1,41 @@
#!/bin/bash
# Runs as root (contest-restrictions-warning.service). While any contest
# restriction is off (after maintenance with contest-restrictions off), shows
# a red banner across the top of the screen, so that the proctors notice it.
# The banner has no title bar or close button, the team account cannot stop
# this process, and the banner comes back within seconds if its window is
# destroyed. It is redrawn every 15 seconds to stay above the other windows.
export DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0
off() {
! systemctl is-active --quiet firewall.service ||
! systemctl is-active --quiet usbguard.service ||
[ -n "$(ls -A /etc/contest-restrictions/disabled 2>/dev/null)" ]
}
show() {
width=$(xdpyinfo 2>/dev/null | awk '/dimensions/ {split($2, a, "x"); print a[1]}')
[ -n "$width" ] || return
xmessage -geometry "${width}x70+0+0" -buttons "" \
-xrm "*overrideRedirect: true" \
-fg white -bg red3 -fn "-*-helvetica-bold-r-*-*-34-*-*-*-*-*-*-*" \
"CONTEST RESTRICTIONS ARE OFF ON THIS MACHINE - CALL THE STAFF" >/dev/null 2>&1 &
pid=$!
shown=$(date +%s)
}
pid=""
shown=0
while true; do
if off && [ -e "$XAUTHORITY" ]; then
if [ -z "$pid" ] || ! kill -0 "$pid" 2>/dev/null; then
show
elif [ $(( $(date +%s) - shown )) -ge 15 ]; then
old=$pid
show
sleep 1
kill "$old" 2>/dev/null
fi
elif [ -n "$pid" ]; then
kill "$pid" 2>/dev/null
pid=""
fi
sleep 3
done