From df0a0d0de4205ef4812945a01e665c3c783c5cfb Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Sat, 4 Mar 2023 11:03:02 +0100
Subject: [PATCH] update project

---
 CHANGELOG                                |   1 +
 agent_based/checkpoint_fw_connections.py |   1 +
 checkpoint_fw_connections.mkp            | Bin 4617 -> 4671 bytes
 gui/metrics/checkpoint_fw_connections.py | 135 +++++++++++++++++++++++
 gui/wato/checkpoint_fw_connections.py    | 100 +++++++++++++++++
 packages/checkpoint_fw_connections       |  16 +--
 6 files changed, 245 insertions(+), 8 deletions(-)
 create mode 100644 gui/metrics/checkpoint_fw_connections.py
 create mode 100644 gui/wato/checkpoint_fw_connections.py

diff --git a/CHANGELOG b/CHANGELOG
index 6e98a36..31252d3 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -9,3 +9,4 @@
 2020-06-08: changed snmp-scan function
             code cleanup
 2022-11-30: WATO: fixed CheckParameterRulespecWithoutItem (from CheckParameterRulespecWithItem)
+2023-03-04: changed for CMK 2.1 (moved gui files from local/share/.. to local/lib/..)
diff --git a/agent_based/checkpoint_fw_connections.py b/agent_based/checkpoint_fw_connections.py
index 4f07e0a..ea85933 100644
--- a/agent_based/checkpoint_fw_connections.py
+++ b/agent_based/checkpoint_fw_connections.py
@@ -20,6 +20,7 @@
 # 2021-08-24: rewritten for CMK 2.0,
 #             added relative thresholds (idea and code based on cmk PR #312 by https://github.com/gradecke)
 #             added lower levels and admin_table_limit, removed default values except for 'levels_upper_relative'
+# 2023-03-04: changed for CMK 2.1 (moved gui files from local/share/.. to local/lib/..)
 #
 #
 # sample string_table
diff --git a/checkpoint_fw_connections.mkp b/checkpoint_fw_connections.mkp
index bacbe9fe31da4add1d2a3185d8eb0c73a6fadc27..4201b73e6891a94f92edcd26745ba6f61638831e 100644
GIT binary patch
literal 4671
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

literal 4617
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

diff --git a/gui/metrics/checkpoint_fw_connections.py b/gui/metrics/checkpoint_fw_connections.py
new file mode 100644
index 0000000..62d926b
--- /dev/null
+++ b/gui/metrics/checkpoint_fw_connections.py
@@ -0,0 +1,135 @@
+#!/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  : 2018-03-17
+#
+# Check Point Firewall connections metrics plugins
+# checkpoint_fw_connections
+#
+# 2023-02-18: moved metrics file from ~/local/share/check_mk/... to ~/local/lib/check_mk/...
+#
+
+from cmk.gui.i18n import _
+
+from cmk.gui.plugins.metrics.utils import (
+    metric_info,
+    graph_info,
+    perfometer_info,
+)
+
+metric_info['checkpoint_fw_connections_fwconnectionstcp'] = {
+    'title': _('TCP connections'),
+    'unit': '1/s',
+    'color': '11/a',
+}
+metric_info['checkpoint_fw_connections_fwconnectionsudp'] = {
+    'title': _('UDP connections'),
+    'unit': '1/s',
+    'color': '25/a',
+}
+metric_info['checkpoint_fw_connections_fwconnectionsicmp'] = {
+    'title': _('ICMP connections'),
+    'unit': '1/s',
+    'color': '31/a',
+}
+metric_info['checkpoint_fw_connections_fwconnectionsother'] = {
+    'title': _('Other connections'),
+    'unit': '1/s',
+    'color': '41/a',
+}
+metric_info['checkpoint_fw_connections_fwconnectionssum'] = {
+    'title': _('Total connections'),
+    'unit': '1/s',
+    'color': '15/a',
+}
+metric_info['checkpoint_fw_connections_fwconnectionrate'] = {
+    'title': _('Connections rate'),
+    'unit': '1/s',
+    'color': '22/a',
+}
+
+metric_info['checkpoint_fw_connections_fwcurrentnumconn'] = {
+    'title': _('Current connections'),
+    'unit': 'count',
+    'color': '26/a',
+}
+metric_info['checkpoint_fw_connections_fwpeaknumconn'] = {
+    'title': _('Peak Connections'),
+    'unit': 'count',
+    'color': '16/a',
+}
+
+metric_info['checkpoint_fw_connections_relative'] = {
+    'title': _('Connections relative'),
+    'unit': '%',
+    'color': '36/a',
+}
+
+graph_info['checkpoint_fw_connections_fwpeaknumconn'] = {
+    'title': _('Check Point Firewall Connections absolute'),
+    'metrics': [
+        ('checkpoint_fw_connections_fwcurrentnumconn', 'area'),
+        ('checkpoint_fw_connections_fwpeaknumconn', 'line'),
+    ],
+    'scalars': [
+        ('checkpoint_fw_connections_fwcurrentnumconn:crit', _('crit')),
+        ('checkpoint_fw_connections_fwcurrentnumconn:warn', _('warn')),
+    ],
+}
+
+graph_info['checkpoint_fw_connections_relative'] = {
+    'title': _('Check Point Firewall Connections relative to connection table limit'),
+    'metrics': [
+        ('checkpoint_fw_connections_relative', 'area'),
+    ],
+    'scalars': [
+        ('checkpoint_fw_connections_relative:crit', _('crit')),
+        ('checkpoint_fw_connections_relative:warn', _('warn')),
+    ],
+    'range': (0, 110),
+}
+
+graph_info['checkpoint_fw_connections_fwconnectionstcp'] = {
+    'title': _('Check Point Firewall Connections per second'),
+    'metrics': [
+        ('checkpoint_fw_connections_fwconnectionsother', 'stack'),
+        ('checkpoint_fw_connections_fwconnectionsicmp', 'stack'),
+        ('checkpoint_fw_connections_fwconnectionsudp', 'stack'),
+        ('checkpoint_fw_connections_fwconnectionstcp', 'stack'),
+        ('checkpoint_fw_connections_fwconnectionssum', 'line'),
+        ('checkpoint_fw_connections_fwconnectionrate', 'line'),
+    ],
+}
+
+perfometer_info.append(('stacked', [
+    {
+        'type': 'linear',
+        'segments': ['checkpoint_fw_connections_relative'],
+        'total': 100,
+    },
+    {
+        'type': 'logarithmic',
+        'metric': 'checkpoint_fw_connections_fwconnectionrate',
+        'half_value': 1000.0,
+        'exponent': 2,
+    },
+]))
+
+perfometer_info.append(('stacked', [
+    {
+        'type': 'logarithmic',
+        'metric': 'checkpoint_fw_connections_fwcurrentnumconn',
+        'half_value': 100000.0,
+        'exponent': 2,
+    },
+    {
+        'type': 'logarithmic',
+        'metric': 'checkpoint_fw_connections_fwconnectionrate',
+        'half_value': 1000.0,
+        'exponent': 2,
+    },
+]))
diff --git a/gui/wato/checkpoint_fw_connections.py b/gui/wato/checkpoint_fw_connections.py
new file mode 100644
index 0000000..d72a8a2
--- /dev/null
+++ b/gui/wato/checkpoint_fw_connections.py
@@ -0,0 +1,100 @@
+#!/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  : 2020-06-07
+#
+# 2023-02-18: moved wato file from ~/local/share/check_mk/... to ~/local/lib/check_mk/...
+#
+
+
+from cmk.gui.i18n import _
+from cmk.gui.valuespec import (
+    Dictionary,
+    Tuple,
+    Integer,
+    Percentage,
+)
+from cmk.gui.plugins.wato.utils import (
+    CheckParameterRulespecWithItem,
+    rulespec_registry,
+    RulespecGroupCheckParametersNetworking,
+)
+
+
+def _parameter_valuespec_checkpoint_fw_connections():
+    return Dictionary(
+        elements=[
+            ('levels_upper_absolute',
+             Tuple(
+                 title=_('Maximum number of firewall connections'),
+                 help=_('This rule sets upper limits to the current number of connections through '
+                        'a Checkpoint firewall.'),
+                 elements=[
+                     Integer(title=_('Warning at'), minvalue=0, unit=_('connections')),
+                     Integer(title=_('Critical at'), minvalue=0, unit=_('connections')),
+                 ])),
+            ('levels_lower_absolute',
+             Tuple(
+                 title=_('Minimum number of firewall connections'),
+                 help=_('This rule sets lower limits to the current number of connections through '
+                        'a Checkpoint firewall.'),
+                 elements=[
+                     Integer(title=_('Warning blow'), minvalue=0, unit=_('connections')),
+                     Integer(title=_('Critical below'), minvalue=0, unit=_('connections')),
+                 ])),
+            ('admin_table_limit',
+             Integer(
+                 title=_('Admin connection table limit'),
+                 help=_('This rule sets the maximum number of connections through the firewall. This is use full '
+                        'if your firewall is set to automatic connection table limit and you still want '
+                        'relative metrics. This setting takes precedence over the the fwConnTableLimit '
+                        'configured on the firewall (only for monitoring purposes of curse). This value should match'
+                        'the real values of your firewall, if not you might get relative values above 100%.'),
+                 minvalue=0,
+                 unit=_('connections'),
+             )),
+            ('levels_upper_relative',
+             Tuple(
+                 title=_('Percentage of maximum connections (only used if a limit is defined on '
+                         'the Check Point device)'),
+                 help=_('This relative threshold can only be used if a maximum number is defined on '
+                        'the firewall side and then read from fwConnTableLimit. By default, this '
+                        'limit is not set in Check Point devices and this check than falls back to '
+                        'the absolute defaults or the ones defined above'),
+                 elements=[
+                     Percentage(
+                         title=_('Warning at'), unit='%', minvalue=0.0, maxvalue=100.0, default_value=80.0),
+                     Percentage(
+                         title=_('Critical at'), unit='%', minvalue=0.0, maxvalue=100.0, default_value=90.0),
+                 ])),
+            ('levels_lower_relative',
+             Tuple(
+                 title=_('Percentage of minimum connections (only used if a limit is defined on '
+                         'the Check Point device)'),
+                 help=_('This relative threshold can only be used if a maximum number is defined on '
+                        'the firewall side and then read from fwConnTableLimit. By default, this '
+                        'limit is not set in Check Point devices and this check than falls back to '
+                        'the absolute defaults or the ones defined above'),
+                 elements=[
+                     Percentage(
+                         title=_('Warning below'), unit='%', minvalue=0.0, maxvalue=100.0),
+                     Percentage(
+                         title=_('Critical below'), unit='%', minvalue=0.0, maxvalue=100.0),
+                 ])),
+        ],
+        # optional_keys=['levels_upper_relative'],
+    )
+
+
+rulespec_registry.register(
+    CheckParameterRulespecWithItem(
+        check_group_name='checkpoint_fw_connections',
+        group=RulespecGroupCheckParametersNetworking,
+        match_type='dict',
+        parameter_valuespec=_parameter_valuespec_checkpoint_fw_connections,
+        title=lambda: _('Check Point Firewall Connections'),
+    ))
diff --git a/packages/checkpoint_fw_connections b/packages/checkpoint_fw_connections
index 602f145..118f7fd 100644
--- a/packages/checkpoint_fw_connections
+++ b/packages/checkpoint_fw_connections
@@ -15,7 +15,8 @@
                 ' - Connections rate/s\n'
                 ' - Current connections\n'
                 ' - Peak Connections\n'
-                ' - Current connections relative to table limit (if available)\n'
+                ' - Current connections relative to table limit (if '
+                'available)\n'
                 '\n'
                 'WATO\n'
                 ' - Upper/Lower levels for current connections (absolute)\n'
@@ -24,12 +25,11 @@
                 ' - Admin connection table limit\n',
  'download_url': 'https://thl-cmk.hopto.org',
  'files': {'agent_based': ['checkpoint_fw_connections.py'],
-           'web': ['plugins/metrics/checkpoint_fw_connections.py',
-                   'plugins/wato/checkpoint_fw_connections.py']},
+           'gui': ['metrics/checkpoint_fw_connections.py',
+                   'wato/checkpoint_fw_connections.py']},
  'name': 'checkpoint_fw_connections',
- 'num_files': 3,
  'title': 'Check Point Connections',
- 'version': '20210825.v.0.0.3a',
- 'version.min_required': '2.0.0',
- 'version.packaged': '2021.07.14',
- 'version.usable_until': None}
+ 'version': '20230303.v.0.0.4',
+ 'version.min_required': '2.1.0',
+ 'version.packaged': '2.1.0p21',
+ 'version.usable_until': None}
\ No newline at end of file
-- 
GitLab