From 60f6158c6c8c52b8f6b60d9cee51b3f3fa9a4bd4 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Sat, 18 Jan 2025 13:05:37 +0100 Subject: [PATCH] fixed non working whois retrieval --- README.md | 2 +- mkp/bgp_peer-2.2.8-20250117.mkp | Bin 0 -> 16799 bytes source/agent_based/inv_bgp_peer.py | 24 +++++++++++++----------- source/agent_based/utils/bgp_peer.py | 17 ++++++++++------- source/packages/bgp_peer | 2 +- 5 files changed, 25 insertions(+), 20 deletions(-) create mode 100644 mkp/bgp_peer-2.2.8-20250117.mkp diff --git a/README.md b/README.md index 9c1a93f..424b923 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[PACKAGE]: ../../raw/master/mkp/bgp_peer-2.2.7-20241220.mkp "bgp_peer-2.2.7-20241220.mkp" +[PACKAGE]: ../../raw/master/mkp/bgp_peer-2.2.8-20250117.mkp "bgp_peer-2.2.8-20250117.mkp" # BGP Peer Check plugin to monitor the status of BGP peers and inventory plugin for static BGP peer data. diff --git a/mkp/bgp_peer-2.2.8-20250117.mkp b/mkp/bgp_peer-2.2.8-20250117.mkp new file mode 100644 index 0000000000000000000000000000000000000000..c6d3e575b231a56c9472b9ab0e521802813ab8c6 GIT binary patch literal 16799 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 Mc3V#g!vsbK0GEQzO8@`> literal 0 HcmV?d00001 diff --git a/source/agent_based/inv_bgp_peer.py b/source/agent_based/inv_bgp_peer.py index 9ed2db7..869b337 100644 --- a/source/agent_based/inv_bgp_peer.py +++ b/source/agent_based/inv_bgp_peer.py @@ -11,28 +11,30 @@ # # 2022-04-30: code cleanup/streamlining # 2023-01-17: always remove fsm_established_time -# +# 2025-01-17: fixed non working whois retrieval (param check was incorrect, no default rir is also not True) +# fixed crash on missing remote_as +# fixed missing "/" in whois query (ThX to nick[at]fisk[dot]me[dot]uk) import time from typing import List from cmk.base.plugins.agent_based.agent_based_api.v1 import ( - register, + OIDBytes, SNMPTree, TableRow, exists, - OIDBytes + register, ) from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( - StringByteTable, InventoryResult, + StringByteTable, ) from cmk.base.plugins.agent_based.utils.bgp_peer import ( - bgp_error_code_as_hex, - bgp_error_as_string, + BgpWhois, InvBgpPeer, + bgp_error_as_string, + bgp_error_code_as_hex, get_bgp_type, - BgpWhois, ) @@ -76,10 +78,10 @@ def parse_inv_bgp_peer(string_table: List[StringByteTable]): def inventory_bgp_peers(params, section) -> InventoryResult: path = ['networking', 'bgp_peers'] - whois = None - if params.get('whois_enable'): + + if (whois := params.get('whois_enable')) is not None: whois = BgpWhois( - default_rir=params['whois_enable'].get('whois_rir', 'https://rdap.db.ripe.net'), + default_rir=params['whois_enable'].get('whois_rir', 'https://rdap.db.ripe.net/'), timeout=params['whois_enable'].get('whois_timeout', 5) ) @@ -92,7 +94,7 @@ def inventory_bgp_peers(params, section) -> InventoryResult: status_columns = bgp_peer['status_columns'] bgp_peer.pop('status_columns') - if whois: + if whois and bgp_peer.get('remote_as', '').isdigit(): as_info = whois.get_whois_data_by_asn(int(bgp_peer.get('remote_as'))) bgp_peer.update(as_info) diff --git a/source/agent_based/utils/bgp_peer.py b/source/agent_based/utils/bgp_peer.py index f801802..0f1fa7a 100644 --- a/source/agent_based/utils/bgp_peer.py +++ b/source/agent_based/utils/bgp_peer.py @@ -18,6 +18,7 @@ # 2022-05-12: merged bgp_get_ip_address_from_oid with bgp_render_ip_address # changed IPv6 address format to lower case as required by rfc5952 section-4.3 (this affects IPv6 items) # 2023-01-20: add description to BgpPeerItem (for Arista) +# 2025-01-25: fixed missing "/" in rir URL (ThX to nick[at]fisk[dot]me[dot]uk) # # https://ftp.ripe.net/ripe/asnames/asn.txt AS Name List @@ -492,11 +493,11 @@ class BgpWhois: 'version': '1.0' } __rirs = { - 'ripe': 'https://rdap.db.ripe.net', - 'arin': 'https://rdap.arin.net/registry', - 'afrinic': 'https://rdap.afrinic.net/rdap', - 'lacnic': 'https://rdap.lacnic.net/rdap', - 'apnic': 'https://rdap.apnic.net', + 'ripe': 'https://rdap.db.ripe.net/', + 'arin': 'https://rdap.arin.net/registry/', + 'afrinic': 'https://rdap.afrinic.net/rdap/', + 'lacnic': 'https://rdap.lacnic.net/rdap/', + 'apnic': 'https://rdap.apnic.net/', } def __find_rir_by_asn(self, asn: int) -> str: @@ -512,7 +513,7 @@ class BgpWhois: def __init__(self, default_rir: str, timeout: int): self.__timeout = timeout - self.__rir = self.__rirs.get(default_rir, 'https://rdap.db.ripe.net') + self.__rir = self.__rirs.get(default_rir, 'https://rdap.db.ripe.net/') self.__known_asns = {} def get_whois_data_by_asn(self, asn: int) -> Dict[str, str]: @@ -521,7 +522,9 @@ class BgpWhois: if asn < 64512 or (65536 < asn < 4200000000): rir = self.__find_rir_by_asn(asn) query = 'autnum' - data = _fetch_data(f'{rir}{query}/{asn}', self.__timeout) + url = f'{rir}{query}/{asn}' + data = _fetch_data(url, self.__timeout) + if data: asn_info['as_name'] = data.get('name') vcard_array = data.get('entities')[0].get('vcardArray') diff --git a/source/packages/bgp_peer b/source/packages/bgp_peer index 9a52f1b..0bc5758 100644 --- a/source/packages/bgp_peer +++ b/source/packages/bgp_peer @@ -37,7 +37,7 @@ 'web': ['plugins/views/inv_bgp_peer.py']}, 'name': 'bgp_peer', 'title': 'BGP Peer', - 'version': '2.2.7-20241220', + 'version': '2.2.8-20250117', 'version.min_required': '2.3.0b1', 'version.packaged': 'cmk-mkp-tool 0.2.0', 'version.usable_until': '2.4.0b1'} -- GitLab