From dbe7673cd0fc33574d152a047484cc770fd3b6f4 Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Fri, 3 Dec 2021 16:26:22 +0100
Subject: [PATCH] update project

---
 agent_based/cisco_vpn_tunnel.py      |  15 +++++++++++----
 cisco_vpn_tunnel.mkp                 | Bin 5905 -> 5923 bytes
 packages/cisco_vpn_tunnel            |   4 ++--
 web/plugins/wato/cisco_vpn_tunnel.py |   6 +++---
 4 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/agent_based/cisco_vpn_tunnel.py b/agent_based/cisco_vpn_tunnel.py
index 9b49333..b38d875 100644
--- a/agent_based/cisco_vpn_tunnel.py
+++ b/agent_based/cisco_vpn_tunnel.py
@@ -15,6 +15,7 @@
 # 2018-02-16: readded tunnel alias
 # 2018-07-11: added parameter for missing IPSec SA, changed 'parsed' to use peer ip as index
 # 2021-08-03: rewritten for CMK 2.0
+# 2021-11-03: fix negative vpn active tine
 #
 # snmpwalk sample
 #
@@ -117,6 +118,7 @@ def _tunnelstatus(st: int) -> str:
 def _cisco_vpn_tunnel_render_ipv4_address(bytestring):
     return '.'.join([f'{ord(m)}' for m in bytestring])
 
+
 ###########################################################################
 #
 #  DATA Parser function
@@ -132,7 +134,7 @@ def parse_cisco_vpn_tunnel(string_table: List[StringTable]) -> Dict[str, IkeSa]:
     # summarize IPSec SAs, ASSUMPTION: except for counters all SA attributes are identical per IKE index
     for ike_tunnel_index, ike_tunnel_alive, active_time, hc_in_octets, in_pkts, in_drop_pkts, hc_out_octets, \
             out_pkts, out_drop_pkts in ipsec_tunnel_entry:
-        
+
         if ike_tunnel_index.isdigit():
             ipsec_sa = ipsec_sa_summary.setdefault(
                 ike_tunnel_index,
@@ -154,7 +156,6 @@ def parse_cisco_vpn_tunnel(string_table: List[StringTable]) -> Dict[str, IkeSa]:
             nego_mode in ike_tunnel_entry:
 
         if index.isdigit():
-            # if int(nego_mode) == 2:  # drop agressive mode tunnel, likely Remote Access
             remote_addr = _cisco_vpn_tunnel_render_ipv4_address(remote_addr)
             if remote_addr.split('.') != 4:
                 remote_addr = remote_value
@@ -183,6 +184,7 @@ def parse_cisco_vpn_tunnel(string_table: List[StringTable]) -> Dict[str, IkeSa]:
 
     return vpntunnel
 
+
 ###########################################################################
 #
 #  Inventory function
@@ -222,6 +224,10 @@ def check_cisco_vpn_tunnel(item, params, section: Dict[str, IkeSa]) -> CheckResu
         yield Result(state=State(tunnel_not_found_state), summary='VPN Tunnel not found in SNMP data')
         return
 
+    # check if tunnel lifetime < 0, happens on asa failover
+    if tunnel.active_time < 0:
+        tunnel.active_time = tunnel.active_time * -1
+
     yield from check_levels(
         value=tunnel.active_time,
         label='IKE uptime',
@@ -250,7 +256,7 @@ def check_cisco_vpn_tunnel(item, params, section: Dict[str, IkeSa]) -> CheckResu
 
     ]:
         try:
-            value = get_rate(value_store, f'cisco_vpn_tunnel.{key}.{rate_item}', now_time, value,  raise_overflow=False)
+            value = get_rate(value_store, f'cisco_vpn_tunnel.{key}.{rate_item}', now_time, value, raise_overflow=False)
         except GetRateError:
             raise_ingore_res = True
             value = 0
@@ -308,6 +314,7 @@ def check_cisco_vpn_tunnel(item, params, section: Dict[str, IkeSa]) -> CheckResu
     else:
         yield Result(state=State(missing_ipsec_sa_state), notice='No IPSec sa found')
 
+
 ###########################################################################
 #
 #  Check info
@@ -373,7 +380,7 @@ register.check_plugin(
     },
     check_function=check_cisco_vpn_tunnel,
     check_default_parameters={
-        'state': 3,    # default state for tunnel not found
+        'state': 3,  # default state for tunnel not found
         'missing_ipsec_sa_state': 1,
         'tunnels': [],  # list of tunnel specific not found states ('<ip-address>', '<alias>', <state>)
     },
diff --git a/cisco_vpn_tunnel.mkp b/cisco_vpn_tunnel.mkp
index 0398d590158d29b061508cfcb405ff3c613c9ed1..93fbe7991a96d9fbcd3e8279071b102f33f51103 100644
GIT binary patch
literal 5923
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
Zu$cQ#YyVT?Ag?>gGoo7oq!A>f{{if1cE<n!

literal 5905
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
DZr+|M

diff --git a/packages/cisco_vpn_tunnel b/packages/cisco_vpn_tunnel
index cbca0d5..6b859d5 100644
--- a/packages/cisco_vpn_tunnel
+++ b/packages/cisco_vpn_tunnel
@@ -11,7 +11,7 @@
  'name': 'cisco_vpn_tunnel',
  'num_files': 3,
  'title': 'Monitor Cisco VPN Tunnel',
- 'version': '20210803v.0.2',
+ 'version': '20210803.v0.2',
  'version.min_required': '2.0.0',
- 'version.packaged': '2021.07.14',
+ 'version.packaged': '2021.09.20',
  'version.usable_until': None}
\ No newline at end of file
diff --git a/web/plugins/wato/cisco_vpn_tunnel.py b/web/plugins/wato/cisco_vpn_tunnel.py
index c298d92..c187532 100644
--- a/web/plugins/wato/cisco_vpn_tunnel.py
+++ b/web/plugins/wato/cisco_vpn_tunnel.py
@@ -90,7 +90,7 @@ rulespec_registry.register(
 
 def _valuespec_discovery_cisco_vpn_tunnel():
     return Dictionary(
-            title=_("VPN Tunnel discovery"),
+            title=_('VPN Tunnel discovery'),
             elements=[(
                 'discover_aggressive_mode',
                 FixedValue(
@@ -106,7 +106,7 @@ def _valuespec_discovery_cisco_vpn_tunnel():
 rulespec_registry.register(
     HostRulespec(
         group=RulespecGroupCheckParametersDiscovery,
-        match_type="dict",
-        name="discovery_cisco_vpn_tunnel",
+        match_type='dict',
+        name='discovery_cisco_vpn_tunnel',
         valuespec=_valuespec_discovery_cisco_vpn_tunnel,
     ))
-- 
GitLab