From 0ec22acb9a0b7700eb9b8577d57cc26aee69ac03 Mon Sep 17 00:00:00 2001 From: cassio Date: Sun, 9 Aug 2015 22:11:10 -0300 Subject: scripts to submit, still to complete --- src/team/run.php | 2 +- tools/boca-submit-run | 55 ++++++++++++++++++++++++++++++++++ tools/boca-submit-run-aux | 73 ++++++++++++++++++++++++++++++++++++++++++++++ tools/boca-submit-run-root | 10 +++++++ 4 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 tools/boca-submit-run create mode 100755 tools/boca-submit-run-aux create mode 100644 tools/boca-submit-run-root diff --git a/src/team/run.php b/src/team/run.php index d11447b..13cf2fd 100644 --- a/src/team/run.php +++ b/src/team/run.php @@ -177,7 +177,7 @@ if (count($run) == 0) $strtmp .= "
NO RUNS $linesubmission = @file_get_contents($_SESSION["locr"] . $ds . "private" . $ds . 'run-using-command.config'); if(trim($linesubmission) == '1') { $strtmp .= "

To submit a program, use the command-line tool:\n

". - "
boca-send-run USER PASSWORD PROBLEM LANGUAGE FILE


". + "
boca-submit-run USER PASSWORD PROBLEM LANGUAGE FILE


". "where
USER
is your username,
PASSWORD
is your password,
FILE
is your submission file,
". "
PROBLEM
is one of {
";
 
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
-- 
cgit v1.2.3