#! /bin/sh # First argument is seconds between running everything period=${1:-60} packages=$CTF_BASE/packages state=$CTF_BASE/state www=$CTF_BASE/www BIN=$packages/mcp/bin NEWPOINTS=$state/points.new POINTS=$state/points.log SCOREBOARD=$www/scoreboard.html if ! [ -f $SCOREBOARD ]; then $BIN/scoreboard < $POINTS > $SCOREBOARD fi while true; do start=$(date +%s) next=$(expr $start + $period) # Collect any new points for fn in $NEWPOINTS/*; do [ -f $fn ] || continue cat $fn >> $POINTS || break rm $fn done # Render scoreboard if [ $POINTS -nt $SCOREBOARD ]; then $BIN/scoreboard < $POINTS > $SCOREBOARD.new && mv $SCOREBOARD.new $SCOREBOARD fi now=$(date +%s) if [ $now -lt $next ]; then sleep $(expr $next - $now) fi done