From 41abc64dd569cba6bb67784aa32a6ecd0db248a6 Mon Sep 17 00:00:00 2001 From: lza_menace Date: Sun, 18 Oct 2020 01:18:35 -0700 Subject: [PATCH] refactor crypto tracking and html --- xmrnodes/app.py | 16 +++++++++++++--- xmrnodes/helpers.py | 29 ++++++++++++++++++++--------- xmrnodes/models.py | 2 +- xmrnodes/static/css/style.css | 8 ++++++++ xmrnodes/templates/index.html | 5 +++++ 5 files changed, 47 insertions(+), 13 deletions(-) diff --git a/xmrnodes/app.py b/xmrnodes/app.py index 2ce9b18..b0b4a0f 100644 --- a/xmrnodes/app.py +++ b/xmrnodes/app.py @@ -8,7 +8,7 @@ from datetime import datetime from flask import Flask, request, redirect from flask import render_template, flash, url_for from urllib.parse import urlparse -from xmrnodes.helpers import is_monero +from xmrnodes.helpers import determine_crypto from xmrnodes.forms import SubmitNode from xmrnodes.models import Node @@ -33,7 +33,16 @@ def index(): flash("Wow, wtf hackerman. Cool it.") page = 1 - nodes = Node.select().where(Node.validated==True).where(Node.is_monero==True).order_by( + nettype = request.args.get("nettype", "mainnet") + crypto = request.args.get("crypto", "monero") + + nodes = Node.select().where( + Node.validated==True + ).where( + Node.nettype==nettype + ).where( + Node.crypto==crypto + ).order_by( Node.datetime_entered.desc() ) paginated = nodes.paginate(page, itp) @@ -115,6 +124,7 @@ def validate(): assert "height" in r.json() assert "nettype" in r.json() nettype = r.json()["nettype"] + crypto = determine_crypto(node.url) logging.info("success") if nettype in ["mainnet", "stagenet", "testnet"]: node.nettype = nettype @@ -122,7 +132,7 @@ def validate(): node.validated = True node.last_height = r.json()["height"] node.datetime_checked = now - node.is_monero = is_monero(node.url) + node.crypto = crypto node.save() else: logging.info("unexpected nettype") diff --git a/xmrnodes/helpers.py b/xmrnodes/helpers.py index 57c3561..a338b51 100644 --- a/xmrnodes/helpers.py +++ b/xmrnodes/helpers.py @@ -1,17 +1,28 @@ from requests import get as r_get -def is_monero(url): +def determine_crypto(url): data = {"method": "get_block_header_by_height", "params": {"height": 0}} - known_hashes = [ - "418015bb9ae982a1975da7d79277c2705727a56894ba0fb246adaabb1f4632e3", #mainnet - "48ca7cd3c8de5b6a4d53d2861fbdaedca141553559f9be9520068053cda8430b", #testnet - "76ee3cc98646292206cd3e86f74d88b4dcc1d937088645e9b0cbca84b7ce74eb" #stagenet - ] + hashes = { + "monero": [ + "418015bb9ae982a1975da7d79277c2705727a56894ba0fb246adaabb1f4632e3", #mainnet + "48ca7cd3c8de5b6a4d53d2861fbdaedca141553559f9be9520068053cda8430b", #testnet + "76ee3cc98646292206cd3e86f74d88b4dcc1d937088645e9b0cbca84b7ce74eb" #stagenet + ], + "wownero": [ + "a3fd635dd5cb55700317783469ba749b5259f0eeac2420ab2c27eb3ff5ffdc5c", #mainnet + "d81a24c7aad4628e5c9129f8f2ec85888885b28cf468597a9762c3945e9f29aa", #testnet + ] + } try: r = r_get(url + "/json_rpc", json=data, timeout=5) r.raise_for_status() assert "result" in r.json() - is_xmr = r.json()["result"]["block_header"]["hash"] in known_hashes - return is_xmr + hash = r.json()["result"]["block_header"]["hash"] + crypto = "unknown" + for c, h in hashes.items(): + if hash in h: + crypto = c + break + return crypto except: - return False + return "unknown" diff --git a/xmrnodes/models.py b/xmrnodes/models.py index 77cc04d..b906ac2 100644 --- a/xmrnodes/models.py +++ b/xmrnodes/models.py @@ -14,7 +14,7 @@ class Node(Model): validated = BooleanField(default=False) nettype = CharField(null=True) last_height = IntegerField(null=True) - is_monero = BooleanField(default=False) + crypto = CharField(null=True) datetime_entered = DateTimeField(default=datetime.utcnow) datetime_checked = DateTimeField(default=None, null=True) datetime_failed = DateTimeField(default=None, null=True) diff --git a/xmrnodes/static/css/style.css b/xmrnodes/static/css/style.css index 7e7e4b2..a567396 100644 --- a/xmrnodes/static/css/style.css +++ b/xmrnodes/static/css/style.css @@ -23,3 +23,11 @@ input[type="text"] { .flashes { padding-top: 1em; } + +.search-btn { + margin: 2em .5em 0 .5em; +} + +.wownero { + background-color: rgb(235, 74, 206); +} diff --git a/xmrnodes/templates/index.html b/xmrnodes/templates/index.html index 37487d7..db72832 100644 --- a/xmrnodes/templates/index.html +++ b/xmrnodes/templates/index.html @@ -63,6 +63,11 @@ {% else %}

No nodes in the database yet...

{% endif %} +
+ + + +