#!/bin/bash if [ "`id -u`" != "0" ]; then echo "Must be run as root" exit 1 fi if [[ ! -e /etc/bocaip ]] ; then BOCASERVER=50.116.19.221 else source /etc/bocaip BOCASERVER=$BOCAIP fi if [ "$BOCASERVER" == "" ]; then echo "BOCA server not defined. Aborting" exit 1 fi chown root.root /var/log/boca-submit-log.* 2>/dev/null chmod 600 /var/log/boca-submit-log.* 2>/dev/null chown root.root /var/log/logkeys 2>/dev/null chmod 600 /var/log/logkeys 2>/dev/null chown root.root /var/log/bocacron.* 2>/dev/null chmod 600 /var/log/bocacron.* 2>/dev/null for zcount in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do grep -e sudo -e "password:session" /var/log/auth.log | tail -n 500 > /root/.logsession.tmp [ -f /root/.logsession ] || touch /root/.logsession diff /root/.logsession /root/.logsession.tmp > /root/.logsession.diff 2>/dev/null res=$? lshw > /root/.loglshw.tmp 2>/dev/null [ -f /root/.loglshw ] || touch /root/.loglshw diff /root/.loglshw /root/.loglshw.tmp > /root/.loglshw.diff 2>/dev/null reslshw=$? tail -n 500 /var/log/boca-fixes.out > /root/.logupd.tmp 2>/dev/null tail -n 500 /var/log/boca-fixes.err >> /root/.logupd.tmp 2>/dev/null [ -f /root/.logupd ] || touch /root/.logupd diff /root/.logupd /root/.logupd.tmp > /root/.logupd.diff 2>/dev/null resupd=$? journalctl | grep -i mount | tail -n 500 > /root/.logfs.tmp [ -f /root/.logfs ] || touch /root/.logfs diff /root/.logfs /root/.logfs.tmp > /root/.logfs.diff 2>/dev/null resfs=$? grep -i mount /var/log/kern.log | grep -i -e "filesystem" -e "file system" | tail -n 500 > /root/.logkfs.tmp [ -f /root/.logkfs ] || touch /root/.logkfs diff /root/.logkfs /root/.logkfs.tmp > /root/.logkfs.diff 2>/dev/null reskfs=$? if [ "$zcount" == "1" ]; then tail -n 10000 /var/log/logkeys > /root/.logkeys.tmp [ -f /root/.logkeys ] || touch /root/.logkeys rm /root/.logkeys.diff [ -f /root/.uid.txt ] && echo "> UID $(cat /root/.uid.txt)" > /root/.logkeys.diff diff /root/.logkeys /root/.logkeys.tmp >> /root/.logkeys.diff 2>/dev/null reskeys=1 else echo -n "" > /root/.logkeys.diff reskeys=0 fi if [ "$res" != "0" -o "$resfs" != "0" -o "$reslshw" != "0" -o "$resupd" != "0" -o "$reskfs" != "0" -o "$reskeys" != "0" ]; then 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=/root/.temp.`date +%s%N`.txt md=`wget -4 --no-check-certificate -t 2 -T 5 -S https://$BOCASERVER/boca/logexternal.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';'` res=`cat /root/submissions/code 2>/dev/null` res=`echo -n "${res}${md}" | sha256sum - | cut -f1 -d' '` echo -n "comp=`cat /root/submissions/comp`" > $temp echo -n "&code=$res" >> $temp echo -n "&logsession=" >> $temp grep "^>" /root/.logsession.diff | uuencode -m zzzzzzzzzz | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp echo -n "&logfs=" >> $temp grep "^>" /root/.logfs.diff | uuencode -m zzzzzzzzzz | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp echo -n "&loglshw=" >> $temp grep "^>" /root/.loglshw.diff | uuencode -m zzzzzzzzzz | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp echo -n "&logupd=" >> $temp grep "^>" /root/.logupd.diff | uuencode -m zzzzzzzzzz | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp echo -n "&logkfs=" >> $temp grep "^>" /root/.logkfs.diff | uuencode -m zzzzzzzzzz | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp echo -n "&logkeys=" >> $temp grep "^>" /root/.logkeys.diff | uuencode -m zzzzzzzzzz | grep -v "begin-base64.*zzzzzzzzzz" | perl -MURI::Escape -lne 'print uri_escape($_)' >> $temp wget -4 --no-check-certificate -t 2 -T 5 "https://$BOCASERVER/boca/logexternal.php" --load-cookies ${temp}.cookie.txt --keep-session-cookies --save-cookies ${temp}.cookie.txt -O ${temp}.out --post-file=$temp >/dev/null 2>/dev/null rm -f $temp rm -f ${temp}.cookie.txt grep -qi incorrect ${temp}.out res=$? rm ${temp}.out if [ "$res" == "0" ]; then echo "$BOCASERVER: User or password incorrect" exit 3 fi else echo "$BOCASERVER: connection failed" exit 2 fi fi [ -f /root/.logsession.tmp ] && mv /root/.logsession.tmp /root/.logsession [ -f /root/.logkeys.tmp ] && mv /root/.logkeys.tmp /root/.logkeys [ -f /root/.logfs.tmp ] && mv /root/.logfs.tmp /root/.logfs [ -f /root/.logkfs.tmp ] && mv /root/.logkfs.tmp /root/.logkfs [ "$zcount" == "20" ] || sleep 13 done exit 0