Added software version

This commit is contained in:
spla 2020-09-11 18:47:40 +02:00
pare 6d31149031
commit 429a03b62f
S'han modificat 2 arxius amb 32 adicions i 12 eliminacions

Veure arxiu

@ -142,7 +142,7 @@ sql = "create table "+table+" (server varchar(200) PRIMARY KEY, federated_with v
create_table(db, db_user, table, sql) create_table(db, db_user, table, sql)
table = "fediverse" 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) create_table(db, db_user, table, sql)
table = "totals" table = "totals"

Veure arxiu

@ -71,7 +71,7 @@ def alive_server(server, x):
cur = conn.cursor() 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() row = cur.fetchone()
@ -80,6 +80,7 @@ def alive_server(server, x):
was_alive = row[0] was_alive = row[0]
serv_soft = row[1] serv_soft = row[1]
serv_api = row[2] serv_api = row[2]
soft_version = row[3]
cur.close() cur.close()
@ -102,51 +103,68 @@ def alive_server(server, x):
if serv_api == '/nodeinfo/2.0?': if serv_api == '/nodeinfo/2.0?':
try: try:
users = data.json()['usage']['users']['total'] users = data.json()['usage']['users']['total']
soft_version = data.json()['software']['version']
alive = True alive = True
except: except:
users = 0 users = 0
soft_version = ""
if serv_api == '/nodeinfo/2.0.json?': if serv_api == '/nodeinfo/2.0.json?':
try: try:
users = data.json()['usage']['users']['total'] users = data.json()['usage']['users']['total']
soft_version = data.json()['software']['version']
alive = True alive = True
except: except:
users = 0 users = 0
soft_version = ""
elif serv_api == '/api/v1/instance?': elif serv_api == '/api/v1/instance?':
try: try:
users = data.json()['stats']['user_count'] users = data.json()['stats']['user_count']
soft_version = data.json()['version']
alive = True alive = True
except: except:
users = 0 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": 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: try:
users = data.json()['usage']['users']['total'] users = data.json()['usage']['users']['total']
soft_version = data.json()['software']['version']
alive = True alive = True
except: except:
users = 0 users = 0
soft_version = ""
if serv_soft == "gnusocialv2" or serv_soft == "gnusocial": if serv_soft == "gnusocialv2" or serv_soft == "gnusocial":
try: try:
users = data.json()['usage']['users']['total'] users = data.json()['usage']['users']['total']
if users == 0: if users == 0:
users = data.json()['usage']['users']['activeHalfyear'] users = data.json()['usage']['users']['activeHalfyear']
soft_version = data.json()['software']['version']
alive = True alive = True
except: except:
users = 0 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": 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: try:
users = data.json()['usage']['users']['total'] users = data.json()['usage']['users']['total']
soft_version = data.json()['software']['version']
alive = True alive = True
except: except:
users = 0 users = 0
soft_version = ""
if serv_soft == "ganggo" or serv_soft == "squs" or serv_soft == "dolphin": if serv_soft == "ganggo" or serv_soft == "squs" or serv_soft == "dolphin":
try: try:
users = data.json()['usage']['users']['total'] users = data.json()['usage']['users']['total']
soft_version = data.json()['software']['version']
alive = True alive = True
except: except:
users = 0 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 conn = None
try: try:
@ -155,9 +173,9 @@ def alive_server(server, x):
cur = conn.cursor() 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,)) 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: if conn is not None:
conn.close() 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 conn = None
try: try:
@ -265,9 +283,9 @@ def write_api(server, software, users, alive, api):
cur = conn.cursor() 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,)) cur.execute("UPDATE world SET checked='t' where server=(%s)", (server,))
@ -316,18 +334,20 @@ async def getsoft(server):
try: try:
soft = response_json['software']['name'] soft = response_json['software']['name']
soft = soft.lower() soft = soft.lower()
soft_version = response_json['software']['version']
users = response_json['usage']['users']['total'] users = response_json['usage']['users']['total']
if users > 1000000: if users > 1000000:
return return
alive = True alive = True
write_api(server, soft, users, alive, api) write_api(server, soft, users, alive, api, soft_version)
print("Server " + server + " (" + soft + ") is alive!") print("Server " + server + " (" + soft + " " + soft_version + ") is alive!")
return return
except: except:
pass pass
if response.status == 200 and soft == '' and api == "/api/v1/instance?": if response.status == 200 and soft == '' and api == "/api/v1/instance?":
soft = 'mastodon' soft = 'mastodon'
users = response_json['stats']['user_count'] users = response_json['stats']['user_count']
soft_version = response_json['version']
if users > 1000000: if users > 1000000:
return return
alive = True alive = True