From: Shivani Bhardwaj Date: Wed, 9 Oct 2019 18:26:30 +0000 (+0530) Subject: Fix check-versions command X-Git-Tag: 1.1.0~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=302aa004bee37c7abad49a104c74ba23483061a7;p=thirdparty%2Fsuricata-update.git Fix check-versions command This patch addresses the following issues: 1. Checks wherever code could fail 2. Proper handling of dev and stable versions 3. Small optimizations --- diff --git a/suricata/update/commands/checkversions.py b/suricata/update/commands/checkversions.py index c4f0bdb..98a0f38 100644 --- a/suricata/update/commands/checkversions.py +++ b/suricata/update/commands/checkversions.py @@ -26,33 +26,38 @@ def register(parser): def check_version(suricata_version): + if "dev" in suricata_version.full: + logger.warning("Development version of Suricata found: %s. " + "Skipping version check.", suricata_version.full) + return + index_filename = sources.get_index_filename() if not os.path.exists(index_filename): logger.warning("No index exists, will use bundled index.") logger.warning("Please run suricata-update update-sources.") index = sources.Index(index_filename) version = index.get_versions() - recommended = engine.parse_version(version['suricata']['recommended']) - if suricata_version.full in recommended.full: - logger.info("Suricata version %s is up to date", suricata_version.full) - elif suricata_version.short > recommended.short: - return None - elif "dev" in suricata_version.full: - if (suricata_version.short not in recommended.short or - suricata_version.short not in version['suricata']) and \ - float(suricata_version.short) < float(recommended.short): - logger.warning( - "Suricata version %s has reached EOL. Please upgrade to %s.", + recommended = engine.parse_version(version["suricata"]["recommended"]) + if not recommended: + logger.error("Recommended version was not parsed properly") + sys.exit(1) + # In case index is out of date + if float(suricata_version.short) > float(recommended.short): + return + # Evaluate if the installed version is present in index + upgrade_version = version["suricata"].get(suricata_version.short) + if not upgrade_version: + logger.warning("Suricata version %s has reached EOL. Please upgrade to %s.", suricata_version.full, recommended.full) - elif float(suricata_version.short) >= float(recommended.short): - logger.info( - "Suricata version %s is up to date", suricata_version.full) - elif suricata_version.short in version['suricata'] and \ - suricata_version.full not in recommended.full: + return + if suricata_version.full == upgrade_version: + logger.info("Suricata version %s is up to date", suricata_version.full) + elif upgrade_version == recommended.full: logger.warning( "Suricata version %s is outdated. Please upgrade to %s.", suricata_version.full, recommended.full) else: logger.warning( - "Suricata version %s has reached EOL. Please upgrade to %s.", - suricata_version.full, recommended.full) + "Suricata version %s is outdated. Please upgrade to %s or %s.", + suricata_version.full, upgrade_version, recommended.full) + diff --git a/suricata/update/sources.py b/suricata/update/sources.py index f0ce708..78b5cbb 100644 --- a/suricata/update/sources.py +++ b/suricata/update/sources.py @@ -134,7 +134,8 @@ class Index: try: return self.index["versions"] except KeyError: - raise Exception("Version information not in index") + logger.error("Version information not in index") + sys.exit(1) def load_source_index(config): return Index(get_index_filename())