From d0bd245bba8237a35450bb27025a43c4b0931430 Mon Sep 17 00:00:00 2001
From: thl-cmk <thl-cmk@outlook.com>
Date: Mon, 22 Feb 2021 20:14:51 +0100
Subject: [PATCH] update project

---
 agent_based/checkpoint_inv_base.py | 138 +++++++++++++++++++++++++++++
 inv_checkpoint_base.mkp            | Bin 2288 -> 2276 bytes
 packages/inv_checkpoint_base       |   2 +-
 3 files changed, 139 insertions(+), 1 deletion(-)
 create mode 100644 agent_based/checkpoint_inv_base.py

diff --git a/agent_based/checkpoint_inv_base.py b/agent_based/checkpoint_inv_base.py
new file mode 100644
index 0000000..b74bd14
--- /dev/null
+++ b/agent_based/checkpoint_inv_base.py
@@ -0,0 +1,138 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# Author: thl-cmk[at]outlook[dot]com / thl-cmk.hopto.org
+#
+# Check Point base inventory
+#
+# 2016-06-29 : inventory Check Point Appliance
+# 2018-03-05 : added Patches, Deployment Agent Build
+# 2018-03-07 : added Licenses
+# 2020-06-01 : cleanup, prepared for cmk1.7x, rename from inv_checkpoint_svn to checkpoint_inv_base
+# 2020-11-27 : rewrite for CMK check API 1.0 (CMK 2.0)
+# 2020-11-28 : added available updates
+# 2021-02-08 : transfered license/support info to seperate plugin
+# 2021-02-22 : code cleanup
+#
+# sample string_table
+# [
+#  [
+#   ['5M7C043', 'Smart-1 5150', 'CheckPoint', 'Smart-1', 'R80.40', '994000022', 'Gaia', '3', '10']
+#  ], 
+#  [
+#   ['1959']
+#  ], 
+# ]
+#
+
+from typing import List, NamedTuple
+
+from .agent_based_api.v1.type_defs import (
+    StringTable,
+    InventoryResult,
+)
+from .agent_based_api.v1 import (
+    Attributes,
+    register,
+    SNMPTree,
+    startswith,
+    all_of,
+    any_of,
+    equals,
+)
+
+
+def parse_checkpoint_inv_base(string_table: List[StringTable]) -> List:
+    class CheckpointInvBaseInfo(NamedTuple):
+        serialnumber: str
+        productname: str
+        manufacturer: str
+        series: str
+        version: str
+        build: str
+        osname: str
+        osmajorver: str
+        osminorver: str
+
+    section = []
+    baseinfo = CheckpointInvBaseInfo(*string_table[0][0])
+    updateagentversion = string_table[1][0][0]
+
+    invPath = ['hardware', 'system']
+
+    if not baseinfo.serialnumber == '':
+        section.append((invPath, 'serial', baseinfo.serialnumber))
+    if not baseinfo.series == '':
+        section.append((invPath, 'appliance_series', baseinfo.series))
+    if not baseinfo.manufacturer == '':
+        section.append((invPath, 'manufacturer', baseinfo.manufacturer))
+    if not baseinfo.productname == '':
+        section.append((invPath, 'product_name', baseinfo.productname))
+
+    invPath = ['software', 'check_point', 'os_info']
+
+    if not baseinfo.version == '':
+        section.append((invPath, 'svn_version', baseinfo.version))
+    if not baseinfo.build == '':
+        section.append((invPath, 'svn_build', baseinfo.build))
+    if not baseinfo.osname == '':
+        section.append((invPath, 'os_name', baseinfo.osname))
+    if not baseinfo.osmajorver == '' and not baseinfo.osminorver == '':
+        section.append((invPath, 'os_version', baseinfo.osmajorver + '.' + baseinfo.osminorver))
+    if not updateagentversion == '':
+        section.append((invPath, 'deployment_agent_build', updateagentversion))
+
+    return section
+
+
+def inventory_checkpoint_base(section: List) -> InventoryResult:
+    class invEntry(NamedTuple):
+        invPath: list
+        key: str
+        value: str
+
+    for entry in section:
+        entry = invEntry(*entry)
+        yield Attributes(
+            path=entry.invPath,
+            inventory_attributes={entry.key: entry.value})
+
+
+register.snmp_section(
+    name='checkpoint_inv_base',
+    parse_function=parse_checkpoint_inv_base,
+    fetch=[
+        SNMPTree(
+            base='.1.3.6.1.4.1.2620.1.6',  # CHECKPOINT-MIB::svn
+            oids=[
+                '16.3',  # svnApplianceSerialNumber
+                '16.7',  # svnApplianceProductName
+                '16.9',  # svnApplianceManufacturer
+                '16.10',  # svnApplianceSeries
+                '4.1',  # svnVersion
+                '4.2',  # svnBuild
+                '5.1',  # osName
+                '5.2',  # osMajorVer
+                '5.3',  # osMinorVer
+            ]
+        ),
+        SNMPTree(
+            base='.1.3.6.1.4.1.2620.1.6.20',  # CHECKPOINT-MIB::svnUpdatesInfo
+            oids=[
+                '1',  # svnUpdatesInfoBuild
+            ]
+        ),
+    ],
+    detect=any_of(
+        startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.2620'),  # sysObjectID == CheckPoint
+        all_of(
+            equals('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.8072.3.2.10'),  # sysObjectID == Linux
+            equals('.1.3.6.1.4.1.2620.1.6.1.0', 'SVN Foundation'),  # CheckPoint software installed
+        )
+    )
+)
+
+register.inventory_plugin(
+    name='checkpoint_inv_base',
+    inventory_function=inventory_checkpoint_base,
+)
\ No newline at end of file
diff --git a/inv_checkpoint_base.mkp b/inv_checkpoint_base.mkp
index 20dc6690b5c35e7394492bc968a322f68a4438f0..d82c8c554090a0e1d8604bacee9a94afc98f4efe 100644
GIT binary patch
delta 2216
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

delta 2221
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

diff --git a/packages/inv_checkpoint_base b/packages/inv_checkpoint_base
index 09079b2..99eaf06 100644
--- a/packages/inv_checkpoint_base
+++ b/packages/inv_checkpoint_base
@@ -6,7 +6,7 @@
                 '- 2021-02-08: initial release\n'
                 '- 2021-02-22: code cleanup\n',
  'download_url': 'https://thl-cmk.hopto.org',
- 'files': {'lib': ['python3/cmk/base/plugins/agent_based/checkpoint_inv_base.py'],
+ 'files': {'agent_based': ['checkpoint_inv_base.py'],
            'web': ['plugins/views/checkpoint_base.py']},
  'name': 'inv_checkpoint_base',
  'num_files': 2,
-- 
GitLab