+#!/bin/sh
+
+MODE=""
+if [ "$1" = "--help" ]
+then
+ echo "Usage: $0 [file|--software|--software2|--nodeinfo|--generator|--detection|--no-auto|--no-auto2|--timeout]"
+ exit 255
+elif [ -n "$1" -a -f "$1" ]
+then
+ DOMAINS=$(cat "$1")
+ MODE="file"
+elif [ "$1" = "--software" ]
+then
+ DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE software IS NULL ORDER BY last_updated ASC;")
+ MODE="software"
+elif [ "$1" = "--nodeinfo" ]
+then
+ DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE software IS NULL AND nodeinfo_url IS NOT NULL ORDER BY last_updated ASC;")
+ MODE="nodeinfo"
+elif [ "$1" = "--detection" ]
+then
+ DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE detection_mode IS NULL ORDER BY last_updated ASC;")
+ MODE="detection"
+elif [ "$1" = "--no-auto" ]
+then
+ DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE detection_mode != 'AUTO_DISCOVERY' ORDER BY last_updated ASC;")
+ MODE="noauto"
+elif [ "$1" = "--no-auto2" ]
+then
+ DOMAINS=`sqlite3 blocks.db "SELECT domain FROM instances WHERE software IN ('pleroma', 'mastodon', 'lemmy', 'friendica', 'misskey', 'peertube', 'takahe', 'gotosocial', 'brighteon', 'wildebeest', 'bookwyrm', 'mitra', 'areionskey', 'mammuthus') AND detection_mode != 'AUTO_DISCOVERY' ORDER BY last_updated ASC;"`
+ MODE="noauto2"
+elif [ "$1" = "--timeout" ]
+then
+ DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE last_error_details LIKE '%Timeout%' ORDER BY last_updated ASC;")
+ MODE="software"
+elif [ "$1" = "--software2" ]
+then
+ DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE software IS NOT NULL AND detection_mode IS NULL ORDER BY last_updated ASC;")
+ MODE="software2"
+elif [ "$1" = "--generator" ]
+then
+ DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE detection_mode='GENERATOR' ORDER BY last_updated ASC;")
+ MODE="generator"
+else
+ DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE software IS NULL AND nodeinfo_url IS NOT NULL ORDER BY last_updated ASC;")
+fi
+
+if [ -z "${DOMAINS}" ]
+then
+ echo "$0: No domains found! MODE='${MODE}'"
+ exit 255
+fi
+
+for DOMAIN in ${DOMAINS};
+do
+ echo "$0: DOMAIN='${DOMAIN}'"
+ if [ -n "$1" -a -z "${MODE}" ]
+ then
+ ./fba.py update_nodeinfo --domain=${DOMAIN} "$1"
+ elif [ -n "$2" ]
+ then
+ ./fba.py update_nodeinfo --domain=${DOMAIN} "$2"
+ else
+ ./fba.py update_nodeinfo --domain=${DOMAIN}
+ fi
+done
+echo "$0: All done."