From 429a03b62fda57d4748d4f97fd505a4d562e502c Mon Sep 17 00:00:00 2001 From: spla Date: Fri, 11 Sep 2020 18:47:40 +0200 Subject: [PATCH] Added software version --- db-setup.py | 2 +- fediverse.py | 42 +++++++++++++++++++++++++++++++----------- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/db-setup.py b/db-setup.py index 0393c90..a0344d3 100644 --- a/db-setup.py +++ b/db-setup.py @@ -142,7 +142,7 @@ sql = "create table "+table+" (server varchar(200) PRIMARY KEY, federated_with v create_table(db, db_user, table, sql) table = "fediverse" -sql = "create table "+table+" (server varchar(200) PRIMARY KEY, users INT, updated_at timestamptz, software varchar(15))" +sql = "create table "+table+" (server varchar(200) PRIMARY KEY, users INT, updated_at timestamptz, software varchar(15), version varchar(40))" create_table(db, db_user, table, sql) table = "totals" diff --git a/fediverse.py b/fediverse.py index 1290b3c..567277e 100644 --- a/fediverse.py +++ b/fediverse.py @@ -71,7 +71,7 @@ def alive_server(server, x): cur = conn.cursor() - cur.execute("select alive, software, users_api from fediverse where server=(%s)", (server,)) + cur.execute("select alive, software, users_api, version from fediverse where server=(%s)", (server,)) row = cur.fetchone() @@ -80,6 +80,7 @@ def alive_server(server, x): was_alive = row[0] serv_soft = row[1] serv_api = row[2] + soft_version = row[3] cur.close() @@ -102,51 +103,68 @@ def alive_server(server, x): if serv_api == '/nodeinfo/2.0?': try: users = data.json()['usage']['users']['total'] + soft_version = data.json()['software']['version'] alive = True except: users = 0 + soft_version = "" if serv_api == '/nodeinfo/2.0.json?': try: users = data.json()['usage']['users']['total'] + soft_version = data.json()['software']['version'] alive = True except: users = 0 + soft_version = "" elif serv_api == '/api/v1/instance?': try: users = data.json()['stats']['user_count'] + soft_version = data.json()['version'] alive = True except: users = 0 + soft_version = "" if serv_soft == "pleroma" or serv_soft == "diaspora" or serv_soft == "peertube" or serv_soft == "pixelfed" or serv_soft == "hubzilla" or serv_soft == "writefreely" or serv_soft == "friendica": try: users = data.json()['usage']['users']['total'] + soft_version = data.json()['software']['version'] alive = True except: users = 0 + soft_version = "" if serv_soft == "gnusocialv2" or serv_soft == "gnusocial": try: users = data.json()['usage']['users']['total'] if users == 0: users = data.json()['usage']['users']['activeHalfyear'] + soft_version = data.json()['software']['version'] alive = True except: users = 0 + soft_version = "" if serv_soft == "plume" or serv_soft == 'red' or serv_soft == "misskey" or serv_soft == "zap" or serv_soft == "prismo" or serv_soft == "ravenvale" or serv_soft == "osada" or serv_soft == "groundpolis": try: users = data.json()['usage']['users']['total'] + soft_version = data.json()['software']['version'] alive = True except: users = 0 + soft_version = "" if serv_soft == "ganggo" or serv_soft == "squs" or serv_soft == "dolphin": try: users = data.json()['usage']['users']['total'] + soft_version = data.json()['software']['version'] alive = True except: users = 0 + soft_version = "" - print("Server " + str(server) + " (" + serv_soft + ") is alive!") + if soft_version != "" and soft_version != None: + print("Server " + str(server) + " (" + serv_soft + " " + soft_version + ") is alive!") + else: + print("Server " + str(server) + " (" + serv_soft + ") is alive!") - insert_sql = "INSERT INTO fediverse(server, users, updated_at, software, alive, users_api) VALUES(%s,%s,%s,%s,%s,%s) ON CONFLICT DO NOTHING" + insert_sql = "INSERT INTO fediverse(server, users, updated_at, software, alive, users_api, version) VALUES(%s,%s,%s,%s,%s,%s,%s) ON CONFLICT DO NOTHING" conn = None try: @@ -155,9 +173,9 @@ def alive_server(server, x): cur = conn.cursor() - cur.execute(insert_sql, (server, users, now, serv_soft, alive, serv_api)) + cur.execute(insert_sql, (server, users, now, serv_soft, alive, serv_api, soft_version)) - cur.execute("UPDATE fediverse SET users=(%s), updated_at=(%s), software=(%s), alive=(%s), users_api=(%s) where server=(%s)", (users, now, serv_soft, alive, serv_api, server)) + cur.execute("UPDATE fediverse SET users=(%s), updated_at=(%s), software=(%s), alive=(%s), users_api=(%s), version=(%s) where server=(%s)", (users, now, serv_soft, alive, serv_api, soft_version, server)) cur.execute("UPDATE world SET checked='t' where server=(%s)", (server,)) @@ -254,9 +272,9 @@ def alive_server(server, x): if conn is not None: conn.close() -def write_api(server, software, users, alive, api): +def write_api(server, software, users, alive, api, soft_version): - insert_sql = "INSERT INTO fediverse(server, updated_at, software, users, alive, users_api) VALUES(%s,%s,%s,%s,%s,%s) ON CONFLICT DO NOTHING" + insert_sql = "INSERT INTO fediverse(server, updated_at, software, users, alive, users_api, version) VALUES(%s,%s,%s,%s,%s,%s,%s) ON CONFLICT DO NOTHING" conn = None try: @@ -265,9 +283,9 @@ def write_api(server, software, users, alive, api): cur = conn.cursor() - cur.execute(insert_sql, (server, now, software, users, alive, api)) + cur.execute(insert_sql, (server, now, software, users, alive, api, soft_version)) - cur.execute("UPDATE fediverse SET updated_at=(%s), software=(%s), users=(%s), alive=(%s), users_api=(%s) where server=(%s)", (now, software, users, alive, api, server)) + cur.execute("UPDATE fediverse SET updated_at=(%s), software=(%s), users=(%s), alive=(%s), users_api=(%s), version=(%s) where server=(%s)", (now, software, users, alive, api, soft_version, server)) cur.execute("UPDATE world SET checked='t' where server=(%s)", (server,)) @@ -316,18 +334,20 @@ async def getsoft(server): try: soft = response_json['software']['name'] soft = soft.lower() + soft_version = response_json['software']['version'] users = response_json['usage']['users']['total'] if users > 1000000: return alive = True - write_api(server, soft, users, alive, api) - print("Server " + server + " (" + soft + ") is alive!") + write_api(server, soft, users, alive, api, soft_version) + print("Server " + server + " (" + soft + " " + soft_version + ") is alive!") return except: pass if response.status == 200 and soft == '' and api == "/api/v1/instance?": soft = 'mastodon' users = response_json['stats']['user_count'] + soft_version = response_json['version'] if users > 1000000: return alive = True