From d0037933e4918ee55a1f137d6bb307bfa3e4e659 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sat, 1 Feb 2025 21:30:02 +0100 Subject: [PATCH] Continued: - command update_nodeinfo now supports --only-erroneous - some more debug lines --- fba/boot.py | 1 + fba/commands.py | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/fba/boot.py b/fba/boot.py index 3969d92..891978c 100644 --- a/fba/boot.py +++ b/fba/boot.py @@ -234,6 +234,7 @@ def init_parser() -> None: parser.add_argument("--no-software", action="store_true", help="Checks only entries with no software type detected.") parser.add_argument("--no-auto", action="store_true", help="Checks only entries with other than AUTO_DISCOVERY as detection mode.") parser.add_argument("--no-detection", action="store_true", help="Checks only entries with no detection mode set.") + parser.add_argument("--only-erroneous", action="store_true", help="Checks only entries with errors in previous attempts.") parser.add_argument("--with-software", action="store_true", help="Checks only entries with any software type detected.") parser.add_argument("--same", action="store_true", help="Checks only entries with domain and software being the same.") diff --git a/fba/commands.py b/fba/commands.py index ee25de6..30b8dbd 100644 --- a/fba/commands.py +++ b/fba/commands.py @@ -1604,6 +1604,9 @@ def update_nodeinfo(args: argparse.Namespace) -> int: elif args.no_detection: logger.info("Fetching domains with no detection mode being set ...") database.cursor.execute("SELECT domain, software FROM instances WHERE detection_mode IS NULL ORDER BY last_updated ASC") + elif args.only_erroneous: + logger.info("Fetching domains with erroneous status codes ...") + database.cursor.execute("SELECT domain, software FROM instances WHERE last_status_code > 200 ORDER BY last_updated ASC") elif args.same: logger.info("Fetching domains with domain name and software being the same ...") database.cursor.execute("SELECT domain, software FROM instances WHERE domain=software ORDER BY last_updated ASC") @@ -1611,11 +1614,14 @@ def update_nodeinfo(args: argparse.Namespace) -> int: logger.info("Fetching domains for recently updated ...") database.cursor.execute("SELECT domain, software FROM instances ORDER BY last_updated ASC") - domains = database.cursor.fetchall() - - logger.info("Checking %d domain(s) ...", len(domains)) + # Init counter cnt = 0 - for row in domains: + + # Fetch all rows + rows = database.cursor.fetchall() + + logger.info("Checking %d domain(s) ...", len(rows)) + for row in rows: logger.debug("row[]='%s'", type(row)) if not domain_helper.is_tld_wanted(row["domain"]): logger.debug("row[domain]='%s' has an unwanted TLD - SKIPPED!", row["domain"]) @@ -1628,10 +1634,10 @@ def update_nodeinfo(args: argparse.Namespace) -> int: continue try: - logger.info("Checking nodeinfo for row[domain]='%s',row[software]='%s' (%s%%) ...", row["domain"], row["software"], "{:5.1f}".format(cnt / len(domains) * 100)) + logger.info("Checking nodeinfo for row[domain]='%s',row[software]='%s' (%s%%) ...", row["domain"], row["software"], "{:5.1f}".format(cnt / len(rows) * 100)) software = federation.determine_software(row["domain"]) - logger.debug("Determined software='%s'", software) + logger.debug("Determined software='%s',row[software]='%s'", software, row["software"]) if (software != row["software"] and software is not None) or args.force_all is True or args.force_update_none is True: logger.debug("software='%s'", software) if software is None: @@ -1641,13 +1647,16 @@ def update_nodeinfo(args: argparse.Namespace) -> int: logger.warning("Software type for row[domain]='%s' has changed from '%s' to '%s'!", row["domain"], row["software"], software) instances.set_software(row["domain"], software) + logger.debug("software='%s'", software) if software is not None: logger.debug("Setting row[domain]='%s' as successfully determined ...", row["domain"]) instances.set_success(row["domain"]) + except network.exceptions as exception: logger.warning("Exception '%s' during updating nodeinfo for row[domain]='%s'", type(exception), row["domain"]) instances.set_last_error(row["domain"], exception) + logger.debug("Updating instanes for row[domain]='%s' ...", row["domain"]) instances.set_last_nodeinfo(row["domain"]) instances.update(row["domain"]) cnt = cnt + 1 -- 2.39.5