import validators
import fba
+fba.lock_process()
+
domains = list()
try:
fetched = fba.post_json_api("gql.api.bka.li", "/v1/graphql", json.dumps({
}))
# DEBUG: print(f"DEBUG: fetched({len(fetched)})[]='{type(fetched)}'")
- if len(fetched) > 0 and "data" in fetched and "nodeinfo" in fetched["data"]:
- for entry in fetched["data"]["nodeinfo"]:
- # DEBUG: print(f"DEBUG: entry['{type(entry)}']='{entry}'")
- if not "domain" in entry:
- print(f"WARNING: entry does not contain 'domain' - SKIPPED!")
- continue
- elif not validators.domain(entry["domain"]):
- print(f"WARNING: domain='{entry['domain']}' is not a valid domain - SKIPPED!")
- continue
- elif fba.is_blacklisted(entry["domain"]):
- # DEBUG: print(f"DEBUG: domain='{entry['domain']}' is blacklisted - SKIPPED!")
- continue
- elif fba.is_instance_registered(entry["domain"]):
- # DEBUG: print(f"DEBUG: domain='{entry['domain']}' is already registered - SKIPPED!")
- continue
-
- domains.append(entry["domain"])
+ if len(fetched) == 0:
+ raise Exception("WARNING: Returned no records")
+ elif not "data" in fetched:
+ raise Exception(f"WARNING: fetched()={len(fetched)} does not contain element 'data'")
+ elif not "nodeinfo" in fetched["data"]:
+ raise Exception(f"WARNING: fetched()={len(fetched['data'])} does not contain element 'nodeinfo'")
+
+ for entry in fetched["data"]["nodeinfo"]:
+ # DEBUG: print(f"DEBUG: entry['{type(entry)}']='{entry}'")
+ if not "domain" in entry:
+ print(f"WARNING: entry does not contain 'domain' - SKIPPED!")
+ continue
+ elif not validators.domain(entry["domain"]):
+ print(f"WARNING: domain='{entry['domain']}' is not a valid domain - SKIPPED!")
+ continue
+ elif fba.is_blacklisted(entry["domain"]):
+ # DEBUG: print(f"DEBUG: domain='{entry['domain']}' is blacklisted - SKIPPED!")
+ continue
+ elif fba.is_instance_registered(entry["domain"]):
+ # DEBUG: print(f"DEBUG: domain='{entry['domain']}' is already registered - SKIPPED!")
+ continue
+
+ # DEBUG: print(f"DEBUG: Adding domain='{entry['domain']}' ...")
+ domains.append(entry["domain"])
except BaseException as e:
print(f"ERROR: Cannot fetch graphql,exception[{type(e)}]:'{str(e)}'")
print(f"INFO: Fetching instances from domain='{domain}' ...")
fba.fetch_instances(domain, None, None, sys.argv[0])
-fba.connection.close()
+fba.shutdown()