Newer
Older
# _____ _ _
# | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___
# | __| _| -_| -_| . | . | | . | . | | -_|
# |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___|
# Copyright (C) 2017-2018 Bob Mottram <bob@freedombone.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
IN_DEFAULT_INSTALL=0
SHOW_ON_ABOUT=1
PLEROMA_DOMAIN_NAME=
PLEROMA_CODE=
PLEROMA_PORT=4000
PLEROMA_ONION_PORT=8011
PLEROMA_REPO="https://git.pleroma.social/pleroma/pleroma.git"
PLEROMA_COMMIT='fef8daa454ab04ac2394e02efcc2b48c1fbad91c'
pleroma_secret=$PLEROMA_DIR/config/dev.secret.exs
PLEROMA_BACKGROUND_IMAGE_URL=
PLEROMA_TITLE='Pleroma Server'
# Number of months after which posts expire
PLEROMA_EXPIRE_MONTHS=3
pleroma_expire_posts_script=/usr/bin/pleroma-expire-posts
pleroma_variables=(ONION_ONLY
PLEROMA_DOMAIN_NAME
PLEROMA_CODE
PLEROMA_WELCOME_MESSAGE
PLEROMA_BACKGROUND_IMAGE_URL
DDNS_PROVIDER
PLEROMA_TITLE
PLEROMA_EXPIRE_MONTHS
MY_EMAIL_ADDRESS
MY_USERNAME)
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
{ echo '#!/bin/bash';
echo "if [ ! -f /root/${PROJECT_NAME}-firewall-domains.cfg ]; then";
echo ' exit 0';
echo 'fi';
echo 'if [ -f /tmp/pleroma-blocking.lock ]; then';
echo ' cd /tmp';
echo ' find ./pleroma*.lock -type f -mmin +5 -exec rm {} \;';
echo ' if [ -f /tmp/pleroma-blocking.lock ]; then';
echo ' exit 0';
echo ' fi';
echo 'fi';
echo 'touch /tmp/pleroma-blocking.lock';
echo 'objects_query="DELETE FROM objects WHERE"';
echo 'objects_updated=';
echo 'users_query="DELETE FROM users WHERE"';
echo 'websub_server_subscriptions_query="DELETE FROM websub_server_subscriptions WHERE"';
echo 'websub_server_subscriptions_updated=';
echo 'while read blocked; do';
echo " if [[ \"\$blocked\" == *\".\"* || \"\$blocked\" == *\"@\"* ]]; then";
echo " if [ \${#blocked} -gt 4 ]; then";
echo " if [ \$objects_updated ]; then";
echo " objects_query=\"\${objects_query} or\"";
echo " users_query=\"\${users_query} or\"";
echo ' fi';
echo " objects_query=\"\${objects_query} data->>'content' ilike '%\${blocked}%' or data->>'actor' ilike '%\${blocked}%' or data->>'to' ilike '%\${blocked}%' or data->>'id' ilike '%\${blocked}%' or data->>'external_url' ilike '%\${blocked}%'\"";
echo " users_query=\"\${users_query} nickname ilike '%\${blocked}%'\"";
echo ' objects_updated=1';
echo " if [[ \"\$blocked\" != *\"@\"* ]]; then";
echo " if ! grep -q \"127.0.0.1 \$blocked\" /etc/hosts; then";
echo " echo \"127.0.0.1 \$blocked\" >> /etc/hosts";
echo ' fi';
echo " if [ \$websub_server_subscriptions_updated ]; then";
echo " websub_server_subscriptions_query=\"\${websub_server_subscriptions_query} or\"";
echo ' fi';
echo " websub_server_subscriptions_query=\"\${websub_server_subscriptions_query} callback like '%\${blocked}%'\"";
echo ' websub_server_subscriptions_updated=1';
echo ' fi';
echo ' fi';
echo ' fi';
echo 'done </root/freedombone-firewall-domains.cfg';
echo '';
echo 'cd /etc/postgresql';
echo "if [ \$objects_updated ]; then";
echo " sudo -u postgres psql -d pleroma -c \"\$objects_query\"";
echo " sudo -u postgres psql -d pleroma -c \"\$users_query\"";
echo 'fi';
echo "if [ \$websub_server_subscriptions_updated ]; then";
echo " sudo -u postgres psql -d pleroma -c \"\$websub_server_subscriptions_query\"";
echo 'fi';
echo 'rm /tmp/pleroma-blocking.lock'; } > $blocking_script_file
chmod +x $blocking_script_file
if ! grep -q "$blocking_script_file" /etc/crontab; then
function expire_pleroma_posts {
domain_name=$1
expire_months=$3
# files are what take up most of the backup time, so don't keep them for very long
expire_days_files=7
# To prevent the database size from growing endlessly this script expires posts
# after a number of months
if [ ! -d /etc/pleroma ]; then
return
fi
{ echo '#!/bin/bash';
echo "plmonths=\"$PLEROMA_EXPIRE_MONTHS\"";
echo "if [ \${#plmonths} -eq 0 ]; then";
echo ' exit 1';
echo 'fi';
echo "if [[ \"\$plmonths\" == \"0\" ]]; then";
echo ' exit 2';
echo 'fi';
echo "oldate=\$(date +%Y-%m-%d --date=\"\$plmonths months ago\")";
echo 'cd /etc/postgresql';
echo "sudo -u postgres psql -d pleroma -c \"DELETE FROM notifications WHERE inserted_at <= '\$oldate 01:01:01'\"";
echo "sudo -u postgres psql -d pleroma -c \"DELETE FROM objects WHERE inserted_at <= '\$oldate 01:01:01'\""; } > $pleroma_expire_posts_script
chmod +x $pleroma_expire_posts_script
pleroma_expire_script=/etc/cron.daily/pleroma-expire
expire_days_files_threshold=$((expire_days_files - 1))
{ echo '#!/bin/bash';
echo 'cd /etc/postgresql';
echo 'if [ -d /etc/pleroma/tempfiles ]; then';
echo ' rm -rf /etc/pleroma/tempfiles';
echo 'fi';
echo '';
echo '# make directory to temporarily store local avatars';
echo 'mkdir /etc/pleroma/tempfiles';
echo '';
echo '# get the local avatar files';
echo "avatars=\$(sudo -u postgres psql -d pleroma -c \"select avatar->>'url' from users where avatar->>'url' like '%${domain_name}%'\")";
echo '';
echo '# copy the avatar files to a temporary directory';
echo "arr=( \$avatars )";
echo " if [[ \"\$i\" == *'/media/'* ]]; then";
echo " imagefile=/etc/pleroma/uploads/\$(echo \$i | sed 's|\"||g' | sed 's|,||g' | awk -F '/media/' '{print \$2}');";
echo " if [ -f \$imagefile ]; then";
echo " imagedir=/etc/pleroma/uploads/\$(echo \$i | sed 's|\"||g' | sed 's|,||g' | awk -F '/media/' '{print \$2}' | awk -F '/' '{print \$1}')";
echo " nowdate=\$(date +%s)";
echo " sinceepoch=\$(date +%s -r \$imagefile)";
echo " daysold=\$(((\$nowdate - \$sinceepoch) / 86400))";
echo " if [ \$daysold -ge ${expire_days_files_threshold} ]; then";
echo " if [ ! -d \$imagedir ]; then";
echo " mkdir \$imagedir";
echo ' fi';
echo " cp -rp \$imagefile \$imagedir";
echo ' fi';
echo ' fi';
echo ' fi';
echo 'done';
echo '';
echo '# get the local banner files';
echo "banners=\$(sudo -u postgres psql -d pleroma -c \"select avatar->>'banner' from users where avatar->>'url' like '%${domain_name}%'\")";
echo '';
echo '# copy the banner files to a temporary directory';
echo "arr=( \$banners )";
echo " if [[ \"\$i\" == *'/media/'* ]]; then";
echo " imagefile=/etc/pleroma/uploads/\$(echo \$i | sed 's|\"||g' | sed 's|,||g' | awk -F '/media/' '{print \$2}');";
echo " if [ -f \$imagefile ]; then";
echo " imagedir=/etc/pleroma/uploads/\$(echo \$i | sed 's|\"||g' | sed 's|,||g' | awk -F '/media/' '{print \$2}' | awk -F '/' '{print \$1}')";
Loading
Loading full blame...