#!/bin/bash ############################# ENDPOINT='poster.place' SQL_USER='root' SQL_PASS='sql' SQL_HOST='127.0.0.1' SQL_DATABASE='pleroma' STATS_MESSAGE="" #STATS_MESSAGE="Daily Block Stats for: $ENDPOINT" ############################ cd /root/docker/blockbot blocks(){ #TIME_STAMP="`date +%y-%m-%d` `date +%H`" TIME_STAMP="`TZ=Atlantic/Reykjavik date +%y-%m-%d` `TZ=Atlantic/Reykjavik date +%H:%M`" #TIME_STAMP="`date +%y-%m-%d` `date +%H:%M`" TIME=`echo $TIME_STAMP | sed 's/.$//'` data='' echo "select * from activities where data->>'type' = 'Block';" | PGPASSWORD=$SQL_PASS psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE | grep "$TIME" > /tmp/list readarray -t list < /tmp/list for i in "${list[@]}" do : json=`echo $i | cut -d '{' -f2-3 | cut -d '}' -f1 | sed '1 i\{' | sed '$a } '` blocker="`echo $json | jq -r .actor | cut -d '/' -f5`@`echo $json | jq -r .actor | cut -d '/' -f3`" blocked="@`echo $json | jq -r .object | cut -d '/' -f5`@`echo $json | jq -r .object | cut -d '/' -f3`" profile=`echo $json | jq -r .actor` message="BLOCK ALERT! $blocker blocked $blocked. Profile is available at: $profile" if [ -n "$1" ]; then echo $message else echo $message sleep 30 toot post "$message" -m ./bot.png fi done } scalps(){ users=( $(echo "select nickname from users where ap_id like '%${ENDPOINT}%';" | PGPASSWORD=sql psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE --csv | egrep -vi 'relay|nickname|internal.fetch ') ); echo > /tmp/a.txt for i in "${users[@]}" do : number=`echo "select * from activities where data->>'type' = 'Block';" | PGPASSWORD=$SQL_PASS psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE | grep -i "$ENDPOINT/users/$i" | cut -d '"' -f18 | grep -iv $ENDPOINT | wc -l` if [ $number -gt 10 ]; then if [ "$i" != "a" ]; then #data=$data" @$i: ` echo "select * from activities where data->>'type' = 'Block';" | PGPASSWORD=$SQL_PASS psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE | grep -i "$ENDPOINT/users/$i" | cut -d '"' -f18 | grep -iv $ENDPOINT | wc -l`! " echo "@$i: ` echo "select * from activities where data->>'type' = 'Block';" | PGPASSWORD=$SQL_PASS psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE | grep -i "$ENDPOINT/users/$i" | cut -d '"' -f18 | grep -iv $ENDPOINT | wc -l`! " >> /tmp/a.txt fi fi done data="$STATS_MESSAGE `cat /tmp/a.txt | sort -n -k 2`" if [ -n "$1" ]; then echo $data else echo "Poster.place Block Report $data" | toot post fi } background_daemon(){ echo;echo "BlockBot running in Daemon Mode";echo;echo while true do echo "#######################################" echo "Current Time: `date`" if [[ `date | cut -d ':' -f2 | tail -c2` == *"9"* ]]; then echo "Checking for new blocks.......";echo blocks fi if [[ `date` == *"16:30:"* ]]; then echo "Sending Block Report.......";echo scalps fi blocks print echo "Sleeping for 50......" echo "#######################################"; sleep 50 done } background(){ if [[ `date` == *":00"* ]]; then background_daemon else echo "Waiting for time to be in sync...." sleep 1 background fi } help(){ echo;echo "bot.sh daemon" echo;echo "bot.sh blocks" echo;echo "bot.sh blocks print" echo "bot.sh scalps" echo "bot.sh scalps print" echo "bot.sh help";echo;echo } if [ "$1" = "daemon" ]; then background elif [ "$1" = "blocks" ]; then blocks "$2" elif [ "$1" = "scalps" ]; then scalps "$2" else help fi