]> git.mxchange.org Git - fba.git/blob - nodeinfo.sh
Continued:
[fba.git] / nodeinfo.sh
1 #!/bin/sh
2
3 MODE=""
4 DOMAINS=""
5 SOFTWARE_LIST=""
6
7 if [ "$1" = "--help" ]
8 then
9         echo "Usage: $0 [file|--software|--software2|--software3|--nodeinfo|--generator|--detection|--no-auto|--timeout]"
10         exit 255
11 elif [ -n "$1" -a -f "$1" ]
12 then
13         DOMAINS=$(cat "$1")
14         MODE="file"
15 elif [ "$1" = "--software" ]
16 then
17         DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE software IS NULL ORDER BY last_updated ASC;")
18         MODE="software"
19 elif [ "$1" = "--nodeinfo" ]
20 then
21         DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE software IS NULL AND nodeinfo_url IS NOT NULL ORDER BY last_updated ASC;")
22         MODE="nodeinfo"
23 elif [ "$1" = "--detection" ]
24 then
25         DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE detection_mode IS NULL ORDER BY last_updated ASC;")
26         MODE="detection"
27 elif [ "$1" = "--no-auto" ]
28 then
29         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;"`
30         MODE="noauto2"
31 elif [ "$1" = "--timeout" ]
32 then
33         DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE last_error_details LIKE '%Timeout%' ORDER BY last_updated ASC;")
34         MODE="software"
35 elif [ "$1" = "--software2" ]
36 then
37         DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE software IS NOT NULL AND detection_mode IS NULL ORDER BY last_updated ASC;")
38         MODE="software2"
39 elif [ "$1" = "--software3" -a -f "software.txt" ]
40 then
41         SOFTWARE_LIST=$(cat software.txt)
42         MODE="software3"
43 elif [ "$1" = "--generator" ]
44 then
45         DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE detection_mode='GENERATOR' ORDER BY last_updated ASC;")
46         MODE="generator"
47 else
48         DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE software IS NULL AND nodeinfo_url IS NOT NULL ORDER BY last_updated ASC;")
49 fi
50
51 if [ -z "${DOMAINS}" -a -z "${SOFTWARE_LIST}" ]
52 then
53         echo "$0: No domains or software found! MODE='${MODE}'"
54         exit 255
55 fi
56
57 if [ -n "${DOMAINS}" ]
58 then
59         for DOMAIN in ${DOMAINS};
60         do
61                 echo "$0: DOMAIN='${DOMAIN}'"
62                 if [ -n "$1" -a -z "${MODE}" ]
63                 then
64                         ./fba.py update_nodeinfo --domain=${DOMAIN} "$1"
65                 elif [ -n "$2" ]
66                 then
67                         ./fba.py update_nodeinfo --domain=${DOMAIN} "$2"
68                 else
69                         ./fba.py update_nodeinfo --domain=${DOMAIN}
70                 fi
71         done
72 elif [ -n "${SOFTWARE_LIST}" ]
73 then
74         for SOFTWARE in ${SOFTWARE_LIST};
75         do
76                 echo "$0: SOFTWARE='${SOFTWARE}'"
77                 if [ -n "$2" ]
78                 then
79                         ./fba.py update_nodeinfo --software=${SOFTWARE} "$2"
80                 else
81                         ./fba.py update_nodeinfo --software=${SOFTWARE}
82                 fi
83         done
84 fi
85
86 echo "$0: All done."