Update cleanup_friendica.sh

removed bashisms and actually tested the process with protecteduser
This script works so far (for me)
This commit is contained in:
ingoj 2020-04-09 21:48:20 +02:00
parent 1d0ce4b9e7
commit 7aa79992f2
2 changed files with 111 additions and 8 deletions

104
cleanup_friendica Normal file
View File

@ -0,0 +1,104 @@
#!/bin/sh
# v0.3.1 - "try to force Github to accept this change"-release
set -f
# set the following variables accordingly to your site
# the admin will get a notification mail in BCC
# the following lines should be moved to a config file, eg. /usr/local/etc/cleanup_friendica.conf
#friendicapath="/var/www/net/nerdica.net/friendica"
#site="SITE"
#siteurl="https://domain.tld/"
#siteadmin="admin@domain.tld"
#sitefrom="no-reply@domain.tld"
#protectedusers="admin1 admin2 admin3"
. /usr/local/etc/cleanup_friendica.conf
cd ${friendicapath} || exit 0
# delete users that never logged in and never posted content
# filtering for "weeks" will result in accounts with 2 weeks old accounts,
# filter for just "week" will do the same after 1 week.
# same should apply to "month" and "months", but untested.
for username in $( ${friendicapath}/bin/console user list active -c 10000 | grep 'never.*never' | grep weeks | awk '{print $2}') ; do
# if username is a protected user do nothing, else delete user
if [ -n "${protectedusers}" ]; then
pcheck=0
for s in $(echo ${protectedusers}) ; do
if [ "${s}" = "${username}" ]; then
pcheck=1
fi
done
if [ ${pcheck} -eq 0 ]; then
#echo "Delete user ${username}"
${friendicapath}/bin/console user delete "${username}" -q
fi
fi
done
# find & notify users that didn't logged in >6 months and send mail to log in again
for u in $( ${friendicapath}/bin/console user list active -c 10000 | grep -v '.*---.*' | sed 's/|/;/g' | tr -s "\ " | sed 's/^;\ //g' | sed 's/\ ;\ /;/g' | sed 's/\ /_/g' | tail -n +2 ); do
username=$(echo "${u}" | awk -F ";" '{print $1}')
dispname=$(echo "${u}" | awk -F ";" '{print $2}')
profileurl=$(echo "${u}"| awk -F ";" '{print $3}')
usermail=$(echo "${u}" | awk -F ";" '{print $4}')
registered=$(echo "${u}" | awk -F ";" '{print $5}')
lastlogin=$(echo "${u}" | awk -F ";" '{print $6}')
lastpost=$(echo "${u}" | awk -F ";" '{print $7}')
#echo "Userinfo: ${username},${dispname},${profileurl},${usermail},${registered},${lastlogin},${lastpost}"
res=$(echo "${lastlogin}" | grep '[6-9]_months.*')
if [ -n "${res}" ]; then
num_months=$(echo "${res}" | awk -F "_" '{ print $1}')
#echo "months: ${num_months}"
if [ ${num_months} -ge 7 ]; then
# delete account when last login is older than 7 months and send mail about deletion
# you should copy & paste the text from 6 months for the first runs of this script
# and later change the text to a notification that the account has been deleted.
( cat <<EOF
Dear ${dispname},
you have registered on ${siteurl} ${registered} and last time you logged in was ${lastlogin}.
Your latest post - if any - was ${lastpost}.
Since you haven't reacted to the previous mails and didn't login again, your account including all your data has now been deleted.
Sincerely,
your ${site} admins
EOF
) | sed 's/_/\ /g' | /usr/bin/mail -s "Your account ${username} on ${site} has been deleted!" -r "${sitefrom}" -b "$siteadmin" -- "${usermail}"
# if username is a protected user do nothing, else delete user
if [ -n "${protectedusers}" ]; then
pcheck=0
for s in $(echo ${protectedusers}) ; do
if [ "${s}" = "${username}" ]; then
pcheck=1
fi
done
if [ ${pcheck} -eq 0 ]; then
echo "Delete user ${username}"
${friendicapath}/bin/console user delete "${username}" -q
fi
fi
elif [ ${num_months} -eq 6 ]; then
# mail the user and ask to re-login
( cat <<EOF
Dear ${dispname},
you have registered on ${siteurl} ${registered} and last time you logged in was ${lastlogin}.
Your latest post - if any - was ${lastpost}.
If you want to continue to keep your account on Nerdica then please log in at least every 6 months to keep your account alive. Otherwise we assume that you don't want to use it anymore and will cancel your account 7 months after your last login.
You can access your profile at ${profileurl} or you can cancel your account on your own when logged in at ${siteurl}/removeme - however we would like to see you become an active user again and contribute to the Fediverse, but of course it's up to you.
Sincerely,
your ${site} admins
EOF
) | sed 's/_/\ /g' | /usr/bin/mail -s "The Fediverse misses you, ${username}!" -r "${sitefrom}" -b "$siteadmin" -- "${usermail}"
fi
fi
done

View File

@ -1,5 +1,6 @@
#!/bin/sh
# v0.3.1 - "try to force Github to accept this change"-release
set -f
# set the following variables accordingly to your site
# the admin will get a notification mail in BCC
@ -58,18 +59,16 @@ for u in $( ${friendicapath}/bin/console user list active -c 10000 | grep -v '.*
( cat <<EOF
Dear ${dispname},
you have registered on ${siteurl} ${registered} and haven't logged in again ${lastlogin}.
you have registered on ${siteurl} ${registered} and last time you logged in was ${lastlogin}.
Your latest post - if any - was ${lastpost}.
If you want to continue to keep your account on Nerdica then please log in at least every 6 months to keep your account alive. Otherwise we assume that you don't want to use it anymore and will cancel your account 7 months after your last login.
You can access your profile at ${profileurl} or you can cancel your account on your own when logged in at ${siteurl}/removeme - however we would like to see you become an active user again and contribute to the Fediverse, but of course it's up to you.
Since you haven't reacted to the previous mails and didn't login again, your account including all your data has now been deleted.
Sincerely,
your ${site} admins
EOF
) | sed 's/_/\ /g' | /usr/bin/mail -s "The Fediverse misses you, ${username}!" -r "${sitefrom}" -b "$siteadmin" -- "${usermail}"
) | sed 's/_/\ /g' | /usr/bin/mail -s "Your account ${username} on ${site} has been deleted!" -r "${sitefrom}" -b "$siteadmin" -- "${usermail}"
# if username is a protected user do nothing, else delete user
if [ -n "${protectedusers}" ]; then
pcheck=0
@ -80,7 +79,7 @@ EOF
done
if [ ${pcheck} -eq 0 ]; then
echo "Delete user ${username}"
#${friendicapath}/bin/console user delete "${username}" -q
${friendicapath}/bin/console user delete "${username}" -q
fi
fi
elif [ ${num_months} -eq 6 ]; then
@ -88,7 +87,7 @@ EOF
( cat <<EOF
Dear ${dispname},
you have registered on ${siteurl} ${registered} and haven't logged in again ${lastlogin}.
you have registered on ${siteurl} ${registered} and last time you logged in was ${lastlogin}.
Your latest post - if any - was ${lastpost}.
If you want to continue to keep your account on Nerdica then please log in at least every 6 months to keep your account alive. Otherwise we assume that you don't want to use it anymore and will cancel your account 7 months after your last login.