From 74252386419c14c418b0282f4fed2399dc255050 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Thu, 22 Jun 2023 23:57:38 +0200 Subject: [PATCH] Continued: - again tpzo fixed: ALTER TABLE instances RENAME has_obfucation TO has_obfuscation --- api.py | 16 +++--- blocks_empty.db | Bin 32768 -> 32768 bytes fba/commands.py | 18 +++---- fba/models/instances.py | 12 ++--- fba/networks/friendica.py | 16 +++--- fba/networks/pleroma.py | 86 ++++++++++++++++---------------- fba/utils.py | 20 ++++---- templates/views/index.html | 4 +- templates/views/scoreboard.html | 20 ++++---- 9 files changed, 96 insertions(+), 96 deletions(-) diff --git a/api.py b/api.py index d08cc44..9217716 100644 --- a/api.py +++ b/api.py @@ -71,10 +71,10 @@ def api_scoreboard(mode: str, amount: int): database.cursor.execute("SELECT last_status_code, COUNT(domain) AS score FROM instances WHERE last_status_code IS NOT NULL AND last_status_code != '200' GROUP BY last_status_code ORDER BY score DESC LIMIT ?", [amount]) elif mode == "avg_peers": database.cursor.execute("SELECT software, AVG(total_peers) AS average FROM instances WHERE software IS NOT NULL GROUP BY software HAVING average>0 ORDER BY average DESC LIMIT ?", [amount]) - elif mode == "obfucator": - database.cursor.execute("SELECT software, COUNT(domain) AS cnt FROM instances WHERE has_obfucation = 1 GROUP BY software ORDER BY cnt DESC LIMIT ?", [amount]) - elif mode == "obfucation": - database.cursor.execute("SELECT has_obfucation, COUNT(domain) AS cnt FROM instances WHERE software IN ('pleroma', 'mastodon', 'friendica') GROUP BY has_obfucation ORDER BY cnt DESC LIMIT ?", [amount]) + elif mode == "obfuscator": + database.cursor.execute("SELECT software, COUNT(domain) AS cnt FROM instances WHERE has_obfuscation = 1 GROUP BY software ORDER BY cnt DESC LIMIT ?", [amount]) + elif mode == "obfuscation": + database.cursor.execute("SELECT has_obfuscation, COUNT(domain) AS cnt FROM instances WHERE software IN ('pleroma', 'mastodon', 'friendica') GROUP BY has_obfuscation ORDER BY cnt DESC LIMIT ?", [amount]) else: raise HTTPException(status_code=400, detail="No filter specified") @@ -181,10 +181,10 @@ def scoreboard(request: Request, mode: str, amount: int): response = requests.get(f"http://{config.get('host')}:{config.get('port')}{config.get('base_url')}/api/scoreboard.json?mode=error_code&amount={amount}") elif mode == "avg_peers" and amount > 0: response = requests.get(f"http://{config.get('host')}:{config.get('port')}{config.get('base_url')}/api/scoreboard.json?mode=avg_peers&amount={amount}") - elif mode == "obfucator" and amount > 0: - response = requests.get(f"http://{config.get('host')}:{config.get('port')}{config.get('base_url')}/api/scoreboard.json?mode=obfucator&amount={amount}") - elif mode == "obfucation" and amount > 0: - response = requests.get(f"http://{config.get('host')}:{config.get('port')}{config.get('base_url')}/api/scoreboard.json?mode=obfucation&amount={amount}") + elif mode == "obfuscator" and amount > 0: + response = requests.get(f"http://{config.get('host')}:{config.get('port')}{config.get('base_url')}/api/scoreboard.json?mode=obfuscator&amount={amount}") + elif mode == "obfuscation" and amount > 0: + response = requests.get(f"http://{config.get('host')}:{config.get('port')}{config.get('base_url')}/api/scoreboard.json?mode=obfuscation&amount={amount}") else: raise HTTPException(status_code=400, detail="No filter specified") diff --git a/blocks_empty.db b/blocks_empty.db index 903c30980895603445fda714a93187dc716f6254..1df20d02238b5f3bb19c72b235f3c3e1ca33b8c9 100644 GIT binary patch delta 85 zcmZo@U}|V!njkIsi-CcG1BhY3cA}24^e+ZI?}@zJn;6*Hr!w%(<$cFKmFqXxbS@?S ishb4_q}jPzxdhn7<>eVWlQ%D5k7Hsi-u#b~sSE%pSQLB! delta 84 zcmZo@U}|V!njkIslYxPO1BhY3W}=R<^iKvo?}@zJn;6*Hr!nx&<$cFKjq5kpbS@?S hshb4_q}jQ-TR8>T#pUH0I} 0: - logger.debug("blocker='%s' uses obfucated domains, marking ...", blocker) - instances.set_has_obfucation(blocker, True) + logger.debug("blocker='%s' uses obfuscated domains, marking ...", blocker) + instances.set_has_obfuscation(blocker, True) # Some friendica servers also obscure domains without hash - row = instances.deobfucate("*", block['blocked']) + row = instances.deobfuscate("*", block['blocked']) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',blocker='%s',software='%s' - SKIPPED!", block['blocked'], blocker, software) + logger.warning("Cannot deobfuscate blocked='%s',blocker='%s',software='%s' - SKIPPED!", block['blocked'], blocker, software) continue block['blocked'] = row[0] origin = row[1] nodeinfo_url = row[2] elif block['blocked'].count("?") > 0: - logger.debug("blocker='%s' uses obfucated domains, marking ...", blocker) - instances.set_has_obfucation(blocker, True) + logger.debug("blocker='%s' uses obfuscated domains, marking ...", blocker) + instances.set_has_obfuscation(blocker, True) # Some obscure them with question marks, not sure if that's dependent on version or not - row = instances.deobfucate("?", block['blocked']) + row = instances.deobfuscate("?", block['blocked']) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',blocker='%s',software='%s' - SKIPPED!", block['blocked'], blocker, software) + logger.warning("Cannot deobfuscate blocked='%s',blocker='%s',software='%s' - SKIPPED!", block['blocked'], blocker, software) continue block['blocked'] = row[0] diff --git a/fba/models/instances.py b/fba/models/instances.py index dc16357..66fc292 100644 --- a/fba/models/instances.py +++ b/fba/models/instances.py @@ -60,8 +60,8 @@ _pending = { "last_status_code" : {}, # Last error details "last_error_details" : {}, - # Wether obfucation has been used - "has_obfucation" : {}, + # Wether obfuscation has been used + "has_obfuscation" : {}, } def _set_data(key: str, domain: str, value: any): @@ -287,7 +287,7 @@ def is_recent(domain: str) -> bool: logger.debug("recently='%s' - EXIT!", recently) return recently -def deobfucate(char: str, domain: str, blocked_hash: str = None) -> tuple: +def deobfuscate(char: str, domain: str, blocked_hash: str = None) -> tuple: logger.debug("char='%s',domain='%s',blocked_hash='%s' - CALLED!", char, domain, blocked_hash) if not isinstance(domain, str): @@ -321,7 +321,7 @@ def deobfucate(char: str, domain: str, blocked_hash: str = None) -> tuple: if row is None: logger.debug("blocked_hash='%s' not found, trying domain='%s' ...", blocked_hash, domain) - return deobfucate(char, domain) + return deobfuscate(char, domain) else: logger.debug("Looking up domain='%s' ...", domain) database.cursor.execute( @@ -386,7 +386,7 @@ def set_detection_mode(domain: str, mode: str): _set_data("detection_mode", domain, mode) logger.debug("EXIT!") -def set_has_obfucation(domain: str, status: bool): +def set_has_obfuscation(domain: str, status: bool): logger.debug("domain(%d)='%s',status='%s' - CALLED!", len(domain), domain, status) domain_helper.raise_on(domain) @@ -394,5 +394,5 @@ def set_has_obfucation(domain: str, status: bool): raise ValueError(f"Parameter status[]='{type(status)}' is not 'bool'") # Set timestamp - _set_data("has_obfucation", domain, status) + _set_data("has_obfuscation", domain, status) logger.debug("EXIT!") diff --git a/fba/networks/friendica.py b/fba/networks/friendica.py index 83ab193..c4a90c1 100644 --- a/fba/networks/friendica.py +++ b/fba/networks/friendica.py @@ -82,29 +82,29 @@ def fetch_blocks(domain: str) -> list: logger.debug("line[]='%s' returned empty blocked domain - SKIPPED!") continue elif blocked.count("*") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("*", blocked) + row = instances.deobfuscate("*", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) blocked = row[0] elif blocked.count("?") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("?", blocked) + row = instances.deobfuscate("?", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) diff --git a/fba/networks/pleroma.py b/fba/networks/pleroma.py index c2481ce..0d29604 100644 --- a/fba/networks/pleroma.py +++ b/fba/networks/pleroma.py @@ -113,29 +113,29 @@ def fetch_blocks(domain: str, nodeinfo_url: str) -> list: logger.debug("blocked='%s' is a fake domain - SKIPPED!", blocked) continue elif blocked.count("*") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("*", blocked) + row = instances.deobfuscate("*", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) blocked = row[0] elif blocked.count("?") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("?", blocked) + row = instances.deobfuscate("?", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) @@ -174,35 +174,35 @@ def fetch_blocks(domain: str, nodeinfo_url: str) -> list: logger.debug("blocked='%s' is a fake domain - SKIPPED!", blocked) continue elif blocked.count("*") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("*", blocked) + row = instances.deobfuscate("*", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) blocked = row[0] elif blocked.count("?") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("?", blocked) + row = instances.deobfuscate("?", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) blocked = row[0] - logger.debug("blocked='%s' - DEOBFUCATED!", blocked) + logger.debug("blocked='%s' - DEobfuscatED!", blocked) if not utils.is_domain_wanted(blocked): logger.debug("blocked='%s' is not wanted - SKIPPED!", blocked) continue @@ -263,35 +263,35 @@ def fetch_blocks(domain: str, nodeinfo_url: str) -> list: logger.warning("blocked is empty after tidyup.domain(): domain='%s',block_level='%s'", domain, block_level) continue elif blocked.count("*") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("*", blocked) + row = instances.deobfuscate("*", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) blocked = row[0] elif blocked.count("?") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("?", blocked) + row = instances.deobfuscate("?", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) blocked = row[0] - logger.debug("blocked='%s' - DEOBFUCATED!", blocked) + logger.debug("blocked='%s' - DEobfuscatED!", blocked) if not utils.is_domain_wanted(blocked): logger.debug("blocked='%s' is not wanted - SKIPPED!", blocked) continue @@ -326,29 +326,29 @@ def fetch_blocks(domain: str, nodeinfo_url: str) -> list: logger.warning("blocked is empty after tidyup.domain(): domain='%s',block_level='%s'", domain, block_level) continue elif blocked.count("*") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("*", blocked) + row = instances.deobfuscate("*", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) blocked = row[0] elif blocked.count("?") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("?", blocked) + row = instances.deobfuscate("?", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) @@ -390,35 +390,35 @@ def fetch_blocks(domain: str, nodeinfo_url: str) -> list: logger.warning("blocked is empty after tidyup.domain(): domain='%s',block_level='%s'", domain, block_level) continue elif blocked.count("*") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("*", blocked) + row = instances.deobfuscate("*", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) blocked = row[0] elif blocked.count("?") > 0: - logger.debug("domain='%s' uses obfucated domains, marking ...", domain) - instances.set_has_obfucation(domain, True) + logger.debug("domain='%s' uses obfuscated domains, marking ...", domain) + instances.set_has_obfuscation(domain, True) # Obscured domain name with no hash - row = instances.deobfucate("?", blocked) + row = instances.deobfuscate("?", blocked) logger.debug("row[]='%s'", type(row)) if row is None: - logger.warning("Cannot deobfucate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) + logger.warning("Cannot deobfuscate blocked='%s',domain='%s' - SKIPPED!", blocked, domain) continue logger.debug("blocked='%s' de-obscured to '%s'", blocked, row[0]) blocked = row[0] - logger.debug("blocked='%s' - DEOBFUCATED!", blocked) + logger.debug("blocked='%s' - DEobfuscatED!", blocked) if not utils.is_domain_wanted(blocked): logger.warning("blocked='%s' is not wanted - SKIPPED!", blocked) continue diff --git a/fba/utils.py b/fba/utils.py index 1a1dffe..56d7116 100644 --- a/fba/utils.py +++ b/fba/utils.py @@ -82,36 +82,36 @@ def process_domain(domain: str, blocker: str, command: str) -> bool: raise ValueError("Parameter 'command' is empty") if domain.find("*") > 0: - logger.debug("blocker='%s' uses obfucated domains, marking ...", blocker) - instances.set_has_obfucation(blocker, True) + logger.debug("blocker='%s' uses obfuscated domains, marking ...", blocker) + instances.set_has_obfuscation(blocker, True) # Try to de-obscure it - row = instances.deobfucate("*", domain) + row = instances.deobfuscate("*", domain) logger.debug(f"row[{type(row)}]='{row}'") if row is None: - logger.warning("Cannot de-obfucate domain='%s' - SKIPPED!", domain) + logger.warning("Cannot de-obfuscate domain='%s' - SKIPPED!", domain) return False logger.debug(f"domain='{domain}' de-obscured to '{row[0]}'") domain = row[0] elif domain.find("?") > 0: - logger.debug("blocker='%s' uses obfucated domains, marking ...", blocker) - instances.set_has_obfucation(blocker, True) + logger.debug("blocker='%s' uses obfuscated domains, marking ...", blocker) + instances.set_has_obfuscation(blocker, True) # Try to de-obscure it - row = instances.deobfucate("?", domain) + row = instances.deobfuscate("?", domain) logger.debug(f"row[{type(row)}]='{row}'") if row is None: - logger.warning("Cannot de-obfucate domain='%s' - SKIPPED!", domain) + logger.warning("Cannot de-obfuscate domain='%s' - SKIPPED!", domain) return False logger.debug(f"domain='{domain}' de-obscured to '{row[0]}'") domain = row[0] else: - logger.debug("blocker='%s' has NO obfucation on their block list", blocker) - instances.set_has_obfucation(blocker, False) + logger.debug("blocker='%s' has NO obfuscation on their block list", blocker) + instances.set_has_obfuscation(blocker, False) if instances.has_pending(blocker): logger.debug("Invoking instances.update_data(%s) ...", blocker) diff --git a/templates/views/index.html b/templates/views/index.html index 5e5a56f..4c91f2b 100644 --- a/templates/views/index.html +++ b/templates/views/index.html @@ -32,8 +32,8 @@ commands / error codes / average peers / - obfucating software / - obfucation metrics + obfuscating software / + obfuscation metrics

{% endblock %} {% block footer %} diff --git a/templates/views/scoreboard.html b/templates/views/scoreboard.html index b3f4a77..547a5ea 100644 --- a/templates/views/scoreboard.html +++ b/templates/views/scoreboard.html @@ -1,6 +1,6 @@ {% extends "base.html" %} -{% block title %}Scoreboard - {% if mode == 'software' %}TOP {{amount}} used software{% elif mode == 'obfucation' %}obfucation metrics{% elif mode == 'obfucator' %}TOP {{amount}} obfucating software{% elif mode == 'avg_peers' %}TOP {{amount}} average peer count{% elif mode == 'command' %}TOP {{amount}} commands{% elif mode == 'error_code' %}TOP {{amount}} error codes{% elif mode == 'reference' %}TOP {{amount}} referencing instances{% elif mode == 'blocked' %}TOP {{amount}} deferated instances{% elif mode == 'blocker' %}TOP {{amount}} deferating instances{% endif %}{% endblock %} +{% block title %}Scoreboard - {% if mode == 'software' %}TOP {{amount}} used software{% elif mode == 'obfuscation' %}obfuscation metrics{% elif mode == 'obfuscator' %}TOP {{amount}} obfuscating software{% elif mode == 'avg_peers' %}TOP {{amount}} average peer count{% elif mode == 'command' %}TOP {{amount}} commands{% elif mode == 'error_code' %}TOP {{amount}} error codes{% elif mode == 'reference' %}TOP {{amount}} referencing instances{% elif mode == 'blocked' %}TOP {{amount}} deferated instances{% elif mode == 'blocker' %}TOP {{amount}} deferating instances{% endif %}{% endblock %} {% block header %} {% if mode == 'blocker' %} @@ -17,10 +17,10 @@

TOP {{amount}} error codes

{% elif mode == 'avg_peers' %}

TOP {{amount}} average peer count

- {% elif mode == 'obfucator' %} -

TOP {{amount}} obfucating software

- {% elif mode == 'obfucation' %} -

obfucation metrics

+ {% elif mode == 'obfuscator' %} +

TOP {{amount}} obfuscating software

+ {% elif mode == 'obfuscation' %} +

obfuscation metrics

{% endif %} {% endblock %} @@ -29,8 +29,8 @@ - - + + @@ -38,7 +38,7 @@
№{% if mode in ('software', 'avg_peers', 'obfucator') %}Software{% elif mode == 'obfucation' %}obfucation status{% elif mode == 'error_code' %}Error code{% else %}Instance{% endif %}{% if mode == 'reference' %}References{% elif mode == 'avg_peers' %}Average{% elif mode in('software', 'error_code', 'obfucator', 'obfucation') %}Total{% else %}Blocks{% endif %}{% if mode in ('software', 'avg_peers', 'obfuscator') %}Software{% elif mode == 'obfuscation' %}obfuscation status{% elif mode == 'error_code' %}Error code{% else %}Instance{% endif %}{% if mode == 'reference' %}References{% elif mode == 'avg_peers' %}Average{% elif mode in('software', 'error_code', 'obfuscator', 'obfuscation') %}Total{% else %}Blocks{% endif %}
{{loop.index}} - {% if mode in ('software', 'command', 'error_code', 'avg_peers', 'obfucator', 'obfucation') %} + {% if mode in ('software', 'command', 'error_code', 'avg_peers', 'obfuscator', 'obfuscation') %} {{entry['domain']}} {% elif entry['domain'] == None %} - @@ -64,9 +64,9 @@
  • Error code 999 is fake and covers a lot of reasons why the domain/instance is not reachable. Mostly that the domain is not resolvable or the server refused connection.
  • - {% elif mode == 'obfucation' %} + {% elif mode == 'obfuscation' %}
    -

    Please note to obfucation status:

    +

    Please note to obfuscation status:

    • Only supported networks are counted here.
    • None means not determined yet.
    • -- 2.39.2