aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorCassio de Campos <cassiopc@gmail.com>2017-08-10 10:49:24 +0000
committerCassio de Campos <cassiopc@gmail.com>2017-08-10 10:49:24 +0000
commite926ad94df156c2a58e35e24d25229e0ab041aae (patch)
tree38db549a3337693aefe30e99582383d5e853e2f9 /tools
parent02b4aacc81613792b0fa618692145dc1e2989e42 (diff)
parent94c6cd12dacf9de46051c57e6f6bf216e86c8df8 (diff)
downloadboca-e926ad94df156c2a58e35e24d25229e0ab041aae.tar.gz
boca-e926ad94df156c2a58e35e24d25229e0ab041aae.zip
Merge branch 'master' of github.com:cassiopc/boca
Diffstat (limited to 'tools')
-rwxr-xr-xtools/boca-auth-runs12
-rwxr-xr-xtools/boca-submit-run-root31
-rw-r--r--tools/boca-submit-run-root-wrapper.c20
-rw-r--r--tools/control-machines.sh60
4 files changed, 107 insertions, 16 deletions
diff --git a/tools/boca-auth-runs b/tools/boca-auth-runs
index 565bbd1..b4a3d8f 100755
--- a/tools/boca-auth-runs
+++ b/tools/boca-auth-runs
@@ -10,9 +10,13 @@ if [ "$BOCASERVER" == "" ]; then
fi
user="$1"
if [ "$user" == "" ]; then
- echo "parameter user missing"
+ echo "parameter user missing. Usage: $0 <user> [<optional-server-address>]"
exit 1
fi
+if [ "$2" != "" ]; then
+ BOCASERVER=$2
+fi
+echo "Server at $BOCASERVER"
read -s -p "Password: " pass
for i in wget sha256sum cut; do
@@ -26,17 +30,17 @@ for i in wget sha256sum cut; do
done
temp=/tmp/.temp.`date +%s%N`.txt
-md=`wget -t 2 -T 5 -S https://$BOCASERVER/boca/getcode.php -O /dev/null --save-cookies ${temp}.cookie.txt --keep-session-cookies 2>&1 | grep PHPSESS | tail -n1`
+md=`wget -t 2 -T 7 -S https://$BOCASERVER/boca/getcode.php -O /dev/null --save-cookies ${temp}.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';'`
ress=`echo -n $pass | sha256sum - | cut -f1 -d' '`
res=`echo -n "${ress}${md}" | sha256sum - | cut -f1 -d' '`
- wget -t 2 -T 5 "https://$BOCASERVER/boca/getcode.php?name=${user}&password=${res}" --load-cookies ${temp}.cookie.txt --keep-session-cookies --save-cookies ${temp}.cookie.txt -O $temp 2>/dev/null >/dev/null
+ wget -t 2 -T 7 "https://$BOCASERVER/boca/getcode.php?name=${user}&password=${res}" --load-cookies ${temp}.cookie.txt --keep-session-cookies --save-cookies ${temp}.cookie.txt -O $temp 2>/dev/null >/dev/null
grep -qi incorrect $temp
if [ $? == 0 ]; then
echo ""
- echo "$BOCASERVER: User or password incorrect"
+ echo "$BOCASERVER: User or password incorrect, or unconfigured server"
rm -f $temp
rm -f ${temp}.cookie.txt
exit 3
diff --git a/tools/boca-submit-run-root b/tools/boca-submit-run-root
index 0fac460..eb2528f 100755
--- a/tools/boca-submit-run-root
+++ b/tools/boca-submit-run-root
@@ -42,12 +42,18 @@ if [ "$7" != "" ]; then
chmod 700 /root/submissions
nom=/root/submissions/`date +%s%N`.bocarun.tmp
- echo "BOCASERVER=`echo $1 | tr -cd '[[:alnum:]]._+-/'`" > "$nom"
- echo "user=`echo $2 | tr -cd '[[:alnum:]]._+-/'`" >> "$nom"
- echo "pass=`echo $3 | tr -cd '[[:alnum:]]._+-/'`" >> "$nom"
- echo "problem=`echo $4 | tr -cd '[[:alnum:]]._+-/'`" >> "$nom"
- echo "language=`echo $5 | tr -cd '[[:alnum:]]._+-/'`" >> "$nom"
- echo "name=`echo $6 | tr -cd '[[:alnum:]]._+-/'`" >> "$nom"
+ tmpvar=`echo "$1" | tr -cd '[[:alnum:]]._+-/'`
+ echo "BOCASERVER=$tmpvar" > "$nom"
+ tmpvar=`echo "$2" | tr -cd '[[:alnum:]]._+-/'`
+ echo "user=$tmpvar" >> "$nom"
+ tmpvar=`echo "$3" | tr -cd '[[:alnum:]]._+-/'`
+ echo "pass=$tmpvar" >> "$nom"
+ tmpvar=`echo "$4" | tr -cd '[[:alnum:]]._+-/'`
+ echo "problem=$tmpvar" >> "$nom"
+ tmpvar=`echo "$5" | tr -cd '[[:alnum:]]._+-/'`
+ echo "language=$tmpvar" >> "$nom"
+ tmpvar=`echo "$6" | tr -cd '[[:alnum:]]._+-/'`
+ echo "name=$tmpvar" >> "$nom"
echo -en "data=\"" >> "$nom"
uuencode -m zzzzzzzzzz < `echo -n "$7" | tr -cd '[[:alnum:]]._+-/'` | grep -v "begin-base64.*zzzzzzzzzz" >> "$nom"
echo "\"" >> "$nom"
@@ -56,10 +62,15 @@ if [ "$7" != "" ]; then
# uniq=`date +%sN`-`sha256sum "$7"`
# uniq=`echo $uniq | sha256sum - | cut -f1 -d' '`
uniq=`sha256sum "$7" | cut -f1 -d' '`
- code=`cat /root/submissions/code`
- comp="error"
- if [ -r /root/submissions/comp ]; then
- comp=`cat /root/submissions/comp`
+ code=`cat /root/submissions/code 2>/dev/null`
+ if [ "$code" == "" ]; then
+ echo "ERROR: this computer is not configured to submit runs -- code missing"
+ exit 1
+ fi
+ comp=`cat /root/submissions/comp 2>/dev/null`
+ if [ "$comp" == "" ]; then
+ echo "ERROR: this computer is not configured to submit runs -- comp missing"
+ exit 1
fi
res=`echo -n "${code}${uniq}${comp}${dateerr}" | sha256sum - | cut -f1 -d' '`
echo "uniq=$uniq" >> "$nom"
diff --git a/tools/boca-submit-run-root-wrapper.c b/tools/boca-submit-run-root-wrapper.c
index 6e8ca66..94ba282 100644
--- a/tools/boca-submit-run-root-wrapper.c
+++ b/tools/boca-submit-run-root-wrapper.c
@@ -2,10 +2,26 @@
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
-char str[10000];
+char str[3000];
+char *clean(char *s) {
+ int i;
+ if(s[0]=='"') s++;
+ for(i=0; i < 299 && s[i]; ++i) {
+ if(s[i] == '"' ||
+ s[i] == '\\' ||
+ s[i] == '$' ||
+ s[i] == '`') {
+ if(s[i+1] == 0) s[i]=0;
+ else s[i]='_';
+ }
+ }
+ if(i >= 299) s[i]=0;
+ return s;
+}
int main(int argc, char **argv) {
if(argc != 8) return 1;
- sprintf(str,"/usr/bin/boca-submit-run-root %1000s %1000s %1000s %1000s %1000s %1000s %1000s",argv[1],argv[2],argv[3],argv[4],argv[5],argv[6],argv[7]);
+ sprintf(str,"/usr/bin/boca-submit-run-root \"%300s\" \"%300s\" \"%300s\" \"%300s\" \"%300s\" \"%300s\" \"%300s\"",
+ clean(argv[1]),clean(argv[2]),clean(argv[3]),clean(argv[4]),clean(argv[5]),clean(argv[6]),clean(argv[7]));
setuid(0);
system(str);
return 0;
diff --git a/tools/control-machines.sh b/tools/control-machines.sh
new file mode 100644
index 0000000..2b52e33
--- /dev/null
+++ b/tools/control-machines.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+if [ "$1" == "users" ]; then
+ for i in `ls runs-submitted*.txt`; do
+ a=""
+ cat $i | while read lin; do
+ if [ "$a" == "" ]; then
+ a=$lin
+ else
+ a1=`echo $a | cut -d'-' -f1`
+ l1=`echo $lin | cut -d'-' -f1`
+ if [ "$a1" != "$l1" ]; then
+ echo "$i $a1 $l1"
+ a=$lin
+ fi
+ fi
+ done
+ done
+else
+ if [ "$1" == "gencodes" ]; then
+ while read lin; do
+ #First Surname:email@gmail.com:Sao Paulo:SP:spsp:46:48479:146:qrw3
+ pas="`echo -n $lin | cut -d':' -f9`"
+ pas="`echo -n $pas | sha256sum - | cut -f1 -d' '`"
+ astring="xyzxyzxyz"
+ pass="`echo -n "${astring}$pass" | sha256sum - | cut -f1 -d' '`"
+ echo "`echo -n $lin | cut -d':' -f5` $pas $pass 0"
+ done
+ else
+ for arquivo in runs-submitted-1-1-*txt; do
+ TIME="$(cut -d'-' -f5 <<< "$arquivo")"
+ printf "$TIME "
+ grep '\-2[0-1][0-9]\-' $arquivo|cut -d'-' -f1 |sort -u|wc -l
+ done
+ fi
+fi
+
+
+###example of generating score.sep
+###First Surname:email@gmail.com:Sao Paulo:SP:spsp:46:48479:146:qrw3
+# #!/bin/bash
+# while read lin; do
+# prefix="`echo -n $lin | cut -d':' -f8`"
+# prenam="`echo -n $lin | cut -d':' -f5`"
+# echo "$prenam ${prefix}000/${prefix}399/1 # /^team${prenam}/ /^staff${prenam}/ /^score${prenam}/"
+# echo "${prenam}ccl ${prefix}000/${prefix}500/1 # /^staff${prenam}/ /^teamccl${prenam}/ /^judge/"
+# done
+# #!/bin/bash
+# i=1
+# j=1
+# k=1
+# while [ $i -le 49 ]; do
+# let "jj = $j + 1"
+# let "ii = $i - 1"
+# let "ff = $ii * 100 + 50000"
+# let "gg = $i * 100 + 49999"
+# echo "sede$i $ff/$gg/1 # /^team${j}\$/ /^team${jj}\$/ /^staff${i}\$/"
+# let "i = $i + 1"
+# let "j = $j + 2"
+# done