Bladeren bron

Blocking individual gnusocial/postactiv nicknames

Bob Mottram 8 jaren geleden
bovenliggende
commit
8a34b22417

+ 4
- 0
src/freedombone-app-gnusocial Bestand weergeven

360
         fi
360
         fi
361
     fi
361
     fi
362
 
362
 
363
+    gnusocial_block_user_script
364
+    gnusocial_block_domain_script gnusocial
365
+
363
     gnusocial_hourly_script gnusocial $GNUSOCIAL_DOMAIN_NAME
366
     gnusocial_hourly_script gnusocial $GNUSOCIAL_DOMAIN_NAME
364
     upgrade_pleroma "$GNUSOCIAL_DOMAIN_NAME" "gnusocial" "$GNUSOCIAL_BACKGROUND_IMAGE_URL" "$GNUSOCIAL_TITLE"
367
     upgrade_pleroma "$GNUSOCIAL_DOMAIN_NAME" "gnusocial" "$GNUSOCIAL_BACKGROUND_IMAGE_URL" "$GNUSOCIAL_TITLE"
365
     install_gnusocial_default_background "gnusocial" "$GNUSOCIAL_DOMAIN_NAME"
368
     install_gnusocial_default_background "gnusocial" "$GNUSOCIAL_DOMAIN_NAME"
767
     ${PROJECT_NAME}-addemail -u $MY_USERNAME -e "noreply@$GNUSOCIAL_DOMAIN_NAME" -g gnusocial --public no
770
     ${PROJECT_NAME}-addemail -u $MY_USERNAME -e "noreply@$GNUSOCIAL_DOMAIN_NAME" -g gnusocial --public no
768
 
771
 
769
     ${PROJECT_NAME}-pass -u $MY_USERNAME -a gnusocial -p "$GNUSOCIAL_ADMIN_PASSWORD"
772
     ${PROJECT_NAME}-pass -u $MY_USERNAME -a gnusocial -p "$GNUSOCIAL_ADMIN_PASSWORD"
773
+    gnusocial_block_user_script
770
     gnusocial_block_domain_script gnusocial
774
     gnusocial_block_domain_script gnusocial
771
 
775
 
772
     set_completion_param "gnusocial domain" "$GNUSOCIAL_DOMAIN_NAME"
776
     set_completion_param "gnusocial domain" "$GNUSOCIAL_DOMAIN_NAME"

+ 4
- 0
src/freedombone-app-postactiv Bestand weergeven

359
     function_check postactiv_running_script
359
     function_check postactiv_running_script
360
     postactiv_running_script
360
     postactiv_running_script
361
 
361
 
362
+    gnusocial_block_user_script
363
+    gnusocial_block_domain_script postactiv
364
+
362
     upgrade_pleroma "$POSTACTIV_DOMAIN_NAME" "postactiv" "$POSTACTIV_BACKGROUND_IMAGE_URL" "$POSTACTIV_TITLE"
365
     upgrade_pleroma "$POSTACTIV_DOMAIN_NAME" "postactiv" "$POSTACTIV_BACKGROUND_IMAGE_URL" "$POSTACTIV_TITLE"
363
     postactiv_customise_logo
366
     postactiv_customise_logo
364
     install_gnusocial_default_background "postactiv" "$POSTACTIV_DOMAIN_NAME"
367
     install_gnusocial_default_background "postactiv" "$POSTACTIV_DOMAIN_NAME"
764
 
767
 
765
     ${PROJECT_NAME}-pass -u $MY_USERNAME -a postactiv -p "$POSTACTIV_ADMIN_PASSWORD"
768
     ${PROJECT_NAME}-pass -u $MY_USERNAME -a postactiv -p "$POSTACTIV_ADMIN_PASSWORD"
766
 
769
 
770
+    gnusocial_block_user_script
767
     gnusocial_block_domain_script postactiv
771
     gnusocial_block_domain_script postactiv
768
 
772
 
769
     set_completion_param "postactiv domain" "$POSTACTIV_DOMAIN_NAME"
773
     set_completion_param "postactiv domain" "$POSTACTIV_DOMAIN_NAME"

+ 18
- 8
src/freedombone-controlpanel Bestand weergeven

1859
     trap "rm -f $data" 0 1 2 5 15
1859
     trap "rm -f $data" 0 1 2 5 15
1860
     dialog --title $"Block a domain name" \
1860
     dialog --title $"Block a domain name" \
1861
            --backtitle $"Freedombone Control Panel" \
1861
            --backtitle $"Freedombone Control Panel" \
1862
-           --inputbox $"Enter the domain name that you wish to block" 8 60 "" 2>$data
1862
+           --inputbox $"Enter the domain name or GNU Social/postActiv nick@domain that you wish to block" 8 60 "" 2>$data
1863
     sel=$?
1863
     sel=$?
1864
     case $sel in
1864
     case $sel in
1865
         0)
1865
         0)
1866
             blocked_domain=$(<$data)
1866
             blocked_domain=$(<$data)
1867
             if [ ${#blocked_domain} -gt 2 ]; then
1867
             if [ ${#blocked_domain} -gt 2 ]; then
1868
                 if [[ "${blocked_domain}" == *'.'* ]]; then
1868
                 if [[ "${blocked_domain}" == *'.'* ]]; then
1869
-                    firewall_block_domain $blocked_domain
1870
-                    dialog --title $"Block a domain" \
1871
-                           --msgbox $"The domain $blocked_domain has been blocked" 6 40
1869
+                    if [[ "${blocked_domain}" != *'@'* ]]; then
1870
+                        firewall_block_domain $blocked_domain
1871
+                        dialog --title $"Block a domain" \
1872
+                               --msgbox $"The domain $blocked_domain has been blocked" 6 40
1873
+                    else
1874
+                        dialog --title $"Block a GNU Social/postActiv nickname" \
1875
+                               --msgbox $"$blocked_domain has been blocked" 6 40
1876
+                    fi
1872
                 fi
1877
                 fi
1873
             fi
1878
             fi
1874
             ;;
1879
             ;;
1880
     trap "rm -f $data" 0 1 2 5 15
1885
     trap "rm -f $data" 0 1 2 5 15
1881
     dialog --title $"Unblock a domain name" \
1886
     dialog --title $"Unblock a domain name" \
1882
            --backtitle $"Freedombone Control Panel" \
1887
            --backtitle $"Freedombone Control Panel" \
1883
-           --inputbox $"Enter the domain name that you wish to unblock" 8 60 "" 2>$data
1888
+           --inputbox $"Enter the domain name or GNU Social/postActiv nick@domain that you wish to unblock" 8 60 "" 2>$data
1884
     sel=$?
1889
     sel=$?
1885
     case $sel in
1890
     case $sel in
1886
         0)
1891
         0)
1887
             unblocked_domain=$(<$data)
1892
             unblocked_domain=$(<$data)
1888
             if [ ${#unblocked_domain} -gt 2 ]; then
1893
             if [ ${#unblocked_domain} -gt 2 ]; then
1889
                 if [[ "${unblocked_domain}" == *'.'* ]]; then
1894
                 if [[ "${unblocked_domain}" == *'.'* ]]; then
1890
-                    firewall_unblock_domain $unblocked_domain
1891
-                    dialog --title $"Unblock a domain" \
1892
-                           --msgbox $"The domain $unblocked_domain has been unblocked" 6 40
1895
+                    if [[ "${unblocked_domain}" != *'@'* ]]; then
1896
+                        firewall_unblock_domain $unblocked_domain
1897
+                        dialog --title $"Unblock a domain" \
1898
+                               --msgbox $"The domain $unblocked_domain has been unblocked" 6 40
1899
+                    else
1900
+                        dialog --title $"Unblock a GNU Social/postActiv nickname" \
1901
+                               --msgbox $"$unblocked_domain has been unblocked" 6 40
1902
+                    fi
1893
                 fi
1903
                 fi
1894
             fi
1904
             fi
1895
             ;;
1905
             ;;

+ 63
- 1
src/freedombone-utils-gnusocialtools Bestand weergeven

327
     chmod +x /etc/cron.hourly/${gnusocial_type}-daemons
327
     chmod +x /etc/cron.hourly/${gnusocial_type}-daemons
328
 }
328
 }
329
 
329
 
330
+function gnusocial_block_user_script {
331
+    echo '#!/bin/bash' > /usr/bin/gnusocial-delete-user
332
+    echo '' >> /usr/bin/gnusocial-delete-user
333
+    echo 'database_name=$1' >> /usr/bin/gnusocial-delete-user
334
+    echo 'remove_user=$2' >> /usr/bin/gnusocial-delete-user
335
+    echo 'MARIADB_PASSWORD=$(freedombone-pass -u root -a mariadb)' >> /usr/bin/gnusocial-delete-user
336
+    echo '' >> /usr/bin/gnusocial-delete-user
337
+    echo 'if [ ${#remove_user} -lt 2 ]; then' >> /usr/bin/gnusocial-delete-user
338
+    echo '  echo $"No user was specified"' >> /usr/bin/gnusocial-delete-user
339
+    echo '  exit 1' >> /usr/bin/gnusocial-delete-user
340
+    echo 'fi' >> /usr/bin/gnusocial-delete-user
341
+    echo '' >> /usr/bin/gnusocial-delete-user
342
+    echo 'if [[ "$remove_user" != *"."* || "$remove_user" != *"@"* ]]; then' >> /usr/bin/gnusocial-delete-user
343
+    echo '  echo $"This doesnt look like a user"' >> /usr/bin/gnusocial-delete-user
344
+    echo '  exit 2' >> /usr/bin/gnusocial-delete-user
345
+    echo 'fi' >> /usr/bin/gnusocial-delete-user
346
+    echo '' >> /usr/bin/gnusocial-delete-user
347
+    echo 'if [ ${#database_name} -lt 2 ]; then' >> /usr/bin/gnusocial-delete-user
348
+    echo '  echo $"No database was specified"' >> /usr/bin/gnusocial-delete-user
349
+    echo '  exit 3' >> /usr/bin/gnusocial-delete-user
350
+    echo 'fi' >> /usr/bin/gnusocial-delete-user
351
+    echo '' >> /usr/bin/gnusocial-delete-user
352
+    echo "nickname=\$(echo \"\$remove_user\" | awk -F '@' '{print \$1}')" >> /usr/bin/gnusocial-delete-user
353
+    echo "remove_domain=\$(echo "\$remove_user" | awk -F '@' '{print \$2}')" >> /usr/bin/gnusocial-delete-user
354
+    echo '' >> /usr/bin/gnusocial-delete-user
355
+    echo 'database_query="select profile.id from profile where nickname = ${nickname} and profileurl like "%${remove_domain}%";"' >> /usr/bin/gnusocial-delete-user
356
+    echo 'declare -a ids=$(mysql -u root --password="$MARIADB_PASSWORD" << EOF' >> /usr/bin/gnusocial-delete-user
357
+    echo 'use $database_name;' >> /usr/bin/gnusocial-delete-user
358
+    echo '$database_query' >> /usr/bin/gnusocial-delete-user
359
+    echo 'EOF' >> /usr/bin/gnusocial-delete-user
360
+    echo ')' >> /usr/bin/gnusocial-delete-user
361
+    echo '' >> /usr/bin/gnusocial-delete-user
362
+    echo 'ctr=0' >> /usr/bin/gnusocial-delete-user
363
+    echo 'for id in $ids' >> /usr/bin/gnusocial-delete-user
364
+    echo 'do' >> /usr/bin/gnusocial-delete-user
365
+    echo '  if [ $ctr -gt 0 ]; then' >> /usr/bin/gnusocial-delete-user
366
+    echo '      #echo "Removing user ID $id on $remove_domain"' >> /usr/bin/gnusocial-delete-user
367
+    echo '' >> /usr/bin/gnusocial-delete-user
368
+    echo '      database_query="delete from conversation where uri like "%${remove_domain}%";"' >> /usr/bin/gnusocial-delete-user
369
+    echo '      mysql -u root --password="$MARIADB_PASSWORD" -e "$database_query" $database_name' >> /usr/bin/gnusocial-delete-user
370
+    echo '' >> /usr/bin/gnusocial-delete-user
371
+    echo '      database_query="delete from reply where profile_id=${id};"' >> /usr/bin/gnusocial-delete-user
372
+    echo '      mysql -u root --password="$MARIADB_PASSWORD" -e "$database_query" $database_name' >> /usr/bin/gnusocial-delete-user
373
+    echo '' >> /usr/bin/gnusocial-delete-user
374
+    echo '      database_query="delete from reply where replied_id=${id};"' >> /usr/bin/gnusocial-delete-user
375
+    echo '      mysql -u root --password="$MARIADB_PASSWORD" -e "$database_query" $database_name' >> /usr/bin/gnusocial-delete-user
376
+    echo '' >> /usr/bin/gnusocial-delete-user
377
+    echo '      database_query="delete from notice where profile_id=${id};"' >> /usr/bin/gnusocial-delete-user
378
+    echo '      mysql -u root --password="$MARIADB_PASSWORD" -e "$database_query" $database_name' >> /usr/bin/gnusocial-delete-user
379
+    echo '' >> /usr/bin/gnusocial-delete-user
380
+    echo '      database_query="delete from profile where id=${id};"' >> /usr/bin/gnusocial-delete-user
381
+    echo '      mysql -u root --password="$MARIADB_PASSWORD" -e "$database_query" $database_name' >> /usr/bin/gnusocial-delete-user
382
+    echo '  fi' >> /usr/bin/gnusocial-delete-user
383
+    echo '  ctr=$((ctr + 1))' >> /usr/bin/gnusocial-delete-user
384
+    echo 'done' >> /usr/bin/gnusocial-delete-user
385
+    chmod +x /usr/bin/gnusocial-delete-user
386
+}
387
+
330
 function gnusocial_block_domain_script {
388
 function gnusocial_block_domain_script {
331
     database_name=$1
389
     database_name=$1
332
 
390
 
390
     echo 'FIREWALL_DOMAINS=$HOME/${PROJECT_NAME}-firewall-domains.cfg' >> /usr/bin/${database_name}-firewall
448
     echo 'FIREWALL_DOMAINS=$HOME/${PROJECT_NAME}-firewall-domains.cfg' >> /usr/bin/${database_name}-firewall
391
     echo '' >> /usr/bin/${database_name}-firewall
449
     echo '' >> /usr/bin/${database_name}-firewall
392
     echo 'while read block; do' >> /usr/bin/${database_name}-firewall
450
     echo 'while read block; do' >> /usr/bin/${database_name}-firewall
393
-    echo '    /usr/bin/gnusocial-delete-domain "$database_name" "$block"' >> /usr/bin/${database_name}-firewall
451
+    echo '    if [[ "$block" != *"@"* ]]; then' >> /usr/bin/${database_name}-firewall
452
+    echo '        /usr/bin/gnusocial-delete-domain "$database_name" "$block"' >> /usr/bin/${database_name}-firewall
453
+    echo '    else' >> /usr/bin/${database_name}-firewall
454
+    echo '        /usr/bin/gnusocial-delete-user "$database_name" "$block"' >> /usr/bin/${database_name}-firewall
455
+    echo '    fi' >> /usr/bin/${database_name}-firewall
394
     echo 'done <$FIREWALL_DOMAINS' >> /usr/bin/${database_name}-firewall
456
     echo 'done <$FIREWALL_DOMAINS' >> /usr/bin/${database_name}-firewall
395
     chmod +x /usr/bin/${database_name}-firewall
457
     chmod +x /usr/bin/${database_name}-firewall
396
 
458