Update 'bot.sh'

This commit is contained in:
verita84 2023-05-24 16:43:32 -06:00
parent 40c8f4194d
commit f636ad4136

128
bot.sh
View File

@ -1,113 +1,117 @@
#!/bin/bash #!/bin/bash
############################# #############################
ENDPOINT='pooper.social' ENDPOINT='poster.place'
SQL_USER='root' SQL_USER='root'
SQL_PASS='sql' SQL_PASS='sql'
SQL_HOST='postgresql' SQL_HOST='127.0.0.1'
SQL_DATABASE='pooper' SQL_DATABASE='pleroma'
STATS_MESSAGE="Daily Block Stats for: $ENDPOINT" STATS_MESSAGE=""
#STATS_MESSAGE="Daily Block Stats for: $ENDPOINT"
############################ ############################
cd /opt cd /root/docker/blockbot
blocks() { blocks(){
TIME_STAMP="$(date +%y-%m-%d) $(date +%H:%M)" #TIME_STAMP="`date +%y-%m-%d` `date +%H`"
TIME=$(echo $TIME_STAMP | sed 's/.$//') TIME_STAMP="`TZ=Atlantic/Reykjavik date +%y-%m-%d` `TZ=Atlantic/Reykjavik date +%H:%M`"
data='' #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 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 readarray -t list < /tmp/list
for i in "${list[@]}"; do for i in "${list[@]}"
do
: :
json=$(echo $i | cut -d '{' -f2-3 | cut -d '}' -f1 | sed '1 i\{' | sed '$a } ') 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)" 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)" blocked="@`echo $json | jq -r .object | cut -d '/' -f5`@`echo $json | jq -r .object | cut -d '/' -f3`"
profile=$(echo $json | jq -r .actor) profile=`echo $json | jq -r .actor`
message="BLOCK ALERT! $blocker blocked $blocked. Profile is available at: $profile" message="BLOCK ALERT! $blocker blocked $blocked. Profile is available at: $profile"
if [ -n "$1" ]; then
if [ -n "$1" ]; then
echo $message echo $message
else else
echo $message echo $message
sleep 30
toot post "$message" -m ./bot.png toot post "$message" -m ./bot.png
fi fi
done done
} }
scalps() { 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')) 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 echo > /tmp/a.txt
for i in "${users[@]}"; do 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) 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 1 ]; then if [ $number -gt 10 ];
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 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 fi
done
data="$STATS_MESSAGE $(cat /tmp/a.txt | sort -n -k 2)" data="$STATS_MESSAGE `cat /tmp/a.txt | sort -n -k 2`"
if [ -n "$1" ]; then if [ -n "$1" ]; then
echo $data echo $data
else else
echo $data | toot post "$data" echo "Poster.place Block Report $data" | toot post
fi 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......." background_daemon(){
echo 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 blocks
fi fi
if [[ $(date) == *"16:30:"* ]]; then if [[ `date` == *"16:30:"* ]]; then
echo "Sending Block Report......." echo "Sending Block Report.......";echo
echo
scalps scalps
fi fi
blocks print blocks print
echo "Sleeping for 50......" echo "Sleeping for 50......"
echo "#######################################" echo "#######################################";
sleep 50 sleep 50
done done
} }
background() { background(){
if [[ $(date) == *":00"* ]]; then if [[ `date` == *":00"* ]]; then
background_daemon background_daemon
else else
echo "Waiting for time to be in sync...." echo "Waiting for time to be in sync...."
sleep 1 sleep 1
background background
fi fi
} }
help() { help(){
echo echo;echo "bot.sh daemon"
echo "bot.sh daemon" echo;echo "bot.sh blocks"
echo echo;echo "bot.sh blocks print"
echo "bot.sh blocks"
echo
echo "bot.sh blocks print"
echo "bot.sh scalps" echo "bot.sh scalps"
echo "bot.sh scalps print" echo "bot.sh scalps print"
echo "bot.sh help" echo "bot.sh help";echo;echo
echo }
echo
}
if [ "$1" = "daemon" ]; then if [ "$1" = "daemon" ]; then
background background