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.")
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")
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"])
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:
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