add script to handle spam accounts
This commit is contained in:
parent
1deaa51956
commit
cd33f21a32
33
spam/generate_list_from_ip.sh
Executable file
33
spam/generate_list_from_ip.sh
Executable file
@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z $1 ]; then
|
||||
echo "Missing IP argument";
|
||||
echo "Usage : ./$0 IP"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
IP=$1
|
||||
|
||||
echo "Selecting accounts from IP $IP..."
|
||||
psql -A -t -P pager=off mastodon-production -c "select account_id from users where host(last_sign_in_ip) like '$IP%';" > account_id_from_ip.txt
|
||||
|
||||
echo "Filtering accounts that are suspended..."
|
||||
for id in `cat account_id_from_ip.txt`; do psql -A -t -P pager=off mastodon-production -c "select id from accounts where id='$id' and suspended_at is NULL;"; done > filtered_account_id_from_ip.txt
|
||||
|
||||
echo "Generating URL list..."
|
||||
for id in `cat filtered_account_id_from_ip.txt`; do echo "https://pouet.chapril.org/admin/accounts/$id"; done > account_url_from_ip.txt
|
||||
|
||||
echo "Generating username list..."
|
||||
for id in `cat filtered_account_id_from_ip.txt`; do psql -A -t -P pager=off mastodon-production -c "select username from accounts where id='$id';"; done > account_username_from_ip.txt
|
||||
|
||||
echo "Generating username string...";
|
||||
for username in `cat account_username_from_ip.txt`; do echo -n "$username, "; done > account_username_from_ip_list.txt
|
||||
|
||||
|
||||
echo -e "All done\n\n#################\n"
|
||||
echo "accounts id in account_id_from_ip.txt"
|
||||
echo "filtered accounts id in filtered_account_id_from_ip.txt"
|
||||
echo "accounts url in account_url_from_ip.txt"
|
||||
echo "username list in account_username_from_ip.txt"
|
||||
echo "username string in account_username_from_ip_list.txt"
|
51
spam/notes
Normal file
51
spam/notes
Normal file
@ -0,0 +1,51 @@
|
||||
== Table accounts (110k lines)
|
||||
username
|
||||
locked
|
||||
id
|
||||
suspended_at
|
||||
display_name
|
||||
domain
|
||||
|
||||
== Table users (2k)
|
||||
email
|
||||
account_id
|
||||
id
|
||||
disabled
|
||||
last_sign_in_ip
|
||||
sign_up_ip
|
||||
approved
|
||||
|
||||
|
||||
== Divers
|
||||
|
||||
sql="\
|
||||
SELECT count(*) AS ACCOUNTS,u.last_sign_in_ip AS IP from users as u INNER JOIN accounts as a ON a.id=u.account_id where a.suspended_at is not null group by u.last_sign_in_ip order by ACCOUNTS desc limit 10;
|
||||
"
|
||||
sql="\
|
||||
SELECT (select count(*) from users uu where uu.last_sign_in_ip=u.last_sign_in_ip),distinct u.last_sign_in_ip from users u where u.last_sign_in_ip is not null;
|
||||
"
|
||||
sql="\
|
||||
SELECT count(*),uu.last_sign_in_ip AS ACCOUNTS from users uu where uu.last_sign_in_ip in (SELECT u.last_sign_in_ip from users u where u.last_sign_in_ip is not null) group by uu.last_sign_in_ip order by ACCOUNTS desc;
|
||||
"
|
||||
sql="\
|
||||
SELECT count(*) AS ACCOUNTS,(select count(*) from users uu where uu.last_sign),last_sign_in_ip as IP from users group by last_sign_in_ip order by ACCOUNTS desc;
|
||||
"
|
||||
|
||||
sql="
|
||||
select u.last_sign_in_ip,a.suspended_at,u.disabled from users u inner join accounts a on a.id=u.account_id where a.domain is null
|
||||
"
|
||||
|
||||
sql="
|
||||
select
|
||||
u.last_sign_in_ip,
|
||||
a.suspended_at,
|
||||
(case when a.suspended_at is null then 1 else 0 end) as NOT_SUSPENDED,
|
||||
u.disabled,
|
||||
(case when u.disabled is false then 1 else 0 end) as NOT_DISABLED
|
||||
from users u
|
||||
inner join accounts a on
|
||||
a.id=u.account_id
|
||||
where
|
||||
u.last_sign_in_ip is not null
|
||||
|
||||
"
|
40
spam/statsip
Executable file
40
spam/statsip
Executable file
@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
|
||||
help()
|
||||
{
|
||||
echo "Usage: statsip [ result_line_number | -h ]"
|
||||
}
|
||||
|
||||
|
||||
if [ $# == 1 ]; then
|
||||
if [ "$1" == "-h" ]; then
|
||||
help
|
||||
exit 0
|
||||
else
|
||||
limit="limit $1"
|
||||
fi
|
||||
else
|
||||
limit=""
|
||||
fi
|
||||
|
||||
|
||||
sql="
|
||||
select
|
||||
count(*) AS ACCOUNTS,
|
||||
sum(case when a.suspended_at is null then 1 else 0 end) as NOT_SUSPENDED,
|
||||
sum(case when u.approved=false then 1 else 0 end) as WAITING_MODERATION,
|
||||
case when family(u.last_sign_in_ip)=4 then host(u.last_sign_in_ip) else substring(host(u.last_sign_in_ip), '(([0-9a-f]{0,4}:){1,4})') end as IP
|
||||
from users u
|
||||
inner join accounts a on
|
||||
a.id=u.account_id
|
||||
where
|
||||
u.last_sign_in_ip is not null
|
||||
group by IP
|
||||
order by ACCOUNTS desc
|
||||
$limit
|
||||
"
|
||||
|
||||
|
||||
su - mastodon -c "psql -P pager=off mastodon-production -c \"$sql\" " | grep -v '[[:space:]]\+0[[:space:]]*|[[:space:]]*0'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user