diff options
| author | cassio <cassiopc@gmail.com> | 2015-08-10 01:11:10 +0000 |
|---|---|---|
| committer | cassio <cassiopc@gmail.com> | 2015-08-10 01:11:10 +0000 |
| commit | 0ec22acb9a0b7700eb9b8577d57cc26aee69ac03 (patch) | |
| tree | 5626985ff997e376ae498ec424e166f7393e6eb4 /tools | |
| parent | e80e0bbdb0b44f95caf6ee69456a05f1c4da65c3 (diff) | |
| download | boca-0ec22acb9a0b7700eb9b8577d57cc26aee69ac03.tar.gz boca-0ec22acb9a0b7700eb9b8577d57cc26aee69ac03.zip | |
scripts to submit, still to complete
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/boca-submit-run | 55 | ||||
| -rwxr-xr-x | tools/boca-submit-run-aux | 73 | ||||
| -rw-r--r-- | tools/boca-submit-run-root | 10 |
3 files changed, 138 insertions, 0 deletions
diff --git a/tools/boca-submit-run b/tools/boca-submit-run new file mode 100644 index 0000000..d6e7685 --- /dev/null +++ b/tools/boca-submit-run @@ -0,0 +1,55 @@ +#!/bin/bash + +[ -x /etc/icpc/bocaservers.sh ] && . /etc/icpc/bocaservers.sh +[ -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 + +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 + boca-submit-run-aux $temp + done +else + echo "file $1 not found/readable" +fi diff --git a/tools/boca-submit-run-aux b/tools/boca-submit-run-aux new file mode 100755 index 0000000..fcaffaa --- /dev/null +++ b/tools/boca-submit-run-aux @@ -0,0 +1,73 @@ +#!/bin/bash + +[ -x /etc/icpc/bocaserver.sh ] && . /etc/icpc/bocaserver.sh +if [ "$BOCASERVER" == "" ]; 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 + +[ -x /etc/icpc/bocaservers.sh ] && . /etc/icpc/bocaservers.sh +if [ "$BOCASERVERS" == "" ]; then + BOCASERVERS=$BOCASERVER +else + BOCASERVERS="$BOCASERVER;$BOCASERVER" +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 + +if [ -r "$5" ]; then + nom=`echo -n "$5" | perl -MURI::Escape -lne 'print uri_escape($_)'` + for BOCASERVER in `echo $BOCASERVERS | cut -d';'`; do + md=`wget -t 2 -T 7 -S http://$BOCASERVER/boca/index.php -O /dev/null --save-cookies /tmp/.cookie.txt --keep-session-cookies 2>&1 | grep PHPSESS | tail -n1` + echo "$md" | grep -q PHPSESS + if [ "$?" == "0" ]; then + md=`echo $md | cut -f2 -d'=' | cut -f1 -d';'` + user=$1 + pass=$2 + res=`echo -n $pass | sha256sum - | cut -f1 -d' '` + res=`echo -n "${res}${md}" | sha256sum - | cut -f1 -d' '` + wget "http://$BOCASERVER/boca/index.php?name=${user}&password=${res}" --load-cookies /tmp/.cookie.txt --keep-session-cookies --save-cookies /tmp/.cookie.txt -O $temp 2>/dev/null >/dev/null + grep -qi incorrect $temp + if [ $? == 0 ]; then + echo "$BOCASERVER: User or password incorrect" + else + echo -n "name=${nom}&data=" > $temp + uuencode -m zzzzzzzzzz < $1 | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp + wget "http://$BOCASERVER/boca/team/getfile.php" --load-cookies /tmp/.cookie.txt --keep-session-cookies -O /dev/null --post-file=$temp >/dev/null 2>/dev/null + fi + rm -f $temp + rm -f /tmp/.cookie.txt + else + 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 + boca-submit-run-root $temp + fi + done +else + echo "file $1 not found/readable" +fi diff --git a/tools/boca-submit-run-root b/tools/boca-submit-run-root new file mode 100644 index 0000000..77b4ff9 --- /dev/null +++ b/tools/boca-submit-run-root @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ "$1" != "" ]; then + mkdir -p /root/submissions + chown root /root/submissions + chmod 700 /root/submissions + cp "$1" /root/submissions + echo "date=`date +%s`" >> "/root/submissions/$1" + echo "code=`cat /root/submissions/code`" >> "/root/submissions/$1" +fi |