]> git.mxchange.org Git - fba.git/blob - nodeinfo.sh
16baaee4dfffe1d7a31eccb8f6318b9c5ea4c8f0
[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|--no-auto2|--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 detection_mode IS NOT NULL AND detection_mode != 'AUTO_DISCOVERY' ORDER BY last_updated ASC;")
30         MODE="noauto"
31 elif [ "$1" = "--no-auto2" ]
32 then
33         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;"`
34         MODE="noauto2"
35 elif [ "$1" = "--timeout" ]
36 then
37         DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE last_error_details LIKE '%Timeout%' ORDER BY last_updated ASC;")
38         MODE="software"
39 elif [ "$1" = "--software2" ]
40 then
41         DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE software IS NOT NULL AND detection_mode IS NULL ORDER BY last_updated ASC;")
42         MODE="software2"
43 elif [ "$1" = "--software3" -a -f "software.txt" ]
44 then
45         SOFTWARE_LIST=$(cat software.txt)
46         MODE="software3"
47 elif [ "$1" = "--generator" ]
48 then
49         DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE detection_mode='GENERATOR' ORDER BY last_updated ASC;")
50         MODE="generator"
51 else
52         DOMAINS=$(sqlite3 blocks.db "SELECT domain FROM instances WHERE software IS NULL AND nodeinfo_url IS NOT NULL ORDER BY last_updated ASC;")
53 fi
54
55 if [ -z "${DOMAINS}" -a -z "${SOFTWARE_LIST}" ]
56 then
57         echo "$0: No domains or software found! MODE='${MODE}'"
58         exit 255
59 fi
60
61 if [ -n "${DOMAINS}" ]
62 then
63         for DOMAIN in ${DOMAINS};
64         do
65                 echo "$0: DOMAIN='${DOMAIN}'"
66                 if [ -n "$1" -a -z "${MODE}" ]
67                 then
68                         ./fba.py update_nodeinfo --domain=${DOMAIN} "$1"
69                 elif [ -n "$2" ]
70                 then
71                         ./fba.py update_nodeinfo --domain=${DOMAIN} "$2"
72                 else
73                         ./fba.py update_nodeinfo --domain=${DOMAIN}
74                 fi
75         done
76 elif [ -n "${SOFTWARE_LIST}" ]
77 then
78         for SOFTWARE in ${SOFTWARE_LIST};
79         do
80                 echo "$0: SOFTWARE='${SOFTWARE}'"
81                 if [ -n "$2" ]
82                 then
83                         ./fba.py update_nodeinfo --software=${SOFTWARE} "$2"
84                 else
85                         ./fba.py update_nodeinfo --software=${SOFTWARE}
86                 fi
87         done
88 fi
89
90 echo "$0: All done."