aboutsummaryrefslogtreecommitdiff
path: root/old/updatescore.sh
diff options
context:
space:
mode:
authorcassio <cassiopc@gmail.com>2013-07-02 05:46:45 +0000
committercassio <cassiopc@gmail.com>2013-07-02 05:46:45 +0000
commitbe2491b093b1f0ca430bede679ecbb670041e483 (patch)
treefe2da63d1811cb93e4352a43a113ace37b9f6017 /old/updatescore.sh
parenta9aa438ea0558eb0044cf1e54a9190ddb41b65e5 (diff)
downloadboca-be2491b093b1f0ca430bede679ecbb670041e483.tar.gz
boca-be2491b093b1f0ca430bede679ecbb670041e483.zip
restructuring of boca's git
Diffstat (limited to 'old/updatescore.sh')
-rwxr-xr-xold/updatescore.sh118
1 files changed, 118 insertions, 0 deletions
diff --git a/old/updatescore.sh b/old/updatescore.sh
new file mode 100755
index 0000000..a9c05b7
--- /dev/null
+++ b/old/updatescore.sh
@@ -0,0 +1,118 @@
+#!/bin/bash
+#//////////////////////////////////////////////////////////////////////////////////////////
+#//BOCA Online Contest Administrator. Copyright (c) 2003- Cassio Polpo de Campos.
+#//It may be distributed under the terms of the Q Public License version 1.0. A copy of the
+#//license can be found with this software or at http://www.opensource.org/licenses/qtpl.php
+#//
+#//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+#//INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+#//PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER
+#//OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
+#//CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+#//PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+#//OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#///////////////////////////////////////////////////////////////////////////////////////////
+# last updated 26/oct/2011 by cassio@ime.usp.br
+for i in id chown chmod md5sum wget tr cut awk tail head grep cat sed sleep; do
+ p=`which $i`
+ if [ -x "$p" ]; then
+ echo -n ""
+ else
+ echo command "$i" not found
+ exit 1
+ fi
+done
+if [ "`id -u`" != "0" ]; then
+ echo "Script must run as root"
+fi
+
+privatedir=/var/www/boca/private
+if [ ! -d $privatedir ]; then
+ echo "Could not find directory $privatedir"
+ exit 1
+fi
+httpbocadir=boca
+tempdir=/tmp
+others=/var/www/boca/private/otherservers
+secs=120
+apacheuser=
+[ -r /etc/icpc/apacheuser ] && apacheuser=`cat /etc/icpc/apacheuser | sed 's/ \t\n//g'`
+[ "$apacheuser" == "" ] && apacheuser=www-data
+id -u $apacheuser > /dev/null 2>/dev/null
+[ $? != 0 ] && echo "User $apacheuser not found -- error to set permissions with chown/chmod"
+
+#hash="shasum -a 256 -"
+hash="md5sum -"
+
+#rm -f $privatedir/score_*.dat
+#rm -f $privatedir/thissitescore.dat
+chown $apacheuser.root $privatedir/score_*.dat
+chown $apacheuser.root $privatedir/thissitescore.dat
+
+BOCASERVER=
+[ -x /etc/icpc/bocaserver.sh ] && . /etc/icpc/bocaserver.sh
+LOCALSERVER=$BOCASERVER
+if [ "$LOCALSERVER" == "" -o "$LOCALSERVER" == "0/0" ]; then
+ LOCALSERVER=http://127.0.0.1/$httpbocadir
+else
+ LOCALSERVER=http://$LOCALSERVER/$httpbocadir
+fi
+
+if [ ! -r $others ]; then
+ echo "External server list in $others not found"
+ exit 1
+fi
+echo "Starting loop to get scores from servers defined in $others"
+while /bin/true; do
+echo "Getting scores..."
+
+qtd=1
+for BOCASERVER in `grep -v "^[ \t]*\#" $others | awk '{ print $1; }'`; do
+if [ "$BOCASERVER" == "" ]; then
+ continue
+fi
+echo $BOCASERVER | grep -q "http"
+[ $? == 0 ] || BOCASERVER=http://$BOCASERVER/boca
+
+user=`grep -v "^[ \t]*\#" $others | head -n$qtd | tail -n1 | awk '{ print $2; }'`
+[ "$user" == "" ] && user=score
+pass=`grep -v "^[ \t]*\#" $others | head -n$qtd | tail -n1 | awk '{ print $2; }'`
+[ "$pass" == "" ] && pass=score
+let "qtd = $qtd + 1"
+
+wget -t3 -T3 "$LOCALSERVER/scoretable.php?clock=1" -O $tempdir/.temp.txt 2>/dev/null >/dev/null
+if [ $? != 0 ]; then
+ echo "Error getting contest clock from $LOCALSERVER"
+else
+ tempo=`cat $tempdir/.temp.txt`
+ echo -n "Asking server $BOCASERVER at time $tempo. Authenticating with user '$user'..."
+ md=`wget -t3 -T3 -S $BOCASERVER/index.php -O /dev/null --save-cookies $tempdir/.cookie.txt --keep-session-cookies 2>&1 | grep PHPSESS | tail -n1 | cut -f2 -d'=' | cut -f1 -d';'`
+ res=`echo -n $pass | $hash | cut -f1 -d' '`
+ res=`echo -n "${res}${md}" | $hash | cut -f1 -d' '`
+ echo -n "sending password..."
+ wget -t3 -T3 "$BOCASERVER/index.php?name=${user}&password=${res}" --load-cookies $tempdir/.cookie.txt --keep-session-cookies --save-cookies $tempdir/.cookie.txt -O $tempdir/.temp.txt 2>/dev/null >/dev/null
+ grep -qi incorrect $tempdir/.temp.txt
+ if [ $? != 0 ]; then
+ fname=`echo $BOCASERVER | tr './:' '_'`
+ echo "downloading scoretable..."
+ wget -t3 -T3 "$BOCASERVER/scoretable.php?remote=$tempo" --load-cookies $tempdir/.cookie.txt --keep-session-cookies --save-cookies $tempdir/.cookie.txt -O $privatedir/score_${fname}.tmp 2>$tempdir/.bocascore.tmp >$tempdir/.bocascore.tmp
+ if [ $? == 0 ]; then
+ chown $apacheuser.root $privatedir/score_$fname.tmp
+ chmod 660 $privatedir/score_$fname.tmp
+ mv $privatedir/score_$fname.tmp $privatedir/score_$fname.dat
+ echo "Score downloaded successfully into $privatedir/score_$fname.dat"
+ else
+ echo "Error getting scoretable from $BOCASERVER: `cat $tempdir/.bocascore.tmp`"
+ fi
+ else
+ echo "Error authenticating to server $BOCASERVER"
+ fi
+fi
+rm -f $tempdir/.temp.txt
+rm -f $tempdir/.cookie.txt
+done
+
+echo -n "Waiting $secs secs..."
+sleep $secs
+echo ""
+done