|
@@ -59,6 +59,7 @@ PLEROMA_TITLE='Pleroma Server'
|
59
|
59
|
# Number of months after which posts expire
|
60
|
60
|
PLEROMA_EXPIRE_MONTHS=3
|
61
|
61
|
pleroma_expire_posts_script=/usr/bin/pleroma-expire-posts
|
|
62
|
+blocking_script_file=/usr/bin/pleroma-blocking
|
62
|
63
|
|
63
|
64
|
pleroma_variables=(ONION_ONLY
|
64
|
65
|
PLEROMA_DOMAIN_NAME
|
|
@@ -71,6 +72,26 @@ pleroma_variables=(ONION_ONLY
|
71
|
72
|
MY_EMAIL_ADDRESS
|
72
|
73
|
MY_USERNAME)
|
73
|
74
|
|
|
75
|
+function create_pleroma_blocklist {
|
|
76
|
+ echo '#!/bin/bash' > $blocking_script_file
|
|
77
|
+ echo "if [ ! -f ${PROJECT_NAME}-firewall-domains.cfg ]; then" >> $blocking_script_file
|
|
78
|
+ echo ' exit 0' >> $blocking_script_file
|
|
79
|
+ echo 'fi' >> $blocking_script_file
|
|
80
|
+ echo 'cd /etc/postgresql' >> $blocking_script_file
|
|
81
|
+ echo 'while read blocked; do' >> $blocking_script_file
|
|
82
|
+ echo ' if [[ "$blocked" == *"."* || "$blocked" == *"@"* ]]; then' >> $blocking_script_file
|
|
83
|
+ echo ' if [ ${#blocked} -gt 4 ]; then' >> $blocking_script_file
|
|
84
|
+ echo " sudo -u postgres psql -d pleroma -c \"DELETE FROM objects WHERE data->>'content' ilike '%\${blocked}%' or data->>'actor' ilike '%\${blocked}%'\"" >> $blocking_script_file
|
|
85
|
+ echo ' fi' >> $blocking_script_file
|
|
86
|
+ echo ' fi' >> $blocking_script_file
|
|
87
|
+ echo "done <${PROJECT_NAME}-firewall-domains.cfg" >> $blocking_script_file
|
|
88
|
+ chmod +x $blocking_script_file
|
|
89
|
+
|
|
90
|
+ if ! grep -q "$blocking_script_file" /etc/crontab; then
|
|
91
|
+ echo "#*/1 * * * * root $blocking_script_file > /dev/null" >> /etc/crontab
|
|
92
|
+ fi
|
|
93
|
+}
|
|
94
|
+
|
74
|
95
|
function expire_pleroma_posts {
|
75
|
96
|
domain_name=$1
|
76
|
97
|
expire_months=$3
|
|
@@ -433,6 +454,7 @@ function pleroma_set_expire_months {
|
433
|
454
|
write_config_param "PLEROMA_EXPIRE_MONTHS" "$PLEROMA_EXPIRE_MONTHS"
|
434
|
455
|
|
435
|
456
|
expire_pleroma_posts $PLEROMA_DOMAIN_NAME $PLEROMA_EXPIRE_MONTHS
|
|
457
|
+ create_pleroma_blocklist
|
436
|
458
|
|
437
|
459
|
dialog --title $"Set Pleroma post expiry period" \
|
438
|
460
|
--msgbox $"Expiry period set to $PLEROMA_EXPIRE_MONTHS months" 6 60
|
|
@@ -592,6 +614,9 @@ function upgrade_pleroma {
|
592
|
614
|
if [ ! -f $pleroma_expire_posts_script ]; then
|
593
|
615
|
expire_pleroma_posts $PLEROMA_DOMAIN_NAME $PLEROMA_EXPIRE_MONTHS
|
594
|
616
|
fi
|
|
617
|
+ if [ ! -f $blocking_script_file ]; then
|
|
618
|
+ create_pleroma_blocklist
|
|
619
|
+ fi
|
595
|
620
|
|
596
|
621
|
CURR_PLEROMA_COMMIT=$(get_completion_param "pleroma commit")
|
597
|
622
|
if [[ "$CURR_PLEROMA_COMMIT" == "$PLEROMA_COMMIT" ]]; then
|
|
@@ -606,6 +631,7 @@ function upgrade_pleroma {
|
606
|
631
|
pleroma_recompile
|
607
|
632
|
|
608
|
633
|
expire_pleroma_posts $PLEROMA_DOMAIN_NAME $PLEROMA_EXPIRE_MONTHS
|
|
634
|
+ create_pleroma_blocklist
|
609
|
635
|
}
|
610
|
636
|
|
611
|
637
|
function backup_local_pleroma {
|
|
@@ -752,6 +778,7 @@ function remove_pleroma {
|
752
|
778
|
remove_completion_param install_pleroma
|
753
|
779
|
sed -i '/pleroma domain/d' $COMPLETION_FILE
|
754
|
780
|
sed -i '/pleroma commit/d' $COMPLETION_FILE
|
|
781
|
+ sed -i "/$blocking_script_file/d" /etc/crontab
|
755
|
782
|
|
756
|
783
|
function_check remove_ddns_domain
|
757
|
784
|
remove_ddns_domain $PLEROMA_DOMAIN_NAME
|
|
@@ -964,6 +991,8 @@ function install_pleroma {
|
964
|
991
|
fi
|
965
|
992
|
fi
|
966
|
993
|
|
|
994
|
+ create_pleroma_blocklist
|
|
995
|
+
|
967
|
996
|
# daemon
|
968
|
997
|
echo '[Unit]' > /etc/systemd/system/pleroma.service
|
969
|
998
|
echo 'Description=Pleroma social network' >> /etc/systemd/system/pleroma.service
|