From e0c42a18841f6ac0b82e80866c7670414da313ea Mon Sep 17 00:00:00 2001
From: thl-cmk <thl-cmk@outlook.com>
Date: Tue, 3 Aug 2021 19:15:42 +0000
Subject: [PATCH] Delete cisco_vpn_tunnel

---
 checks/cisco_vpn_tunnel | 403 ----------------------------------------
 1 file changed, 403 deletions(-)
 delete mode 100644 checks/cisco_vpn_tunnel

diff --git a/checks/cisco_vpn_tunnel b/checks/cisco_vpn_tunnel
deleted file mode 100644
index 705ac30..0000000
--- a/checks/cisco_vpn_tunnel
+++ /dev/null
@@ -1,403 +0,0 @@
-#!/usr/bin/python
-# -*- encoding: utf-8; py-indent-offset: 4 -*-
-#
-#
-# Cisco VPN tunnel rewrite
-#
-# Author: Th.L.
-# Date  : 2017-12-28
-#
-# Monitor status of Cisco VPN tunnel phase 1 and 2
-#
-# 10.01.2018: Th.L.: added handling for tunnel not found
-# 23.01.2018: Th.L.: removed unnecessary counters
-# 15.02.2018: Th.L.: removed ipsec tunnel status, changed ike ipv4 check
-# 16.02.2018: Th.L.: readded tunnel alias
-# 11.07.2018: Th.L.: added parameter for missing IPSec SA, changed 'parsed' to use peer ip as index
-#
-# snmpwalk sample
-#
-#
-# {'state': 0, 'tunnels': [('192.168.1.2', u'tnnel-aliias', 1)]}
-factory_settings['vpn_tunnel_defaults'] = {
-    #  'state': 3,    # default state for tunnel not found
-    #  'tunnels': []  # list of tunnel specific not found states ('<ip-address>', '<alias>', <state>)
-}
-
-
-###########################################################################
-#
-#  DATA Parser function
-#
-###########################################################################
-
-
-def parse_cisco_vpn_tunnel(info):
-    ipsectunnelsummary = {}
-    vpntunnel = {}
-    cikeTunnelEntry, cipSecTunnelEntry = info
-
-    def cisco_vpn_tunnel_render_ipv4_address(bytestring):
-        return ".".join(["%s" % ord(m) for m in bytestring])
-
-    # summarize IPSec SAs, ASSUMPTION: except for counters all SA attributes are identical per IKE index
-    for entry in cipSecTunnelEntry:
-        if not saveint(entry[0]) == 0:
-            if int(entry[0]) in ipsectunnelsummary.keys():  # summarize IPSec SA values for IKE tunnel index
-                ipsecsa = ipsectunnelsummary.get(int(entry[0]))
-                ipsecsa.update({'ipsecsacount': ipsecsa.get('ipsecsacount') + 1})
-                ipsecsa.update({'cipSecTunHcInOctets': ipsecsa.get('cipSecTunHcInOctets') + int(entry[3])})
-                ipsecsa.update({'cipSecTunInPkts': ipsecsa.get('cipSecTunInPkts') + int(entry[4])})
-                ipsecsa.update({'cipSecTunInDropPkts': ipsecsa.get('cipSecTunInDropPkts') + int(entry[5])})
-                ipsecsa.update({'cipSecTunHcOutOctets': ipsecsa.get('cipSecTunHcOutOctets') + int(entry[6])})
-                ipsecsa.update({'cipSecTunOutPkts': ipsecsa.get('cipSecTunOutPkts') + int(entry[7])})
-                ipsecsa.update({'cipSecTunOutDropPkts': ipsecsa.get('cipSecTunOutDropPkts') + int(entry[8])})
-                if int(entry[2]) / 100 > ipsecsa.get('cipSecTunActiveTime'):
-                    ipsecsa.update({'cipSecTunActiveTime': int(entry[2]) / 100})
-
-            else:  # new IKE tunnel index
-                ipsecsa = {}
-                ipsecsa.update({'ipsecsacount': 1})
-                ipsecsa.update({'cipSecTunIkeTunnelAlive': entry[1]})
-                ipsecsa.update({'cipSecTunActiveTime': int(entry[2]) / 100})
-                ipsecsa.update({'cipSecTunHcInOctets': int(entry[3])})
-                ipsecsa.update({'cipSecTunInPkts': int(entry[4])})
-                ipsecsa.update({'cipSecTunInDropPkts': int(entry[5])})
-                ipsecsa.update({'cipSecTunHcOutOctets': int(entry[6])})
-                ipsecsa.update({'cipSecTunOutPkts': int(entry[7])})
-                ipsecsa.update({'cipSecTunOutDropPkts': int(entry[8])})
-
-                ipsectunnelsummary.update({int(entry[0]): ipsecsa})
-
-    # IKE tunnel index
-    for entry in cikeTunnelEntry:
-        tunnel = {}
-        if not saveint(entry[0]) == 0:
-            # if int(entry[17]) == 2:  # drop agressive mode tunnel, likely Remote Access
-                tunnel.update({'cikeTunRemoteAddr': cisco_vpn_tunnel_render_ipv4_address(entry[7])})
-                if len(tunnel.get('cikeTunRemoteAddr').split('.')) != 4:
-                    tunnel.update({'cikeTunRemoteAddr': entry[6]})  # IP address (hopefully)
-                if len(tunnel.get('cikeTunRemoteAddr').split('.')) == 4:
-                    tunnel.update({'cikeTunIndex':              int(entry[0])})
-                    tunnel.update({'cikeTunLocalType':          int (entry[1])})
-                    tunnel.update({'cikeTunLocalValue':         entry[2]})
-                    tunnel.update({'cikeTunLocalAddr':          cisco_vpn_tunnel_render_ipv4_address(entry[3])})
-                    tunnel.update({'cikeTunLocalName':          entry[4]})
-                    tunnel.update({'cikeTunRemoteType':         int(entry[5])})
-                    tunnel.update({'cikeTunRemoteValue':        entry[6]})
-
-                    tunnel.update({'cikeTunRemoteName':         entry[8]})
-                    tunnel.update({'cikeTunActiveTime':         int(entry[9]) / 100})
-                    tunnel.update({'cikeTunInOctets':           int(entry[10])})
-                    tunnel.update({'cikeTunInPkts':             int(entry[11])})
-                    tunnel.update({'cikeTunInDropPkts':         int(entry[12])})
-                    tunnel.update({'cikeTunOutOctets':          int(entry[13])})
-                    tunnel.update({'cikeTunOutPkts':            int(entry[14])})
-                    tunnel.update({'cikeTunOutDropPkts':        int(entry[15])})
-                    tunnel.update({'cikeTunStatus':             int(entry[16])})
-
-                    # add IPSec SA summary for IKE tunnel index
-                    tunnel.update({'ipsecsummary': ipsectunnelsummary.get(tunnel.get('cikeTunIndex'))})
-
-                    vpntunnel.update({tunnel.get('cikeTunRemoteAddr'):tunnel})
-    return vpntunnel
-
-###########################################################################
-#
-#  Inventory function
-#
-###########################################################################
-
-
-def inventory_cisco_vpn_tunnel(parsed):
-    for cikeTunRemoteAddr in parsed.keys():
-        yield cikeTunRemoteAddr, {}
-
-
-###########################################################################
-#
-#  Check function
-#
-###########################################################################
-
-
-def check_cisco_vpn_tunnel(item, params, parsed):
-    infotext = ''
-    longoutput = ''
-    alias = ''
-    tunnel_not_found_state = params.get('state', 3)
-    missing_ipsec_sa_state = params.get('missing_ipsec_sa_state', 1)
-    perfdata = []
-    state = 0
-
-    def ikepeertype(type):
-        name = {
-            1: 'ipAddrPeer',
-            2: 'namePeer',
-        }
-        if type in name.keys():
-            return name.get(type)
-        else:
-            return 'unknown (%s)' % type
-
-    def ikenegomode(mode):
-        name = {1: 'main',
-                2: 'aggressive',
-                3: 'IKEv2 main([3]?)'
-                }
-        if mode in name.keys():
-            return name.get(mode)
-        else:
-            return 'unknown (%s)' % mode
-
-    def diffhellmangrp(group):
-        name = {1: 'none',
-                2: 'DH1 (768bit)',
-                3: 'DH2 (1024bit)',
-                4: 'DH5 (1536bit) [4]?',
-                5: 'DH14 (2048bit)[5]?',
-                6: 'DH15 (3072bit) [6]?',
-                7: 'DH16 (4096bit) [7]?',
-                8: 'ECDH19 (256bit) [8]?',
-                9: 'ECDH20 (384bit) [9]?',
-                10: 'DH/DSA24 (2048bit) [10]?',
-                }
-        if group in name.keys():
-            return name.get(group)
-        else:
-            return 'unknown (%s)' % group
-
-    def encryptalgo(algo):
-        name = {1: 'none',
-                2: 'des',
-                3: 'des3',
-                4: 'aes-128 [4]?',
-                5: 'aes-192 [5]?',
-                6: 'aes-256 [6]?',
-                7: 'aes-gcm-128 [7]?',
-                8: 'aes-gcm-191 [8]?',
-                9: 'aes-gcm-256 [9]?',
-                }
-        if algo in name.keys():
-            return name.get(algo)
-        else:
-            return 'unknown (%s)' % algo
-
-    def ikehashalgo(algo):
-        name = {
-            1: 'none',
-            2: 'md5',
-            3: 'sha',
-            7: 'sha2-256 [7]?',
-            8: 'sha2-384 [8]?',
-            9: 'sha2-512 [9]?',
-
-        }
-        if algo in name.keys():
-            return name.get(algo)
-        else:
-            return 'unknown (%s)' % algo
-
-    def ikeauthmethod(method):
-        name = {
-            1: 'none',
-            2: 'preSharedKey',
-            3: 'rsaSig',
-            4: 'rsaEncrypt',
-            5: 'revPublicKey',
-        }
-        if method in name.keys():
-            return name.get(method)
-        else:
-            return 'unknown (%s)' % method
-
-    def tunnelstatus(status):
-        name = {
-            1: 'active',
-            2: 'destroy',
-        }
-        if status in name.keys():
-            return name.get(status)
-        else:
-            return 'unknown (%s)' % status
-
-    def ipsec_keytype(type):
-        name = {
-            1: 'ike',
-            2: 'manual',
-        }
-        if type in name.keys():
-            return name.get(type)
-        else:
-            return 'unknown (%s)' % type
-
-    def ipsec_encapmode(mode):
-        name = {
-            1: 'tunnel',
-            2: 'transport',
-        }
-        if mode in name.keys():
-            return name.get(mode)
-        else:
-            return 'unknown (%s)' % mode
-
-    def ipsec_authalgo(algo):
-        name = {
-            1: 'none',
-            2: 'hmacMd5',
-            3: 'hmacSha',
-        }
-        if algo in name.keys():
-            return name.get(algo)
-        else:
-            return 'unknown (%s)' % algo
-
-    def ipsec_compalgo(algo):
-        name = {
-            1: 'none',
-            2: 'ldf',
-        }
-        if algo in name.keys():
-            return name.get(algo)
-        else:
-            return 'unknown (%s)' % algo
-
-    def cisco_vpn_tunnel_time(uptime):  # expects time in seconds
-        m, s = divmod(uptime, 60)  # break in seconds / minutes
-        h, m = divmod(m, 60)  # break in mintes / hours
-        if h >= 24:  # more then one day
-            d, h = divmod(h, 24)  # break in hours / days
-        else:
-            return '%02d:%02d:%02d' % (h, m, s)
-        if d >= 365:  # more the one year
-            y, d = divmod(d, 365)  # break in days / years
-            return '%dy %dd %02d:%02d:%02d' % (y, d, h, m, s)
-        else:
-            return '%dd %02d:%02d:%02d' % (d, h, m, s)
-
-    for tunnel_ip, tunnel_alias, not_found_state, ipsec_sa_state in params.get('tunnels', []):
-        if item == tunnel_ip:
-            alias = tunnel_alias
-            tunnel_not_found_state = not_found_state
-            missing_ipsec_sa_state = ipsec_sa_state
-
-    if item in parsed.keys():
-        tunnel = parsed.get(item)
-
-        if item == tunnel.get('cikeTunRemoteAddr'):
-            state = 0
-
-            ipsecsummary = tunnel.get('ipsecsummary')
-
-            if alias != '':
-                infotext = 'Alias: %s: ' % alias
-
-            infotext += 'IKE active time: %s' % (cisco_vpn_tunnel_time(tunnel.get('cikeTunActiveTime')))
-
-            now_time = time.time()
-            # convert to octets/packets per second
-            tunnel.update({'cikeTunInOctets'  : get_rate('cisco_vpn_tunnel.%s.%s'  % ('cikeTunInOctets',    item), now_time, tunnel.get('cikeTunInOctets'),    onwrap=SKIP)})
-            tunnel.update({'cikeTunOutOctets' : get_rate('cisco_vpn_tunnel.%s.%s'  % ('cikeTunOutOctets',   item), now_time, tunnel.get('cikeTunInPkts'),      onwrap=SKIP)})
-            tunnel.update({'cikeTunInPkts'    : get_rate('cisco_vpn_tunnel.%s.%s'  % ('cikeTunInPkts',      item), now_time, tunnel.get('cikeTunOutOctets'),   onwrap=SKIP)})
-            tunnel.update({'cikeTunOutPkts'   : get_rate('cisco_vpn_tunnel.%s.%s'  % ('cikeTunOutPkts',     item), now_time, tunnel.get('cikeTunOutPkts'),     onwrap=SKIP)})
-            tunnel.update({'cikeTunInDropPkts' : get_rate('cisco_vpn_tunnel.%s.%s' % ('cikeTunInDropPkts',  item), now_time, tunnel.get('cikeTunInDropPkts'),  onwrap=SKIP)})
-            tunnel.update({'cikeTunOutDropPkts': get_rate('cisco_vpn_tunnel.%s.%s' % ('cikeTunOutDropPkts', item), now_time, tunnel.get('cikeTunOutDropPkts'), onwrap=SKIP)})
-
-            longoutput += '\nIKE Status            : %s' % tunnelstatus(tunnel.get('cikeTunStatus'))
-            longoutput += '\nTunnel address local  : %s' % tunnel.get('cikeTunLocalAddr')
-            longoutput += '\nTunnel address remote : %s' % tunnel.get('cikeTunRemoteAddr')
-
-            # 'unit', <value>, <warn-at>, <crit-at>, <min value>, <max value>
-            perfdata.append(('cikeTunInOctets', tunnel.get('cikeTunInOctets')))
-            perfdata.append(('cikeTunOutOctets', tunnel.get('cikeTunOutOctets')))
-            perfdata.append(('cikeTunInPkts', tunnel.get('cikeTunInPkts')))
-            perfdata.append(('cikeTunOutPkts', tunnel.get('cikeTunOutPkts')))
-            perfdata.append(('cikeTunInDropPkts', tunnel.get('cikeTunInDropPkts')))
-            perfdata.append(('cikeTunOutDropPkts', tunnel.get('cikeTunOutDropPkts')))
-            perfdata.append(('cikeTunActiveTime', tunnel.get('cikeTunActiveTime')))
-
-            if not ipsecsummary == None:
-                # convert to octets/packets per second
-                ipsecsummary.update({'cipSecTunHcInOctets': get_rate('cisco_vpn_tunnel.%s.%s' % ('cipSecTunHcInOctets', item), now_time, ipsecsummary.get('cipSecTunHcInOctets'), onwrap=SKIP)})
-                ipsecsummary.update({'cipSecTunHcOutOctets': get_rate('cisco_vpn_tunnel.%s.%s' % ('cipSecTunHcOutOctets', item), now_time, ipsecsummary.get('cipSecTunHcOutOctets'), onwrap=SKIP)})
-                ipsecsummary.update({'cipSecTunInPkts': get_rate('cisco_vpn_tunnel.%s.%s' % ('cipSecTunInPkts', item), now_time, ipsecsummary.get('cipSecTunInPkts'), onwrap=SKIP)})
-                ipsecsummary.update({'cipSecTunOutPkts': get_rate('cisco_vpn_tunnel.%s.%s' % ('cipSecTunOutPkts', item), now_time, ipsecsummary.get('cipSecTunOutPkts'), onwrap=SKIP)})
-                ipsecsummary.update({'cipSecTunInDropPkts': get_rate('cisco_vpn_tunnel.%s.%s' % ('cipSecTunInDropPkts', item), now_time, ipsecsummary.get('cipSecTunInDropPkts'), onwrap=SKIP)})
-                ipsecsummary.update({'cipSecTunOutDropPkts': get_rate('cisco_vpn_tunnel.%s.%s' % ('cipSecTunOutDropPkts', item), now_time, ipsecsummary.get('cipSecTunOutDropPkts'), onwrap=SKIP)})
-
-                infotext += ', IPSec active time: %s, IPSec SAs: %s, IPSec (in/out) %01.0d/%01.0d bytes/s' \
-                            % (cisco_vpn_tunnel_time(ipsecsummary.get('cipSecTunActiveTime')),
-                               ipsecsummary.get('ipsecsacount'),
-                               ipsecsummary.get('cipSecTunHcInOctets'),
-                               ipsecsummary.get('cipSecTunHcOutOctets'))
-
-                # 'unit', <value>, <warn-at>, <crit-at>, <min value>, <max value>
-                perfdata.append(('cipSecTunHcInOctets', ipsecsummary.get('cipSecTunHcInOctets')))
-                perfdata.append(('cipSecTunHcOutOctets', ipsecsummary.get('cipSecTunHcOutOctets')))
-                perfdata.append(('cipSecTunInPkts', ipsecsummary.get('cipSecTunInPkts')))
-                perfdata.append(('cipSecTunOutPkts', ipsecsummary.get('cipSecTunOutPkts')))
-                perfdata.append(('cipSecTunInDropPkts', ipsecsummary.get('cipSecTunInDropPkts')))
-                perfdata.append(('cipSecTunOutDropPkts', ipsecsummary.get('cipSecTunOutDropPkts')))
-                perfdata.append(('cipSecTunActiveTime', ipsecsummary.get('cipSecTunActiveTime')))
-
-            else:
-                yield missing_ipsec_sa_state, 'No IPSec sa found'
-
-    # tunnel not found
-    else:
-        yield tunnel_not_found_state, 'VPN Tunnel %s not found' % alias
-        state = tunnel_not_found_state
-
-    yield state, infotext + longoutput, perfdata
-
-###########################################################################
-#
-#  Check info
-#
-###########################################################################
-
-
-check_info['cisco_vpn_tunnel'] = {
-    'check_function'          : check_cisco_vpn_tunnel,
-    'inventory_function'     : inventory_cisco_vpn_tunnel,
-    'service_description'    : 'VPN Tunnel %s',
-    'group'                  : 'vpn_tunnel',
-    'default_levels_variable': 'vpn_tunnel_defaults',
-    'has_perfdata'           : True,
-    'parse_function'         : parse_cisco_vpn_tunnel,
-    'snmp_scan_function'     : lambda oid: oid('.1.3.6.1.2.1.1.1.0').lower().find('cisco') != -1 and
-                                           oid('.1.3.6.1.4.1.9.9.171.1.2.3.1.*'),  # CISCO-IPSEC-FLOW-MONITOR-MIB::cikeTunnelEntry
-    'snmp_info'              : [
-        ('.1.3.6.1.4.1.9.9.171.1.2.3.1', [
-            OID_END,  # TunnelIndex        (0)
-            '2',      # cikeTunLocalType   (1)
-            '3',      # cikeTunLocalValue  (2)
-            '4',      # cikeTunLocalAddr   (3)
-            '5',      # cikeTunLocalName   (4)
-            '6',      # cikeTunRemoteType  (5)
-            '7',      # cikeTunRemoteValue (6)
-            '8',      # cikeTunRemoteAddr  (7)
-            '9',      # cikeTunRemoteName  (8)
-            '16',     # cikeTunActiveTime  (9)
-            '19',     # cikeTunInOctets    (10)
-            '20',     # cikeTunInPkts      (11)
-            '21',     # cikeTunInDropPkts  (12)
-            '27',     # cikeTunOutOctets   (13)
-            '28',     # cikeTunOutPkts     (14)
-            '29',     # cikeTunOutDropPkts (15)
-            '35',     # cikeTunStatus      (16)
-            '10',     # cikeTunNegoMode    (17)
-        ]),
-        ('.1.3.6.1.4.1.9.9.171.1.3.2.1', [  # CISCO-IPSEC-FLOW-MONITOR-MIB::cipSecTunnelEntry
-            '2',   # cipSecTunIkeTunnelIndex  (0)
-            '3',   # cipSecTunIkeTunnelAlive  (1)
-            '10',  # cipSecTunActiveTime      (2)
-            '27',  # cipSecTunHcInOctets      (3)
-            '32',  # cipSecTunInPkts          (4)
-            '33',  # cipSecTunInDropPkts      (5)
-            '40',  # cipSecTunHcOutOctets     (6)
-            '45',  # cipSecTunOutPkts         (7)
-            '46',  # cipSecTunOutDropPkts     (8)
-        ]),
-    ],
-}
-- 
GitLab