From 554840dfce0479d5b933fc833b7dd8c8df4d10d7 Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Fri, 30 Jul 2021 20:27:40 +0200
Subject: [PATCH] update project

---
 agent_based/inv_cisco_bug.py           |   2 +-
 agent_based/inv_cisco_contract.py      |  51 +-----
 agent_based/inv_cisco_eox.py           |  47 +-----
 agent_based/inv_cisco_psirt.py         |   8 +-
 agent_based/utils/inv_cisco_support.py | 222 +++++++++++++++++++++++++
 bin/ciscoapi/cisco-bug.py              | 116 -------------
 bin/ciscoapi/cisco-psirt.py            | 162 +++++++++++-------
 inv_cisco_support.mkp                  | Bin 27295 -> 26294 bytes
 packages/inv_cisco_support             |   6 +-
 web/plugins/views/inv_cisco_support.py |   3 +-
 10 files changed, 354 insertions(+), 263 deletions(-)
 create mode 100644 agent_based/utils/inv_cisco_support.py

diff --git a/agent_based/inv_cisco_bug.py b/agent_based/inv_cisco_bug.py
index 65d869b..57a1f45 100644
--- a/agent_based/inv_cisco_bug.py
+++ b/agent_based/inv_cisco_bug.py
@@ -36,7 +36,7 @@ from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
     InventoryResult,
 )
 
-from cmk.base.plugins.agent_based.utils.ciscoapi import (
+from cmk.base.plugins.agent_based.utils.inv_cisco_support import (
     set_loglevel,
     expand_path,
     get_base_path,
diff --git a/agent_based/inv_cisco_contract.py b/agent_based/inv_cisco_contract.py
index 52d543f..280ac8d 100644
--- a/agent_based/inv_cisco_contract.py
+++ b/agent_based/inv_cisco_contract.py
@@ -19,12 +19,8 @@
 #             cleanup create_sn2info_record
 # 2021-07-24: rewritten for CMK 2.0
 # 2021-07-25: some cleanup
+# 2021-07-30: moved parse function to utils
 #
-#  ToDo: parse function and SNMP section can be shared between inv_cisco_eox and inv_cisco_contract
-#        pro: only one section/parse function
-#        con: with only one pare function these plugins can not disabled separately
-#        solution: separate SNMP section, common parse function
-# ToDo: error handling for json.load -> in eox/contract pass, in psirt/bug -> exit
 # ToDo: exit codes ??
 #
 import os
@@ -32,7 +28,6 @@ import json
 import time
 
 from typing import Dict
-from dataclasses import dataclass
 
 from cmk.base.plugins.agent_based.agent_based_api.v1 import (
     register,
@@ -43,30 +38,27 @@ from cmk.base.plugins.agent_based.agent_based_api.v1 import (
     TableRow,
 )
 from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
-    StringTable,
     InventoryResult,
 )
 
-from cmk.base.plugins.agent_based.utils.ciscoapi import (
+from cmk.base.plugins.agent_based.utils.inv_cisco_support import (
     expand_path,
-    check_bad_serial,
     pid_on_black_list,
     set_pid_black_list,
     get_base_path,
+    parse_inv_cisco_contract_eox,
+    SnmpContractEntry,
 )
 
 
-@dataclass
-class SnmpContractEntry:
-    phydescr: str
-    pid: str
-
-
 def _create_sn2info_record(sn2infofile, optional_columns):
     sn2info = {}
     if os.path.isfile(sn2infofile):
         with open(sn2infofile) as f:
-            sn2inforecord = json.load(f)
+            try:
+                sn2inforecord = json.load(f)
+            except ValueError as e:
+                return {'serial_number': f'json load error {e}'}
 
         modifytime = os.path.getmtime(sn2infofile)
         sn2info.update({'Last_checked': time.strftime('%Y-%m-%d', time.localtime(modifytime))})
@@ -95,31 +87,6 @@ def _create_sn2info_record(sn2infofile, optional_columns):
     return sn2info
 
 
-def parse_inv_cisco_contract(string_table: StringTable) -> Dict[str, SnmpContractEntry]:
-    serials: Dict[str, SnmpContractEntry] = {}
-    for phydescr, physerialnum, phymodelname in string_table:
-        if not check_bad_serial(physerialnum):
-            if not pid_on_black_list(phymodelname):
-                phymodelname = phymodelname.strip()
-                physerialnum = physerialnum.strip()
-                if phymodelname == '':
-                    phymodelname = 'UNSPECIFIED'
-                pid = phymodelname.split()[0].upper()
-                serial = physerialnum.split()[0].upper()
-                if serial not in serials.keys():
-                    serials.update({serial: SnmpContractEntry(
-                        phydescr=phydescr,
-                        pid=pid
-                    )})
-                else:
-                    temp = serials[serial]
-                    temp.phydescr = ', '.join(list(set(temp.phydescr.split(', ') + [phydescr])))
-                    temp.pid = ', '.join(list(set(temp.pid.split(', )') + [pid])))
-                    serials[serial] = temp
-
-    return serials
-
-
 def inventory_cisco_contract(params, section: Dict[str, SnmpContractEntry]) -> InventoryResult:
     optionalcolumns = [
         'contract_site_state_province',
@@ -178,7 +145,7 @@ def inventory_cisco_contract(params, section: Dict[str, SnmpContractEntry]) -> I
 
 register.snmp_section(
     name='inv_cisco_contract',
-    parse_function=parse_inv_cisco_contract,
+    parse_function=parse_inv_cisco_contract_eox,
     fetch=SNMPTree(
         base='.1.3.6.1.2.1.47.1.1.1.1',  # ENTITY-MIB::entPhysicalEntry
         oids=[
diff --git a/agent_based/inv_cisco_eox.py b/agent_based/inv_cisco_eox.py
index 6827dc1..58bcccf 100644
--- a/agent_based/inv_cisco_eox.py
+++ b/agent_based/inv_cisco_eox.py
@@ -19,13 +19,13 @@
 #             moved node tree from hardware.system.support to hardware.system
 # 2021-07-23: rewrite for CMK 2.0
 # 2021-07-26: cleanup
+# 2021-07-30: moved parse function to utils
 
 import os
 import json
 import time
 
 from typing import Dict
-from dataclasses import dataclass
 
 from cmk.base.plugins.agent_based.agent_based_api.v1 import (
     register,
@@ -36,34 +36,30 @@ from cmk.base.plugins.agent_based.agent_based_api.v1 import (
     TableRow,
 )
 from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
-    StringTable,
     InventoryResult,
 )
 
-# from cmk.base.plugins.agent_based.utils import ciscoapi as utils
-from cmk.base.plugins.agent_based.utils.ciscoapi import (
+from cmk.base.plugins.agent_based.utils.inv_cisco_support import (
     expand_path,
-    check_bad_serial,
     pid_on_black_list,
     sn_on_black_list,
     pid_on_bad_list,
     set_pid_bad_list,
     set_sn_black_list,
     get_base_path,
+    parse_inv_cisco_contract_eox,
+    SnmpContractEntry,
 )
 
 
-@dataclass
-class SnmpContractEntry:
-    phydescr: str
-    pid: str
-
-
 def _create_eox_record(eoxfile, optional_columns):
     eox = {}
     if os.path.isfile(eoxfile):
         with open(eoxfile) as f:
-            eoxrecord = json.load(f)
+            try:
+                eoxrecord = json.load(f)
+            except ValueError as e:
+                return {}
 
         modifytime = os.path.getmtime(eoxfile)
 
@@ -104,31 +100,6 @@ def _create_eox_record(eoxfile, optional_columns):
     return eox
 
 
-def parse_inv_cisco_eox(string_table: StringTable) -> Dict[str, SnmpContractEntry]:
-    serials: Dict[str, SnmpContractEntry] = {}
-    for phydescr, physerialnum, phymodelname in string_table:
-        if not check_bad_serial(physerialnum):
-            if not pid_on_black_list(phymodelname):
-                phymodelname = phymodelname.strip()
-                physerialnum = physerialnum.strip()
-                if phymodelname == '':
-                    phymodelname = 'UNSPECIFIED'
-                pid = phymodelname.split()[0].upper()
-                serial = physerialnum.split()[0].upper()
-                if serial not in serials.keys():
-                    serials.update({serial: SnmpContractEntry(
-                        phydescr=phydescr,
-                        pid=pid
-                    )})
-                else:
-                    temp = serials[serial]
-                    temp.phydescr = ', '.join(list(set(temp.phydescr.split(', ') + [phydescr])))
-                    temp.pid = ', '.join(list(set(temp.pid.split(', )') + [pid])))
-                    serials[serial] = temp
-
-    return serials
-
-
 def inventory_cisco_eox(params, section: Dict[str, SnmpContractEntry]) -> InventoryResult:
     always_use_serial = False
     optionalcolumns = ['EndOfSecurityVulSupportDate',
@@ -268,7 +239,7 @@ def inventory_cisco_eox(params, section: Dict[str, SnmpContractEntry]) -> Invent
 
 register.snmp_section(
     name='inv_cisco_eox',
-    parse_function=parse_inv_cisco_eox,
+    parse_function=parse_inv_cisco_contract_eox,
     fetch=SNMPTree(
         base='.1.3.6.1.2.1.47.1.1.1.1',  # ENTITY-MIB::entPhysicalEntry
         oids=[
diff --git a/agent_based/inv_cisco_psirt.py b/agent_based/inv_cisco_psirt.py
index 26955bd..6348315 100644
--- a/agent_based/inv_cisco_psirt.py
+++ b/agent_based/inv_cisco_psirt.py
@@ -44,7 +44,7 @@ from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
     InventoryResult,
 )
 
-from cmk.base.plugins.agent_based.utils.ciscoapi import (
+from cmk.base.plugins.agent_based.utils.inv_cisco_support import (
     expand_path,
     get_base_path,
 )
@@ -61,7 +61,11 @@ def _create_psirt_record(filepath, filename, not_updated, dont_show_older_then,
     advisories = {}
     if os.path.isfile(psirtfile):
         with open(psirtfile) as f:
-            psirtrecord = json.load(f)
+            try:
+                psirtrecord = json.load(f)
+            except ValueError as e:
+                    exit()
+
         advisories = psirtrecord.get('advisories')
         remove_advisories = []
         for advisory in advisories:
diff --git a/agent_based/utils/inv_cisco_support.py b/agent_based/utils/inv_cisco_support.py
new file mode 100644
index 0000000..958bf73
--- /dev/null
+++ b/agent_based/utils/inv_cisco_support.py
@@ -0,0 +1,222 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2017-03-20
+#
+# include file, will be used with snmp_cisco_eox and snmp_cisco_contract
+#
+# 2017-05-29: fixed empty pid handling
+#             added serial number cleanup
+# 2021-07-23: rewrite for CMK 2.0
+# 2021-07-30: renamed form ciscoapi.py to inv_cisco_support.py
+
+import os
+import logging
+import re
+import json
+from typing import List, Dict
+from dataclasses import dataclass
+
+from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
+    StringTable,
+)
+
+
+@dataclass
+class SnmpContractEntry:
+    phydescr: str
+    pid: str
+
+#
+# global variables
+#
+# list of PIDs to drop
+g_PID_black_list = ['BUILT-IN', 'MICRON', 'C400-MTFDD']
+# list of PIDs to try by serial number
+g_PID_bad_list = ['UNSPECIFIED', 'FABRIC', 'ASA', 'C2611XM-2FE', 'FTLX8570D3BCL', 'FTLF8519P2BCL', 'FTLX8571D3BCL',
+                  'FTRJ-8519-7D', 'PLRXPL-SC-S43']  #
+# list of S/Ns to drop
+g_SN_black_list = []
+
+
+def parse_inv_cisco_contract_eox(string_table: StringTable) -> Dict[str, SnmpContractEntry]:
+    serials: Dict[str, SnmpContractEntry] = {}
+    for phydescr, physerialnum, phymodelname in string_table:
+        if not check_bad_serial(physerialnum):
+            if not pid_on_black_list(phymodelname):
+                phymodelname = phymodelname.strip()
+                physerialnum = physerialnum.strip()
+                if phymodelname == '':
+                    phymodelname = 'UNSPECIFIED'
+                pid = phymodelname.split()[0].upper()
+                serial = physerialnum.split()[0].upper()
+                if serial not in serials.keys():
+                    serials.update({serial: SnmpContractEntry(
+                        phydescr=phydescr,
+                        pid=pid
+                    )})
+                else:
+                    temp = serials[serial]
+                    temp.phydescr = ', '.join(list(set(temp.phydescr.split(', ') + [phydescr])))
+                    temp.pid = ', '.join(list(set(temp.pid.split(', )') + [pid])))
+                    serials[serial] = temp
+
+    return serials
+
+
+def get_base_path() -> str:
+    conf_file = os.path.expanduser('~/etc/ciscoapi/ciscoapi.json')
+    base_path = '~/var/ciscoapi'
+    # check for conf_file and read parameters
+    if os.path.isfile(conf_file):
+        with open(conf_file) as f:
+            try:
+                config = json.load(f)
+                base_path = config['global'].get('base_dir', base_path)
+            except ValueError as e:
+                logging.warning(f'inv_cisco_contract:status:JSON load error: {e}')
+    return base_path
+
+
+def set_pid_black_list(pid_black_list: List[str]):
+    global g_PID_black_list
+    if pid_black_list:
+        g_PID_black_list = list(set(g_PID_black_list + pid_black_list))
+
+
+def set_pid_bad_list(pid_bad_list: List[str]):
+    global g_PID_bad_list
+    if pid_bad_list:
+        g_PID_bad_list = list(set(g_PID_bad_list + pid_bad_list))
+
+
+def set_sn_black_list(sn_black_list: List[str]):
+    global g_SN_black_list
+    if sn_black_list:
+        g_SN_black_list = list(set(g_SN_black_list + sn_black_list))
+
+
+def check_dir_and_create(directory: str) -> bool:
+    """
+    check if dir exists, if not try to create it.
+
+    Args:
+        directory:
+
+    Returns:
+        True: if dir exists or creation was ok
+        False: if dir not exists and creation was not ok
+    """
+    directory = os.path.dirname(directory)
+    if not os.path.exists(directory):
+        try:
+            os.makedirs(directory)
+        except:
+            return False
+    return True
+
+
+def expand_path(path: str) -> str:
+    """
+    expand user dir and add '/' if necessary and create directory if it not exists
+    """
+    homedir = os.path.expanduser('~')
+    if path.startswith('~'):
+        path = homedir + path[1:]
+    if not path.endswith('/'):
+        path += '/'
+    if not check_dir_and_create(path):
+        return ''
+    return path
+
+
+def sn_on_black_list(serial: str) -> bool:
+    """
+    Checks if serial on black list
+
+    Args:
+        serial: the serial number to check
+
+    Returns:
+        True: if serial number on black list
+        False: if serial number is not on black list
+    """
+    global g_SN_black_list
+    if serial.upper() in g_SN_black_list:
+        return True
+    return False
+
+
+def pid_on_black_list(pid: str) -> bool:
+    """
+    returns True if pid on black list
+    """
+    global g_PID_black_list
+    for drop_PID in g_PID_black_list:
+        if pid.startswith(drop_PID.upper()):
+            return True
+    # if PID not on Black list return false
+    return False
+
+
+def pid_on_bad_list(pid: str) -> bool:
+    """
+    returns True if PID on Bad list
+    """
+    global g_PID_bad_list
+    # remove all chars from string, except allowedchars
+    allowedchars = re.compile('[^A-Z0-9_=\/\-\+\.\\\]')
+    cleanpid = allowedchars.sub('', pid).strip().upper()
+
+    # if PID contains illegal signs or if pid empty try by serial number
+    if (cleanpid != pid) or (cleanpid == ''):
+        return True
+
+    # list of bad PIDs :-( we need to try get EoX info via serial number for this PIDs
+    # needs to be configurable via a file if too big for wato ;-(
+    for bad_PID in g_PID_bad_list:
+        if pid.startswith(bad_PID):
+            return True
+
+    return False
+
+
+def check_bad_serial(serial: str) -> bool:
+    """
+    Checks a serial number for illegal signs (anything except A-Z0-9_=-+.\)
+
+    Args:
+        serial: serial number to check
+
+    Returns:
+        False: if serial number is ok
+        True: if serial number contains bad signs
+    """
+    logging.info('Check_bad_serial:serial: %s' % serial)
+    serial = serial.replace(' ', '').upper()
+
+    # remove all chars from string, except allowedchars
+    allowedchars = re.compile('[^A-Z0-9_=\-\+\.\\\]')
+    cleanserial = allowedchars.sub('', serial).strip()
+
+    logging.info('Check_bad_serial:cleanserial: %s' % cleanserial)
+
+    # if serial contains illegal signs or empty return true
+    if (cleanserial != serial) or (cleanserial == ''):
+        logging.info('Check_bad_serial:bad:serial is bad')
+
+        return True
+
+    logging.info('Check_bad_serial:serial is god')
+    return False
+
+
+def set_loglevel():
+    # set default logglevel
+    logging.basicConfig(level=logging.WARNING)
+    # has no effect as long previous command is active (is by design)
+    logging.basicConfig(level=logging.INFO)
diff --git a/bin/ciscoapi/cisco-bug.py b/bin/ciscoapi/cisco-bug.py
index c0491bd..9ddbb7f 100755
--- a/bin/ciscoapi/cisco-bug.py
+++ b/bin/ciscoapi/cisco-bug.py
@@ -249,122 +249,6 @@ def main():
         else:
             reqoptions = ''
 
-        # pids_requested = {
-        #     # 'ISR4431/K9': '03.16.05.S,03.16.04b.S',  # 03.16.05.S,03.16.04b.S
-        #     # 'ISR-AP1100AC-E': '8.5.110.0',
-        #     #
-        #     # 'WS-X4013+TS': '12.2(25)SG4',  # --> not in database
-        #     # 'WS-C3750G-24TS-1U': '12.2(55)SE8',  # WS-C3750G-24TS-E1U --> wrong PID from inventory??
-        #     #
-        #     # 'C1861W-UC-2BRI-K9': '15.1(4)M12a',  # pid not in database (only 1861 and 1861E not W...)
-        #     # 'C6800IA-48TD': '15.0(2)EX7',
-        #     # 'C6880-X-LE-16P10G': '15.1(2)SY4a',
-        #     # 'C6880-X-LE-SUP': '15.1(2)SY4a',
-        #     # 'CISCO2801': '15.1(4)M12a',
-        #     # 'CISCO891-K9': '15.3(3)M3,15.3(3)M2',
-        #     # 'WS-C2960S-F24TS-L': '15.0(2)SE10a,15.0(2)SE6',
-        #     # 'WS-C2960S-F48TS-L': '15.0(2)SE10a,15.0(2)SE11,15.0(2)SE6',
-        #     # 'CISCO888-K9': '15.1(4)M4,15.1(4)M5,15.3(3)M4',
-        #     # 'WS-C2960G-24TC-L': '12.2(55)SE1,12.2(44)SE6',
-        #     # 'CISCO881-K9': '15.2(4)M6a,15.4(3)M6a',
-        #     # 'CISCO871-K9': '12.4(24)T8,12.4(15)T12,15.1(4)M8',
-        #     # 'WS-C2960PD-8TT-L': '15.0(2)SE6,12.2(55)SE12,15.0(2)SE10a',
-        #     #
-        #     # 'N3K-C3064PQ-10GX': '7.0(3)I4(4)',
-        #     # 'N5K-C5548UP': '7.0(8)N1(1)',
-        #     # 'N5K-C5596UP': '7.3(2)N1(1)',
-        #     # 'N5K-C56128P': '7.3(0)N1(1)',
-        #     # 'N5K-C5672UP': '7.0(8)N1(1)',
-        #     #
-        #     # 'CISCO3845-MB': '12.4(15)T13',
-        #     # 'WS-C2960-24TC-L': '12.2(44)SE6',
-        #     # 'WS-C3750-24PS-S': '12.2(35)SE5',
-        #     # 'WS-C3750G-12S-E': '12.2(55)SE8',
-        #     # 'WS-C3750G-24PS-S': '12.2(55)SE1',
-        #     #
-        #     # 'N9K-C93180YC-EX': '13.2(2o)',
-        #     # 'N9K-C9336PQ': '13.2(2o)',
-        #     #
-        #     # 'APIC-SERVER-M2': '3.2(2o)',
-        #     # 'C891F-K9': '15.3(3)M4',
-        #     # 'CISCO1941/K9': '15.0(1)M7',
-        #     # 'CISCO876W-G-E-K9': '15.1(4)M10',
-        #     # 'CISCO881-SEC-K9': '15.2(4)M6a',
-        #     # 'CISCO892-K9': '15.1(4)M5',
-        #     # 'WS-C2960X-24TD-L': '15.2(2)E3',
-        #     # 'WS-C2960X-24TS-LL': '15.2(2)E5',
-        #     # 'WS-C2960X-48FPD-L': '15.0(2)EX5',
-        #     # 'WS-C2960X-48FPS-L': '15.0(2)EX5',
-        #     # 'WS-C2960X-48LPD-L': '15.2(2)E3',
-        #     # 'WS-C2960X-48TS-LL': '15.2(6)E',
-        #     # 'WS-C3560CG-8TC-S': '15.2(2)E8',
-        #     # 'WS-C3750G-48TS-S': '15.0(2)SE6',
-        #     # 'WS-SUP720-3B': '15.1(2)SY2',
-        #     #
-        #     # 'WS-C3850-12S': '03.03.04SE',  # 3.3(4)SE
-        #     # 'WS-C3650-24TS-S': '03.07.02E',  # 3.7(2)E
-        #     # 'WS-C3650-48TQ': '03.03.05SE',  # 3.3(5)SE
-        #     #
-        #     # 'C9500-40X': '16.8.1a',
-        #     # 'C1117-4PMLTEEAWE': '16.09.01',
-        #     # 'ISR4351/K9': '16.09.01',
-        #     # 'ASR1001-X': '16.05.01b',
-        #     # 'ISR4451-X/K9': '16.05.01b',
-        #     # 'C9300-48T': '16.06.03',
-        #     #
-        #     # 'ASA5505': '8.4(4)1',
-        #     # 'ASA5506W': '9.9(2)1',
-        #     # 'ASA5508': '9.6(1)5,9.6(1)10',
-        #     # 'ASA5510': '9.1(6)1,8.4(7)30,9.1(7)15',
-        #     'ASA5512': '9.6(1),9.2(2)4,9.6(3)8',
-        #     # 'ASA5515': '9.8(1)5,9.9(2)14',
-        #     # 'ASA5520': '9.1(6)11',
-        #     # 'ASA5525': '9.8(1)',
-        #     # 'ASA5550': '9.1(5)',
-        #     # 'ASA5555': '9.9(1)2,9.7(1)4',
-        #     # 'PIX-515E': '8.0(4)32',  # pix is not in database
-        #     #
-        #     # 'AIR-CT5520-K9': '8.0(152.0),8.2(166.0),8.2(100.0)',
-        #     # 'AIR-AP1852E-E-K9': '8.2.100.0',
-        #     # 'AIR-CT2504-K9': '8.5.120.0',
-        # }
-
-
-
-        #
-        # try to get product series and get bugs by product series --> does not realy work :-(
-        #
-        #  product_series_mdf = ciscoapi.get_product_mdf_information_by_pid(pids_requested.keys(), access_token)
-        # pid_product_series = {}
-        # for entry in product_series_mdf:
-        #     pid_product_series.update({entry.get('product_id'):entry.get('product_series')})
-        #
-        # product_series_release = {}
-        # for pid in pid_product_series.keys():
-        #     if pid_product_series.get(pid) != '':
-        #         if product_series_release.get(pid_product_series.get(pid), '') == '':
-        #             product_series_release.update({pid_product_series.get(pid): pids_requested.get(pid)})
-        #         else:
-        #             release = product_series_release.get(pid_product_series.get(pid)) + ',' + pids_requested.get(pid)
-        #             product_series_release.update({pid_product_series.get(pid): release})
-        #
-        # for product_series in product_series_release.keys():
-        #     release = product_series_release.get(product_series)
-        #     release = release.split(',')
-        #     release_clean = []
-        #     for entry in release:
-        #         if entry not in release_clean:
-        #             release_clean.append(entry)
-        #     product_series_release.update({product_series: ','.join(release_clean)})
-
-        # print 'get bugs by product series and release'
-        # bugs = ciscoapi.get_bug_by_productseries_and_affected_release(product_series_release, access_token, reqoptions)
-        #
-        # end product series
-        #
-
-        # print 'get bugs by PID and release'
-
         for pid in pids_requested.keys():
             if lifetime > int(time.time()):
                 access_token, lifetime = get_new_token()
diff --git a/bin/ciscoapi/cisco-psirt.py b/bin/ciscoapi/cisco-psirt.py
index e60eee0..cc1caa6 100755
--- a/bin/ciscoapi/cisco-psirt.py
+++ b/bin/ciscoapi/cisco-psirt.py
@@ -12,39 +12,66 @@
 #
 #
 import logging
+import ntpath
 import os
 import json
 import time
 import ciscosupport
 import ciscoapi
 import sys
+from typing import List
+from dataclasses import dataclass
 
 
-def psirt_remove_id_file(psirt_path, psirt_id):
-    # set logg modul name <file>:<module>.<function>
+@dataclass
+class Paths:
+    found: str
+    not_found: str
+    request: str
+
+
+@dataclass
+class Refresh:
+    found: int
+    not_found: int
+
+
+g_logger = None
+
+
+def _psirt_remove_id_file(psirt_path: str, psirt_id: str):
+    # set logg module name <file>:<module>.<function>
     logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
 
     # delete psirt file
     try:
-        logger.debug('delete psirt id file : %s' % psirt_path + psirt_id)
+        logger.debug(f'delete psirt id file : {psirt_path + psirt_id}')
         os.remove(psirt_path + psirt_id)
     except OSError:
         pass
 
 
-def psirt_dump_record(psirt_record, psirt_id, psirt_path, psirt_path_request):
+def _psirt_dump_record(psirt_record, psirt_id: str, psirt_path: str, psirt_path_request: str):
     # set logg modul name <file>:<module>.<function>
     logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
 
     with open(psirt_path + psirt_id, 'w') as f:
         json.dump(psirt_record, f)
     # delete request file
-    psirt_remove_id_file(psirt_path_request, psirt_id)
+    _psirt_remove_id_file(psirt_path_request, psirt_id)
 
     return
 
 
-def check_psirt_record(psirt_record, psirt_id, psirt_path_found, psirt_path_request):
+def _check_psirt_record(psirt_record, psirt_id, psirt_path_found, psirt_path_request):
+    """
+
+    :param psirt_record:
+    :param psirt_id:
+    :param psirt_path_found:
+    :param psirt_path_request:
+    :returns:
+    """
     # set logg modul name <file>:<module>.<function>
     logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
 
@@ -61,53 +88,64 @@ def check_psirt_record(psirt_record, psirt_id, psirt_path_found, psirt_path_requ
             if advisory.get(key, None) in [['NA'], 'NA']:
                 advisory.pop(key, None)
 
-    psirt_dump_record(psirt_record, psirt_id, psirt_path_found, psirt_path_request)
+    _psirt_dump_record(psirt_record, psirt_id, psirt_path_found, psirt_path_request)
+
+    return
+
 
+def _get_psirt_id_list(product_family: str, paths: Paths, refresh: Refresh) -> List[str]:
+    """
+
+    @param product_family:
+    @param paths: Path object with path to founnd/not found/requested PSIRT records
+    @param refresh: Refresh object with number of days before a PSIRT record needs to be refreshed for found/not found
+    @return: list of PIDs
+    """
+    # create list of ID's to request PSIRT status for
+    psirt_id_list = ciscosupport.get_ids_from_dir(paths.request + product_family)
+    g_logger.debug(f'psirt requests : {psirt_id_list}')
+    # remove already found ID's from list
+    psirt_id_list = ciscosupport.remove_ids_from_list(psirt_id_list, paths.found + product_family)
+    g_logger.debug(f'psirt requests : {psirt_id_list}')
+    # remove not found ID's from list
+    psirt_id_list = ciscosupport.remove_ids_from_list(psirt_id_list, paths.not_found + product_family)
+    g_logger.debug(f'psirt requests : {psirt_id_list}')
+
+    # refresh psirt after 1 day by default
+    psirt_id_list = ciscosupport.refresh_ids_from_dir(paths.not_found + product_family, refresh.not_found,
+                                                      psirt_id_list, True)
+    g_logger.debug(f'psirt requests : {psirt_id_list}')
+    psirt_id_list = ciscosupport.refresh_ids_from_dir(paths.found + product_family, refresh.found,
+                                                      psirt_id_list, False)
+    g_logger.debug(f'psirt requests : {psirt_id_list}')
+
+    return psirt_id_list
+
+
+def _update_psirt_id(psirt_records: list, family_name: str, paths: Paths):
+    for psirt_record in psirt_records:
+        if family_name in ['IOS', 'IOS-XE']:
+            psirt_id = psirt_record.get('version')
+        else:
+            psirt_id = psirt_record.get('family')
+
+        if psirt_record.get('advisories') != 'notfound':
+            _check_psirt_record(psirt_record, psirt_id, paths.found + family_name + '/',
+                                ntpath.sep + family_name + '/')
+        else:
+            _psirt_dump_record(psirt_record, psirt_id, paths.not_found + family_name + '/',
+                               paths.request + family_name + '/')
+            # remove psirt_found file (happens when product family is removed form bug ID)
+            _psirt_remove_id_file(paths.found + family_name + '/', psirt_id)
     return
 
 
 def main():
-    def get_psirt_id_list(product_family):
-        # create list of ID's to request PSIRT status for
-        psirt_id_list = ciscosupport.get_ids_from_dir(path_request + product_family)
-        logger.debug('psirt requests : %s' % psirt_id_list)
-        # remove already found ID's from list
-        psirt_id_list = ciscosupport.remove_ids_from_list(psirt_id_list, path_found + product_family)
-        logger.debug('psirt requests : %s' % psirt_id_list)
-        # remove not found ID's from list
-        psirt_id_list = ciscosupport.remove_ids_from_list(psirt_id_list, path_not_found + product_family)
-        logger.debug('psirt requests : %s' % psirt_id_list)
-
-        # refresh psirt after 1 day by default
-        psirt_id_list = ciscosupport.refresh_ids_from_dir(path_not_found + product_family, psirt_refresh_notfound,
-                                                          psirt_id_list, True)
-        logger.debug('psirt requests : %s' % psirt_id_list)
-        psirt_id_list = ciscosupport.refresh_ids_from_dir(path_found + product_family, psirt_refresh_found,
-                                                          psirt_id_list, False)
-        logger.debug('psirt requests : %s' % psirt_id_list)
-
-        return psirt_id_list
-
-    def update_psirt_id(psirt_records, family_name):
-        for psirt_record in psirt_records:
-            if family_name in ['IOS', 'IOS-XE']:
-                psirt_id = psirt_record.get('version')
-            else:
-                psirt_id = psirt_record.get('family')
-
-            if psirt_record.get('advisories') != 'notfound':
-                check_psirt_record(psirt_record, psirt_id, path_found + family_name + '/',
-                                   path_request + family_name + '/')
-            else:
-                psirt_dump_record(psirt_record, psirt_id, path_not_found + family_name + '/',
-                                  path_request + family_name + '/')
-                # remove psirt_found file (happens when product family is removed form bug ID)
-                psirt_remove_id_file(path_found + family_name + '/', psirt_id)
-        return
+    global g_logger
 
     ciscosupport.set_logging('debug')
     # set logg modul name <file>:<module>.<function>
-    logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
+    g_logger = logging.getLogger(__file__ + ':' + __name__ + '.' + sys._getframe().f_code.co_name)
 
     conf_file = '~/etc/ciscoapi/ciscoapi.json'
     conf_file = os.path.expanduser(conf_file)
@@ -136,30 +174,34 @@ def main():
                 logging.warning(f'snmp_cisco_eox:status:JSON load error: {e}')
                 exit()
 
-        wait_after_start = config['global'].get('base_path', base_path)
+        base_path = config['global'].get('base_path', base_path)
         wait_after_start = config['global'].get('wait_after_start', wait_after_start)
         max_wait_time = config['global'].get('max_wait_time', max_wait_time)
         loglevel = config['global'].get('loglevel', loglevel)
-        psirt_refresh_found = config['psirt'].get('psirt_refresh_found', psirt_refresh_found)
-        psirt_refresh_notfound = config['psirt'].get('psirt_refresh_notfound', psirt_refresh_notfound)
+        refresh = Refresh(
+            found=config['psirt'].get('psirt_refresh_found', psirt_refresh_found),
+            not_found=config['psirt'].get('psirt_refresh_notfound', psirt_refresh_notfound)
+        )
     else:
-        logger.critical('Config file not found (%s).' % conf_file)
+        g_logger.critical(f'Config file not found ({conf_file}).')
         return False
 
     ciscosupport.set_logging(loglevel)
 
     base_path = ciscosupport.expand_path(base_path)
     psirt_dir = base_path + 'psirt'
-    path_found = psirt_dir + '/found/'
-    path_not_found = psirt_dir + '/not_found/'
-    path_request = psirt_dir + '/request/'
+    paths = Paths(
+        found=psirt_dir + '/found/',
+        not_found= psirt_dir + '/not_found/',
+        request=psirt_dir + '/request/'
+    )
 
-    psirt_ios = get_psirt_id_list('IOS')
-    psirt_ios_xe = get_psirt_id_list('IOS-XE')
-    psirt_family = get_psirt_id_list('family')
+    psirt_ios = _get_psirt_id_list('IOS', paths, refresh)
+    psirt_ios_xe = _get_psirt_id_list('IOS-XE', paths, refresh)
+    psirt_family = _get_psirt_id_list('family', paths, refresh)
 
     if (psirt_ios == []) and psirt_ios_xe == [] and psirt_family == []:
-        logger.debug('all list are empty. Do nothing.')
+        g_logger.debug('all list are empty. Do nothing.')
         return
 
     # wait random time after startup
@@ -178,20 +220,20 @@ def main():
     lifetime = starttime + lifetime - 30
 
     if access_token == '':
-        logger.critical('failed to get access_token')
+        g_logger.critical('failed to get access_token')
         return
 
     if psirt_family != []:
         psirt_records = ciscoapi.get_psirt_by_product_family(psirt_family, access_token)
-        update_psirt_id(psirt_records, 'family')
+        _update_psirt_id(psirt_records, 'family', paths)
 
     if psirt_ios_xe != []:
         psirt_records = ciscoapi.get_psirt_by_iosxe_version(psirt_ios_xe, access_token)
-        update_psirt_id(psirt_records, 'IOS-XE')
+        _update_psirt_id(psirt_records, 'IOS-XE', paths)
 
     if psirt_ios != []:
         psirt_records = ciscoapi.get_psirt_by_ios_version(psirt_ios, access_token)
-        update_psirt_id(psirt_records, 'IOS')
+        _update_psirt_id(psirt_records, 'IOS', paths)
 
 
 main()
diff --git a/inv_cisco_support.mkp b/inv_cisco_support.mkp
index cdf4854337fad3c970f66c317fac6bc40f6cca77..8e7dc469ba328e35138cc5aee143c978dfc4277a 100644
GIT binary patch
literal 26294
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
V{j8t$vwjwS{vU`RbBqAc0stMVlrI1P

literal 27295
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
Y7vA%~C|6!o1-^crCh?p>JVQbJKXXc{%K!iX

diff --git a/packages/inv_cisco_support b/packages/inv_cisco_support
index d374c2a..16e4881 100644
--- a/packages/inv_cisco_support
+++ b/packages/inv_cisco_support
@@ -17,9 +17,9 @@
  'download_url': 'https://thl-cmk.hopto.org',
  'files': {'agent_based': ['inv_cisco_eox.py',
                            'inv_cisco_contract.py',
-                           'utils/ciscoapi.py',
                            'inv_cisco_bug.py',
-                           'inv_cisco_psirt.py'],
+                           'inv_cisco_psirt.py',
+                           'utils/inv_cisco_support.py'],
            'bin': ['ciscoapi/ciscoapi.py',
                    'ciscoapi/ciscosupport.py',
                    'ciscoapi/cisco-eox.py',
@@ -36,7 +36,7 @@
  'num_files': 17,
  'title': 'Inventory for Cisco Bug, EoX, contract status, PSIRT advisories and '
           'suggested software',
- 'version': '2021-07-25.v0.1a',
+ 'version': '2021-07-20.v0.1b',
  'version.min_required': '2.0.0',
  'version.packaged': '2021.07.14',
  'version.usable_until': None}
\ No newline at end of file
diff --git a/web/plugins/views/inv_cisco_support.py b/web/plugins/views/inv_cisco_support.py
index 01cfe89..f394139 100644
--- a/web/plugins/views/inv_cisco_support.py
+++ b/web/plugins/views/inv_cisco_support.py
@@ -127,7 +127,8 @@ def inv_paint_psirt_bugid(bugids):
         search_bugid_url = []
         for bugid in bugids:
             bugid = bugid.strip(' ')
-            search_bugid_url.append(f'<a class="href_blue" target="_blank" href="https://bst.cloudapps.cisco.com/bugsearch/bug/{bugid}">{bugid}</a>')
+            search_bugid_url.append(f'<a class="href_blue" target="_blank" '
+                                    f'href="https://bst.cloudapps.cisco.com/bugsearch/bug/{bugid}">{bugid}</a>')
         search_bugid_url = HTML(', '.join(search_bugid_url))
     return '', search_bugid_url
 
-- 
GitLab