aboutsummaryrefslogtreecommitdiff
path: root/tools/boca-submit-run
blob: 0b42e9fce9df4d9fec691be25a39e930de22e759 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/bash

[ -x /etc/icpc/bocaserver.sh ] && . /etc/icpc/bocaserver.sh
if [ "$BOCASERVER" != "" ]; then
	if [ "$BOCASERVERS" == "" ]; then
		BOCASERVERS=$BOCASERVER
	else
		BOCASERVERS="$BOCASERVERS;$BOCASERVER"
	fi
fi

if [ "$BOCASERVERS" == "" ]; then
	echo "This computer has no configured BOCA server. Ask an admin to update /etc/icpc/bocaserver.sh (usually resetting everything is an easy way)"
	exit 1
fi


for i in uuencode wget tr perl sha256sum cut; do
  p=`which $i`
  if [ -x "$p" ]; then
    echo -n ""
  else
    echo "$i" not found
    exit 1
  fi
done
temp=/tmp/.temp.`date +%s%N`.txt

if [ "$1" == "" ]; then
	echo "Usage: $0 USER PASSWORD PROBLEM LANGUAGE FILE"
	echo ""
	echo "where USER is your username"
	echo "PASSWORD is your password"
	echo "FILE is your submission file"
	echo "PROBLEM and LANGUAGE are according to defined in BOCA"
	exit 1
fi

runaux=`which boca-submit-run-aux`
if [ "$runaux" == "" ]; then
	runaux=/var/www/boca/tools/boca-submit-run-aux
fi
runroot=`which boca-submit-run-root`
if [ "$runroot" == "" ]; then
	runroot=/var/www/boca/tools/boca-submit-run-root
fi

if [ -r "$5" ]; then
	nom=`echo -n "$5" | perl -MURI::Escape -lne 'print uri_escape($_)'`
	for BOCASERVER in `echo $BOCASERVERS | cut -d';'`; do
		echo "$BOCASERVER: time-out - this will automatically retry soon, you should not worry"
		echo "BOCASERVER=$BOCASERVER" > $temp
		echo "user=$user" >> $temp
		echo "pass=$pass" >> $temp
		echo "name=${nom}" >> $temp
		echo -n "data=" >> $temp
		uuencode -m zzzzzzzzzz < "$5" | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp
		echo "" >> $temp
		$runaux $temp
		if [ "$?" == "2" ]; then
			echo "$BOCASERVER: time-out - this will automatically retry soon, you should not worry"
			$runroot "$BOCASERVER" "$user" "$pass" "$nom" "$5"
		fi
		rm $temp
	done
else
	echo "file $1 not found/readable"
fi