Browse Source

Aggiunta 'modalità interattiva'

pezcurrel 4 years ago
parent
commit
c83b4e2978
1 changed files with 32 additions and 5 deletions
  1. 32 5
      mastblocksdump/mastblocksmerge.sh

+ 32 - 5
mastblocksdump/mastblocksmerge.sh

@@ -14,6 +14,7 @@
 MASTHOME='/var/lib/mastodon'
 MASTENVFP="$MASTHOME/live/.env.production"
 SISTERSFP="istanzesorelle"
+INTERACTIVE=0
 
 HELP="SINTASSI
  mastblocksmerge.sh [opzioni]
@@ -45,6 +46,10 @@ OPZIONI
  -s, --sistersfp
   Definisce il percorso del file da cui leggere la lista delle istanze
   sorelle.
+ -i, --interactive
+  Modalità interattiva: se vengono nelle blocklist vengono trovate
+  istanze ancora non presenti nel database di mastodon, viene chiesto
+  per ciascuna se aggiungerla o meno.
  -h, --help
   Mostra questo aiuto ed esce."
 
@@ -81,6 +86,9 @@ while [ $i -lt ${#args[@]} ]; do
 					SISTERSFP="${args[$i]}"
 				fi
 			;;
+			"-i" | "--interactive" )
+				INTERACTIVE=1
+			;;
 			"-h" | "--help" )
 				echo "$HELP"
 				exit 0
@@ -114,12 +122,15 @@ DB_PASS=`grep 'DB_PASS' "$MASTENVFP"|sed -e 's/[^=]*=//'`
 IFS=$'\n'
 
 for sisdom in $(grep -P '^[^#]+[^\s]+' "$SISTERSFP"); do
-	blocks="$(curl -s "https://$sisdom/domain_blocks.txt" | grep -P '^[^#]+[^\s]+')"
-#	blocks=$(cat "$sisdom" | grep -P '^[^#]+[^\s]+')
+#	blocks="$(curl -s "https://$sisdom/domain_blocks.txt" | grep -P '^[^#]+[^\s]+')"
+	blocks=$(cat "$sisdom" | grep -P '^[^#]+[^\s]+')
 	for line in $blocks; do
-		dom=$(echo "$line" | sed -e 's/\t.*//' -e 's/\./\\./g')
-		echo "$allblocks" | grep -P "^$dom\t" &>/dev/null
-		[ $? -ne 0 ] && allblocks+="$line$IFS"
+		echo "$allblocks"|grep -F "$line" &>/dev/null
+		if [ $? -ne 0 ]; then
+			dom=$(echo "$line" | sed -e 's/\t.*//' -e 's/\./\\./g')
+			echo "$allblocks" | grep -P "^$dom\t" &>/dev/null
+			[ $? -ne 0 ] && allblocks+="$line$IFS"
+		fi
 	done
 done
 allblocks=$(echo "$allblocks" | head -n -1 | sort)
@@ -138,4 +149,20 @@ newblocks=$(echo "$newblocks" | head -n -1 | sort)
 
 echo "Ho trovato $i istanza/e bloccata da aggiungere."
 
+if [ $INTERACTIVE -eq 1 ]; then
+	for line in $newblocks; do
+		echo "$line"
+		ask=1
+		while [ $ask -eq 1 ]; do
+			read -p "Vuoi aggiungere questa istanza alla tabella delle istanze bloccate? [S/n] " inp
+			echo "$inp" | grep -P '^[sSnN]{0,1}$' &>/dev/null
+			[ $? -eq 0 ] && ask=0
+		done
+		if [ "$inp" == "" ] || [ "$inp" == "s" ] || [ "$inp" == "S" ]; then
+			buf+="$line"
+		fi
+	done
+	newblocks="$buf"
+fi
+
 echo "$newblocks" | PGPASSWORD="$DB_PASS" psql -h "$DB_HOST" -p "$DB_PORT" -d "$DB_NAME" -U "$DB_USER" -A -t -c "COPY domain_blocks ( domain, created_at, updated_at, severity, reject_media, reject_reports, public_comment ) FROM STDIN WITH ( FORMAT text, DELIMITER '	' )"