浏览代码

pleroma blocking script

Bob Mottram 7 年前
父节点
当前提交
ab2cba8075
共有 1 个文件被更改,包括 29 次插入0 次删除
  1. 29
    0
      src/freedombone-app-pleroma

+ 29
- 0
src/freedombone-app-pleroma 查看文件

@@ -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