mirror of https://github.com/BOINC/boinc.git
100 lines
5.3 KiB
Bash
Executable File
100 lines
5.3 KiB
Bash
Executable File
#! /bin/sh
|
|
cd `dirname $0`
|
|
|
|
MOD_EMAIL_ADDRESS=`grep POST_REPORT_EMAILS ../html/project/project.inc | awk -F\" '{print $(NF-1);}'`
|
|
|
|
|
|
while true ; do
|
|
|
|
now=`date +%s`
|
|
msgfile=`mktemp -p /tmp setimods.XXXXXX` || exit 1
|
|
sec_from_hour=`expr $now % 3600`
|
|
|
|
dbhost=`grep db_host ../config.xml | tr '[\<\>]' '[ ]' | head -1 | awk '{print $2}'`
|
|
dbuser=`grep db_user ../config.xml | tr '[\<\>]' '[ ]' | head -1 | awk '{print $2}'`
|
|
dbname=`grep db_name ../config.xml | tr '[\<\>]' '[ ]' | head -1 | awk '{print $2}'`
|
|
MYSQL="mysql -D $dbname -h $dbhost -u $dbuser -N -B"
|
|
|
|
nmods=`$MYSQL --execute="select count(userid) from forum_preferences where special_user like '1%'"`
|
|
major=`expr $nmods / 2`
|
|
|
|
# send a report on ongoing elections.
|
|
if test $sec_from_hour -lt 300 ; then
|
|
voteids=`$MYSQL --execute="select id from banishment_vote where end_time>"$now`
|
|
if test -n "$voteids" ; then
|
|
echo Ongoing votes >> $msgfile
|
|
echo >> $msgfile
|
|
for voteid in $voteids; do
|
|
msgfile2=`mktemp -p /tmp setimods.XXXXXX` || exit 1
|
|
echo >> $msgfile
|
|
echo Vote: $voteid >> $msgfile
|
|
ayes=`$MYSQL --execute="select sum(yes) from banishment_votes where voteid=$voteid"`
|
|
nays=`$MYSQL --execute="select count(id)-sum(yes) from banishment_votes where voteid=$voteid"`
|
|
userid=`$MYSQL --execute="select userid from banishment_vote where id=$voteid"`
|
|
EMAIL=`$MYSQL --execute="select email_addr from user where id=$userid"`
|
|
$MYSQL --execute="select name,' - ',userid from user,banishment_vote where banishment_vote.id=$voteid and user.id=userid" >> $msgfile2
|
|
$MYSQL --execute="select 'Ayes: ',sum(yes),' Nays: ',count(id)-sum(yes) from banishment_votes where voteid=$voteid" >> $msgfile2
|
|
$MYSQL --execute="select name,' - ',userid from user,banishment_vote where banishment_vote.id=$voteid and user.id=userid" >> $msgfile
|
|
$MYSQL --execute="select 'Ayes: ',sum(yes),' Nays: ',count(id)-sum(yes) from banishment_votes where voteid=$voteid" >> $msgfile
|
|
if test $nays -ge $major ; then
|
|
echo Vote failed. >> $msgfile
|
|
mail -s "Vote failed. You have not been banished" $EMAIL < $msgfile2
|
|
$MYSQL --execute="update forum_preferences set banished_until=0 where userid=$userid"
|
|
$MYSQL --execute="update banishment_vote set end_time=start_time where id=$voteid"
|
|
elif `test $ayes -gt $major` ; then
|
|
echo Vote succeeded. >> $msgfile
|
|
mail -s "Vote succeeded. You have been banished" $EMAIL < $msgfile2
|
|
start_time=`$MYSQL --execute="select start_time from banishment_vote where id=$voteid"`
|
|
$MYSQL --execute="update forum_preferences set banished_until=$start_time +1209600 where userid= $userid"
|
|
$MYSQL --execute="update banishment_vote set end_time=start_time where id=$voteid"
|
|
else
|
|
$MYSQL --execute="select 'Ends in ',(end_time-$now)/3600,' hours' from banishment_vote where id=$voteid" >> $msgfile
|
|
fi
|
|
/bin/rm $msgfile2
|
|
done
|
|
mail -s "Ongoing Votes" $MOD_EMAIL_ADDRESS < $msgfile
|
|
fi
|
|
fi
|
|
/bin/rm $msgfile
|
|
|
|
# handle recently ended elections
|
|
msgfile=`mktemp -p /tmp setimods.XXXXXX` || exit 1
|
|
voteids=`$MYSQL --execute="select id from banishment_vote where end_time<"$now" and end_time+300>"$now`
|
|
if test -n "$voteids" ; then
|
|
echo Finished votes >> $msgfile
|
|
echo >> $msgfile
|
|
for voteid in $voteids; do
|
|
msgfile2=`mktemp -p /tmp setimods.XXXXXX` || exit 1
|
|
echo >> $msgfile
|
|
echo Vote: $voteid >> $msgfile
|
|
ayes=`$MYSQL --execute="select sum(yes) from banishment_votes where voteid=$voteid"`
|
|
nays=`$MYSQL --execute="select count(id)-sum(yes) from banishment_votes where voteid=$voteid"`
|
|
userid=`$MYSQL --execute="select userid from banishment_vote where id=$voteid"`
|
|
EMAIL=`$MYSQL --execute="select email_addr from user where id=$userid"`
|
|
$MYSQL --execute="select name,' - ',userid from user,banishment_vote where banishment_vote.id=$voteid and user.id=userid" >> $msgfile2
|
|
$MYSQL --execute="select 'Ayes: ',sum(yes),' Nays: ',count(id)-sum(yes) from banishment_votes where voteid=$voteid" >> $msgfile2
|
|
$MYSQL --execute="select name,' - ',userid from user,banishment_vote where banishment_vote.id=$voteid and user.id=userid" >> $msgfile
|
|
$MYSQL --execute="select 'Ayes: ',sum(yes),' Nays: ',count(id)-sum(yes) from banishment_votes where voteid=$voteid" >> $msgfile
|
|
nays=`expr $nays + 1`
|
|
if test $ayes -gt $nays ; then
|
|
echo Vote succeeded. >> $msgfile
|
|
mail -s "Vote succeeded. You have been banished" $EMAIL < $msgfile2
|
|
start_time=`$MYSQL --execute="select start_time from banishment_vote where id=$voteid"`
|
|
$MYSQL --execute="update forum_preferences set banished_until=$start_time +1209600 where userid= $userid"
|
|
$MYSQL --execute="update banishment_vote set end_time=start_time where id=$voteid"
|
|
else
|
|
echo Vote failed. >> $msgfile
|
|
mail -s "Vote failed. You have not been banished" $EMAIL < $msgfile2
|
|
$MYSQL --execute="update forum_preferences set banished_until=0 where userid=$userid"
|
|
$MYSQL --execute="update banishment_vote set end_time=start_time where id=$voteid"
|
|
fi
|
|
/bin/rm $msgfile2
|
|
done
|
|
mail -s "Completed Votes" $MOD_EMAIL_ADDRESS < $msgfile
|
|
fi
|
|
/bin/rm $msgfile
|
|
|
|
sleep 300
|
|
done
|
|
exit 0
|