From 9ae12023e5c7c51bbd12fe4165d4230de3b8e179 Mon Sep 17 00:00:00 2001 From: Alexander Wilms Date: Thu, 23 Feb 2023 16:38:51 +0100 Subject: [PATCH 1/9] Ensure upcoming checkmk 2.2.0 compatibility Unfortunately the rquired changes make it incompatible with versions before 2.2.0. --- .../plugins/agent_based/unifi_controller.py | 58 +++++++++---------- .../agents/special/agent_unifi_controller | 40 ++++++------- 2 files changed, 46 insertions(+), 52 deletions(-) diff --git a/lib/check_mk/base/plugins/agent_based/unifi_controller.py b/lib/check_mk/base/plugins/agent_based/unifi_controller.py index a4b9b06..6737ec7 100644 --- a/lib/check_mk/base/plugins/agent_based/unifi_controller.py +++ b/lib/check_mk/base/plugins/agent_based/unifi_controller.py @@ -270,7 +270,6 @@ def inventory_unifi_device_shortlist(section): def discovery_unifi_device(section): yield Service(item="Device Status") yield Service(item="Unifi Device") - yield Service(item="Unifi Device Uptime") yield Service(item="Active-User") if section.type != "uap": # kein satisfaction bei ap .. radio/ssid haben schon yield Service(item="Satisfaction") @@ -316,14 +315,7 @@ def check_unifi_device(item,section): ) yield Metric("user_sta",_active_user) yield Metric("guest_sta",_safe_int(section.guest_num_sta)) - if item == "Unifi Device Uptime": - _uptime = int(section.uptime) if section.uptime else -1 - if _uptime > 0: - yield Result( - state=State.OK, - summary=render.timespan(_uptime) - ) - yield Metric("unifi_uptime",_uptime) + if item == "Satisfaction": yield Result( state=State.OK, @@ -415,7 +407,7 @@ def inventory_unifi_device(section): ############ DEVICEPORT ########### @dataclass -class unifi_interface(interfaces.Interface): +class unifi_interface(interfaces.InterfaceWithCounters): jumbo : bool = False satisfaction : int = 0 poe_enable : bool = False @@ -430,8 +422,6 @@ class unifi_interface(interfaces.Interface): ip_address : Optional[str] = None portconf : Optional[str] = None - def __post_init__(self) -> None: - self.finalize() def _convert_unifi_counters_if(section: Section) -> interfaces.Section: ## 10|port_idx|10 @@ -488,25 +478,29 @@ def _convert_unifi_counters_if(section: Section) -> interfaces.Section: return [ unifi_interface( - index=str(netif.port_idx), - descr=netif.name, - alias=netif.name, - type='6', - speed=_safe_int(netif.speed)*1000000, - oper_status=netif.oper_status, - admin_status=netif.admin_status, - in_octets=_safe_int(netif.rx_bytes), - in_ucast=_safe_int(netif.rx_packets), - in_mcast=_safe_int(netif.rx_multicast), - in_bcast=_safe_int(netif.rx_broadcast), - in_discards=_safe_int(netif.rx_dropped), - in_errors=_safe_int(netif.rx_errors), - out_octets=_safe_int(netif.tx_bytes), - out_ucast=_safe_int(netif.tx_packets), - out_mcast=_safe_int(netif.tx_multicast), - out_bcast=_safe_int(netif.tx_broadcast), - out_discards=_safe_int(netif.tx_dropped), - out_errors=_safe_int(netif.tx_errors), + attributes=interfaces.Attributes( + index=str(netif.port_idx), + descr=netif.name, + alias=netif.name, + type='6', + speed=_safe_int(netif.speed)*1000000, + oper_status=netif.oper_status, + admin_status=netif.admin_status, + ), + counters=interfaces.Counters( + in_octets=_safe_int(netif.rx_bytes), + in_ucast=_safe_int(netif.rx_packets), + in_mcast=_safe_int(netif.rx_multicast), + in_bcast=_safe_int(netif.rx_broadcast), + in_disc=_safe_int(netif.rx_dropped), + in_err=_safe_int(netif.rx_errors), + out_octets=_safe_int(netif.tx_bytes), + out_ucast=_safe_int(netif.tx_packets), + out_mcast=_safe_int(netif.tx_multicast), + out_bcast=_safe_int(netif.tx_broadcast), + out_disc=_safe_int(netif.tx_dropped), + out_err=_safe_int(netif.tx_errors), + ), jumbo=True if netif.jumbo == "1" else False, satisfaction=_safe_int(netif.satisfaction) if netif.satisfaction and netif.oper_status == "1" else 0, poe_enable=True if netif.poe_enable == "1" else False, @@ -540,7 +534,7 @@ def check_unifi_network_port_if( ##fixme parsed_section_name section: Section, ) -> CheckResult: _converted_ifs = _convert_unifi_counters_if(section) - iface = next(filter(lambda x: _safe_int(item,-1) == _safe_int(x.index) or item == x.alias,_converted_ifs),None) ## fix Service Discovery appearance alias/descr + iface = next(filter(lambda x: _safe_int(item,-1) == _safe_int(x.attributes.index) or item == x.attributes.alias,_converted_ifs),None) ## fix Service Discovery appearance alias/descr yield from interfaces.check_multiple_interfaces( item, params, diff --git a/share/check_mk/agents/special/agent_unifi_controller b/share/check_mk/agents/special/agent_unifi_controller index e229e5e..16c31c6 100644 --- a/share/check_mk/agents/special/agent_unifi_controller +++ b/share/check_mk/agents/special/agent_unifi_controller @@ -1,19 +1,19 @@ #!/usr/bin/env python3 # -*- encoding: utf-8; py-indent-offset: 4 -*- ## MIT License -## +## ## Copyright (c) 2021 Bash Club -## +## ## Permission is hereby granted, free of charge, to any person obtaining a copy ## of this software and associated documentation files (the "Software"), to deal ## in the Software without restriction, including without limitation the rights ## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ## copies of the Software, and to permit persons to whom the Software is ## furnished to do so, subject to the following conditions: -## +## ## The above copyright notice and this permission notice shall be included in all ## copies or substantial portions of the Software. -## +## ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -22,8 +22,8 @@ ## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ## SOFTWARE. -### -__VERSION__ = 0.88 +### +__VERSION__ = 2.2.0 import sys import socket @@ -214,7 +214,7 @@ class unifi_network_ssid(unifi_object): ######################################## ###### -###### R A D I O +###### R A D I O ###### ######################################## class unifi_network_radio(unifi_object): @@ -233,7 +233,7 @@ class unifi_network_radio(unifi_object): continue _ret.append(f"{self.name}|{_k}|{_v}") return "\n".join(_ret) - + ######################################## ###### ###### P O R T @@ -253,9 +253,9 @@ class unifi_network_port(unifi_object): self.name = self.ifname if not hasattr(self,"port_idx") and hasattr(self,"ifname"): self.port_idx = int(self.ifname[-1])+1 ## ethX - + self.portconf = self._PARENT._PARENT._PORTCONFIGS.get(getattr(self,"portconf_id",None)) - + def _get_state(self,state): return { @@ -286,7 +286,7 @@ class unifi_device(unifi_object): self._NETWORK_PORTS = [] self._NETWORK_RADIO = [] self._NETWORK_SSIDS = [] - + for _k,_v in getattr(self,"sys_stats",{}).items(): _k = _k.replace("-","_") setattr(self,_k,_v) @@ -295,7 +295,7 @@ class unifi_device(unifi_object): ## change ip to local ip self.wan_ip = self.ip self.ip = self.connect_request_ip - + if getattr(self,"speedtest_status_saved",False): _speedtest = getattr(self,"speedtest_status",{}) self.speedtest_time = int(_speedtest.get("rundate","0")) @@ -303,11 +303,11 @@ class unifi_device(unifi_object): self.speedtest_ping = round(_speedtest.get("latency",-1),1) self.speedtest_download = round(_speedtest.get("xput_download",0.0),1) self.speedtest_upload = round(_speedtest.get("xput_upload",0.0),1) - + _temp = list(map(lambda x: x.get("value",0),getattr(self,"temperatures",[]))) if _temp: self.general_temperature = "{0:.1f}".format(mean(_temp)) - + for _port in getattr(self,"port_table",[]): self._NETWORK_PORTS.append(unifi_network_port(_PARENT=self,**_port)) @@ -370,7 +370,7 @@ class unifi_device(unifi_object): _ret += ["","<<>>"] + [str(_port) for _port in self._NETWORK_PORTS] if self._NETWORK_RADIO: _ret += ["","<<>>"] + [str(_radio) for _radio in self._NETWORK_RADIO] - + if self._NETWORK_SSIDS: _ret += ["","<<>>"] + [str(_ssid) for _ssid in sorted(self._NETWORK_SSIDS,key=lambda x: x.essid)] return "\n".join(_ret) @@ -390,7 +390,7 @@ class unifi_site(unifi_object): continue #print(f"{_k}:{_v}") setattr(self,f"{_name}_{_k}",_v) - + ##pprint(_api.get_data("/stat/rogueap")) self._SITE_DEVICES = [] self._PORTCONFIGS = {} @@ -470,13 +470,13 @@ class unifi_controller(unifi_object): _dict = defaultdict(list) for _ssid in self._UNIFI_SSIDS: _dict[f"{_ssid.essid}@{_ssid._UNIFI_SITE.desc}"].append(_ssid) - + _ret = [] for _ssid,_obj in _dict.items(): #pprint(_obj) for _key in ("num_sta","ng_num_sta","na_num_sta","ng_tcp_packet_loss","na_tcp_packet_loss","ng_wifi_retries","na_wifi_retries","ng_wifi_latency","na_wifi_latency"): _ret.append("|".join([_ssid,_key,str(sum(map(lambda x: getattr(x,_key,0),_obj)))])) - + _signals = list(map(lambda x: getattr(x,"ng_avg_client_signal",0),filter(lambda x: x.radio == "ng",_obj))) _ret.append("|".join([_ssid,"ng_avg_client_signal",str(mean(_signals if _signals else [0]))])) _signals = list(map(lambda x: getattr(x,"na_avg_client_signal",0),filter(lambda x: x.radio == "na",_obj))) @@ -488,7 +488,7 @@ class unifi_controller(unifi_object): )])) _ret.append("|".join([_ssid,"avg_client_signal",str(mean(map(lambda x: getattr(x,"avg_client_signal",0),_obj))) ])) return _ret - + def __str__(self): _ret = ["<<>>"] for _k,_v in self.__dict__.items(): @@ -515,7 +515,7 @@ class unifi_controller(unifi_object): if _device._piggy_back: _ret.append(_device._get_short_info()) ## device list - + ## ssid list _ret.append("<<>>") _ret += self._get_ssidlist() From 47d2713f87c947c80e3edbfca432870db6ca60a2 Mon Sep 17 00:00:00 2001 From: Robert Sander Date: Thu, 9 Mar 2023 22:55:40 +0100 Subject: [PATCH 2/9] sometimes an SSID gets removed. --- .../plugins/agent_based/unifi_controller.py | 101 +++++++++--------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/lib/check_mk/base/plugins/agent_based/unifi_controller.py b/lib/check_mk/base/plugins/agent_based/unifi_controller.py index a4b9b06..edd7e79 100644 --- a/lib/check_mk/base/plugins/agent_based/unifi_controller.py +++ b/lib/check_mk/base/plugins/agent_based/unifi_controller.py @@ -115,6 +115,7 @@ def check_unifi_controller(item,section): state=State.WARN, notice=_("Update available") ) + yield Metric("uptime",int(section.uptime)) if item == "Cloudkey": yield Result( state=State.OK, @@ -270,7 +271,7 @@ def inventory_unifi_device_shortlist(section): def discovery_unifi_device(section): yield Service(item="Device Status") yield Service(item="Unifi Device") - yield Service(item="Unifi Device Uptime") + yield Service(item="Uptime") yield Service(item="Active-User") if section.type != "uap": # kein satisfaction bei ap .. radio/ssid haben schon yield Service(item="Satisfaction") @@ -316,7 +317,7 @@ def check_unifi_device(item,section): ) yield Metric("user_sta",_active_user) yield Metric("guest_sta",_safe_int(section.guest_num_sta)) - if item == "Unifi Device Uptime": + if item == "Uptime": _uptime = int(section.uptime) if section.uptime else -1 if _uptime > 0: yield Result( @@ -673,41 +674,42 @@ def discovery_unifi_ssids(section): def check_unifi_ssids(item,section): ssid = section.get(item) - _channels = ",".join(list(filter(lambda x: _safe_int(x) > 0,[ssid.ng_channel,ssid.na_channel]))) - yield Result( - state=State.OK, - summary=f"Channels: {_channels}" - ) - if (_safe_int(ssid.ng_is_guest) + _safe_int(ssid.na_is_guest)) > 0: + if ssid: + _channels = ",".join(list(filter(lambda x: _safe_int(x) > 0,[ssid.ng_channel,ssid.na_channel]))) yield Result( state=State.OK, - summary="Guest" + summary=f"Channels: {_channels}" ) - _satisfaction = max(0,min(_safe_int(ssid.ng_satisfaction),_safe_int(ssid.na_satisfaction))) - yield Result( - state=State.OK, - summary=f"Satisfaction: {_satisfaction}" - ) - _num_sta = _safe_int(ssid.na_num_sta) + _safe_int(ssid.ng_num_sta) - if _num_sta > 0: + if (_safe_int(ssid.ng_is_guest) + _safe_int(ssid.na_is_guest)) > 0: + yield Result( + state=State.OK, + summary="Guest" + ) + _satisfaction = max(0,min(_safe_int(ssid.ng_satisfaction),_safe_int(ssid.na_satisfaction))) yield Result( state=State.OK, - summary=f"User: {_num_sta}" + summary=f"Satisfaction: {_satisfaction}" ) - yield Metric("satisfaction",max(0,_satisfaction)) - yield Metric("wlan_24Ghz_num_user",_safe_int(ssid.ng_num_sta) ) - yield Metric("wlan_5Ghz_num_user",_safe_int(ssid.na_num_sta) ) - - yield Metric("na_avg_client_signal",_safe_int(ssid.na_avg_client_signal)) - yield Metric("ng_avg_client_signal",_safe_int(ssid.ng_avg_client_signal)) + _num_sta = _safe_int(ssid.na_num_sta) + _safe_int(ssid.ng_num_sta) + if _num_sta > 0: + yield Result( + state=State.OK, + summary=f"User: {_num_sta}" + ) + yield Metric("satisfaction",max(0,_satisfaction)) + yield Metric("wlan_24Ghz_num_user",_safe_int(ssid.ng_num_sta) ) + yield Metric("wlan_5Ghz_num_user",_safe_int(ssid.na_num_sta) ) - yield Metric("na_tcp_packet_loss",_safe_int(ssid.na_tcp_packet_loss)) - yield Metric("ng_tcp_packet_loss",_safe_int(ssid.ng_tcp_packet_loss)) - - yield Metric("na_wifi_retries",_safe_int(ssid.na_wifi_retries)) - yield Metric("ng_wifi_retries",_safe_int(ssid.ng_wifi_retries)) - yield Metric("na_wifi_latency",_safe_int(ssid.na_wifi_latency)) - yield Metric("ng_wifi_latency",_safe_int(ssid.ng_wifi_latency)) + yield Metric("na_avg_client_signal",_safe_int(ssid.na_avg_client_signal)) + yield Metric("ng_avg_client_signal",_safe_int(ssid.ng_avg_client_signal)) + + yield Metric("na_tcp_packet_loss",_safe_int(ssid.na_tcp_packet_loss)) + yield Metric("ng_tcp_packet_loss",_safe_int(ssid.ng_tcp_packet_loss)) + + yield Metric("na_wifi_retries",_safe_int(ssid.na_wifi_retries)) + yield Metric("ng_wifi_retries",_safe_int(ssid.ng_wifi_retries)) + yield Metric("na_wifi_latency",_safe_int(ssid.na_wifi_latency)) + yield Metric("ng_wifi_latency",_safe_int(ssid.ng_wifi_latency)) @@ -732,26 +734,27 @@ def discovery_unifi_ssidlist(section): def check_unifi_ssidlist(item,section): ssid = section.get(item) - yield Result( - state=State.OK, - summary=f"Channels: {ssid.channels}" - ) - yield Result( - state=State.OK, - summary=f"User: {ssid.num_sta}" - ) - yield Metric("wlan_24Ghz_num_user",_safe_int(ssid.ng_num_sta) ) - yield Metric("wlan_5Ghz_num_user",_safe_int(ssid.na_num_sta) ) - yield Metric("na_avg_client_signal",_safe_int(ssid.na_avg_client_signal)) - yield Metric("ng_avg_client_signal",_safe_int(ssid.ng_avg_client_signal)) + if ssid: + yield Result( + state=State.OK, + summary=f"Channels: {ssid.channels}" + ) + yield Result( + state=State.OK, + summary=f"User: {ssid.num_sta}" + ) + yield Metric("wlan_24Ghz_num_user",_safe_int(ssid.ng_num_sta) ) + yield Metric("wlan_5Ghz_num_user",_safe_int(ssid.na_num_sta) ) + yield Metric("na_avg_client_signal",_safe_int(ssid.na_avg_client_signal)) + yield Metric("ng_avg_client_signal",_safe_int(ssid.ng_avg_client_signal)) + + yield Metric("na_tcp_packet_loss",_safe_int(ssid.na_tcp_packet_loss)) + yield Metric("ng_tcp_packet_loss",_safe_int(ssid.ng_tcp_packet_loss)) - yield Metric("na_tcp_packet_loss",_safe_int(ssid.na_tcp_packet_loss)) - yield Metric("ng_tcp_packet_loss",_safe_int(ssid.ng_tcp_packet_loss)) - - yield Metric("na_wifi_retries",_safe_int(ssid.na_wifi_retries)) - yield Metric("ng_wifi_retries",_safe_int(ssid.ng_wifi_retries)) - yield Metric("na_wifi_latency",_safe_int(ssid.na_wifi_latency)) - yield Metric("ng_wifi_latency",_safe_int(ssid.ng_wifi_latency)) + yield Metric("na_wifi_retries",_safe_int(ssid.na_wifi_retries)) + yield Metric("ng_wifi_retries",_safe_int(ssid.ng_wifi_retries)) + yield Metric("na_wifi_latency",_safe_int(ssid.na_wifi_latency)) + yield Metric("ng_wifi_latency",_safe_int(ssid.ng_wifi_latency)) register.agent_section( name = 'unifi_ssid_list', From 5af8b06f422d29063749e6c65f7ab1fc70c68b3b Mon Sep 17 00:00:00 2001 From: Robert Sander Date: Fri, 16 Feb 2024 09:47:31 +0100 Subject: [PATCH 3/9] removes uptime metric special agent returns <<>> section --- .../base/plugins/agent_based/unifi_controller.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/lib/check_mk/base/plugins/agent_based/unifi_controller.py b/lib/check_mk/base/plugins/agent_based/unifi_controller.py index b148809..ff6b99a 100644 --- a/lib/check_mk/base/plugins/agent_based/unifi_controller.py +++ b/lib/check_mk/base/plugins/agent_based/unifi_controller.py @@ -270,7 +270,6 @@ def inventory_unifi_device_shortlist(section): def discovery_unifi_device(section): yield Service(item="Device Status") yield Service(item="Unifi Device") - yield Service(item="Uptime") yield Service(item="Active-User") if section.type != "uap": # kein satisfaction bei ap .. radio/ssid haben schon yield Service(item="Satisfaction") @@ -316,14 +315,6 @@ def check_unifi_device(item,section): ) yield Metric("user_sta",_active_user) yield Metric("guest_sta",_safe_int(section.guest_num_sta)) - if item == "Uptime": - _uptime = int(section.uptime) if section.uptime else -1 - if _uptime > 0: - yield Result( - state=State.OK, - summary=render.timespan(_uptime) - ) - yield Metric("uptime",_uptime) if item == "Satisfaction": yield Result( state=State.OK, From f96bd89f55beafb311d01c3b70131d1e0ce4d354 Mon Sep 17 00:00:00 2001 From: Robert Sander Date: Fri, 16 Feb 2024 09:56:47 +0100 Subject: [PATCH 4/9] renames files in repo --- .../special/agent_unifi_controller | 4 +- .../checkman => checkman}/unifi_controller | 0 .../checkman => checkman}/unifi_device | 0 .../unifi_device_shortlist | 0 .../unifi_network_ports_if | 0 .../unifi_network_radios | 0 .../checkman => checkman}/unifi_network_ssids | 0 .../checkman => checkman}/unifi_sites | 0 .../checkman => checkman}/unifi_ssid_list | 0 .../checks => checks}/agent_unifi_controller | 0 share/check_mk/inventory/unifi_controller | 76 ------------------ unifi_controller-0.88.1.mkp | Bin 0 -> 16946 bytes .../plugins/metrics/unifi_metrics.py | 0 .../plugins/perfometer/unifi_performeter.py | 0 .../wato/datasource_unifi_controller.py | 0 15 files changed, 2 insertions(+), 78 deletions(-) rename {share/check_mk/agents => agents}/special/agent_unifi_controller (99%) mode change 100644 => 100755 rename {share/check_mk/checkman => checkman}/unifi_controller (100%) rename {share/check_mk/checkman => checkman}/unifi_device (100%) rename {share/check_mk/checkman => checkman}/unifi_device_shortlist (100%) rename {share/check_mk/checkman => checkman}/unifi_network_ports_if (100%) rename {share/check_mk/checkman => checkman}/unifi_network_radios (100%) rename {share/check_mk/checkman => checkman}/unifi_network_ssids (100%) rename {share/check_mk/checkman => checkman}/unifi_sites (100%) rename {share/check_mk/checkman => checkman}/unifi_ssid_list (100%) rename {share/check_mk/checks => checks}/agent_unifi_controller (100%) delete mode 100644 share/check_mk/inventory/unifi_controller create mode 100644 unifi_controller-0.88.1.mkp rename {share/check_mk/web => web}/plugins/metrics/unifi_metrics.py (100%) rename {share/check_mk/web => web}/plugins/perfometer/unifi_performeter.py (100%) rename {share/check_mk/web => web}/plugins/wato/datasource_unifi_controller.py (100%) diff --git a/share/check_mk/agents/special/agent_unifi_controller b/agents/special/agent_unifi_controller old mode 100644 new mode 100755 similarity index 99% rename from share/check_mk/agents/special/agent_unifi_controller rename to agents/special/agent_unifi_controller index 16c31c6..5f909a9 --- a/share/check_mk/agents/special/agent_unifi_controller +++ b/agents/special/agent_unifi_controller @@ -23,7 +23,7 @@ ## SOFTWARE. ### -__VERSION__ = 2.2.0 +__VERSION__ = "2.2.0" import sys import socket @@ -645,7 +645,7 @@ if __name__ == '__main__': if _api.is_unifios: labels = {"cmk/os_family": "UnifiOS"} - print("<<>>" + print("<<>>") print(json.dumps(labels)) ##pprint(_api.get_data("/stat/rogueap?within=4")) diff --git a/share/check_mk/checkman/unifi_controller b/checkman/unifi_controller similarity index 100% rename from share/check_mk/checkman/unifi_controller rename to checkman/unifi_controller diff --git a/share/check_mk/checkman/unifi_device b/checkman/unifi_device similarity index 100% rename from share/check_mk/checkman/unifi_device rename to checkman/unifi_device diff --git a/share/check_mk/checkman/unifi_device_shortlist b/checkman/unifi_device_shortlist similarity index 100% rename from share/check_mk/checkman/unifi_device_shortlist rename to checkman/unifi_device_shortlist diff --git a/share/check_mk/checkman/unifi_network_ports_if b/checkman/unifi_network_ports_if similarity index 100% rename from share/check_mk/checkman/unifi_network_ports_if rename to checkman/unifi_network_ports_if diff --git a/share/check_mk/checkman/unifi_network_radios b/checkman/unifi_network_radios similarity index 100% rename from share/check_mk/checkman/unifi_network_radios rename to checkman/unifi_network_radios diff --git a/share/check_mk/checkman/unifi_network_ssids b/checkman/unifi_network_ssids similarity index 100% rename from share/check_mk/checkman/unifi_network_ssids rename to checkman/unifi_network_ssids diff --git a/share/check_mk/checkman/unifi_sites b/checkman/unifi_sites similarity index 100% rename from share/check_mk/checkman/unifi_sites rename to checkman/unifi_sites diff --git a/share/check_mk/checkman/unifi_ssid_list b/checkman/unifi_ssid_list similarity index 100% rename from share/check_mk/checkman/unifi_ssid_list rename to checkman/unifi_ssid_list diff --git a/share/check_mk/checks/agent_unifi_controller b/checks/agent_unifi_controller similarity index 100% rename from share/check_mk/checks/agent_unifi_controller rename to checks/agent_unifi_controller diff --git a/share/check_mk/inventory/unifi_controller b/share/check_mk/inventory/unifi_controller deleted file mode 100644 index 32b9be8..0000000 --- a/share/check_mk/inventory/unifi_controller +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python3 -# -*- encoding: utf-8; py-indent-offset: 4 -*- - -from pprint import pprint -from collections import defaultdict - -class dictobject(defaultdict): - def __getattr__(self,name): - return self[name] if name in self else "" - -nested_dictobject = lambda: dictobject(nested_dictobject) - -def inv_unifi_controller(info): - node = inv_tree("software.os") - node["version"] = info.get("controller_version") - -def inv_unifi_device(info): - node = inv_tree("software.configuration.snmp_info") - node["name"] = info.get("name") - node["contact"] = info.get("snmp_contact") - node["location"] = info.get("snmp_location") - node = inv_tree("software.os") - node["version"] = info.get("version") - node = inv_tree("harware.system") - node["vendor"] = "ubiquiti" - for _key in ("model","board_rev","serial","mac"): - _val = info.get(_key) - if _val: - node[_key] = _val - -def inv_unifi_port(info,params,inventory_tree): - _parsed = nested_dictobject() - for _line in info: - _parsed[_line[0]][_line[1]] = _line[2] - - _interfaces = [] - _total_ethernet_ports = 0 - _available_ethernet_ports = 0 - def _saveint(num): - try: - return int(num) - except (TypeError,ValueError): - return 0 - for _iface in _parsed.values(): - _interfaces.append({ - "index" : int(_iface.port_idx), - "description" : _iface.name, - "alias" : _iface.name, - "speed" : _saveint(_iface.speed)*1000000, - "phys_address" : "", - "oper_status" : _saveint(_iface.oper_status), - "admin_status" : _saveint(_iface.admin_status), - "port_type" : 6, - "available" : _iface.oper_status == '2' - }) - _total_ethernet_ports+=1 - _available_ethernet_ports+=1 if _iface.oper_status == '2' else 0 - - node = inventory_tree.get_list("networking.interfaces:") - node.extend(sorted(_interfaces, key=lambda i: i.get('index'))) - node = inventory_tree.get_dict("networking.") - node["available_ethernet_ports"] = _available_ethernet_ports - node["total_ethernet_ports"] = _total_ethernet_ports - node["total_interfaces"] = len(_parsed) - -inv_info["unifi_controller"] = { - "inv_function" : inv_unifi_controller -} -inv_info["unifi_device"] = { - "inv_function" : inv_unifi_device -} - -inv_info["unifi_network_ports"] = { - "inv_function" : inv_unifi_port -} - diff --git a/unifi_controller-0.88.1.mkp b/unifi_controller-0.88.1.mkp new file mode 100644 index 0000000000000000000000000000000000000000..8b4e9061e2d0ef67f2339f14c530460f3e54ed86 GIT binary patch literal 16946 zcmbr_Q*bT}5GLrDC$?>yC$?=TC$??dwr$(CZQD-1`DbTqW~%mbZ@T)rue$5$mmmrX zD2jOQ9|+*a$HwiDv+>^hH2ViZ>+BlX6be{KkNmCC>mvB}RAyIBqSP$cIW`Uyq8l!~ zMOLDf2XOHLH^<;rDb+}~!5r_KwbQeD?OLx=Nu5%xRPlT|9eRtf$GJ>+&5`wtA@pch zv|9b6V0U|Scgt}Z^GQE^cXzkuXV5~>E3EMzZ~{C*@aq;DCu)Thty||l99c)}Hyuk6 z^<`Aj9|^j3=QYb~zl}xS+W^Y$CRSADRRsvh(Fhm`&E@&W!D4n^Z|sKdersanb!W!g z)|D-*V`V_!4Q)yQIk3&Yxq-zs;O?M*)3uc2MYslO$@9~&1E}v25ZU^HLMp)GM%fDc z?mr#R1t&jlfV}t7CbegQsGH4;bc-j0=Z%t||J}ajSv3hWmOPa;B@HcIm60wl@23{* z|C9rgsRPGZN08fN_lfsqboe${!o^|S=K*zMNoL{E=-h>Lf|q$OW!dHpGlRoj+r!1r zcx*{LRc+Q>p}p}6%#}wcF+07Jx#@TM{Dq&R=&h$S|A=gyv9UV`X}*cbMm#0E_viz?!9g#b4KXMQVdCok3wiYi|W;= z!pB#;aq=akFgz=r7`Y`dkEu{{ zpc*>{{4+w32cvbmBoh)Y2bUFGCN3HuqYO-dG+TiCt(h_esN1|5g-t#bxJZ}4Q93Rj zeb0JKy1V15)84R7VU38dz!kh%Nw2_r?cip@4Y!G;O&Sry88vs!)@i};v8lDP#{*2_ zhw~(dNHU23{eg?%q_$uzR&F_r&+e5)A1w-8l$nE%z| zX{G7sOzhKVNyc%Tn*%ib=v$_%ss!)p0|;0j+6n!08KWzvA*u=J+4ItK0_VA&$Ad*#){y{ZEtEh&iTQ(kW zq8ab3-ithAx8Gx~B8PsdA7-m%Y!~#HR;J~W8(BPpG0W3;YiqC99~2yqRoZ$;w0a!t ztPbH-0`1-L+WP)~tJe_$dXPgY9d7|A)Bdui4SWhD!9aM?z$tg|K_w>}@rM1hdv1m@ z;MvyuuNcad;UT9mMFE*9feka!x#Nb(5%c}6b6B3RXz)#i$V?@Ksz=ZYC z3MPt=!x`LxFs2lW@4<-i4BnJ*k2;3R@z02WO_kw~L;TSlhY&bi5x+ht!o@L(L_6@Q zrX$bkHj3=O{f7cr<=aeYU}4Fpl=}kV(_`r;n9)onBJgKc?f0evo2A~M7$OqM0NXdv z=mA>cd9+*PDCkV%eS?edqIUK=;Nea;0&8lVx}OXjpsQ@W>U0mCBjO1H?Ih@~wh+Vs zzVK}+)Hz|b{HZ`PGg(Y*A_*SN>&oG&E%+&YN^~EbsJkzOG)q|y_Y~?H|k}0a_}(j-kZ0%s_T+p)jy@e9rQpb3>1Nm zavNQ3c+p~=Ht%~6E^mjpQO@2DzCPf2Xp|2tF3CT-ZEF?vuc~cfgC0IE4x_M9#GyJE z!BCI6Zk*((eOl5$fqNW1a>21)T;xE<+ zaOMxdJ9^*UqZeZ-UB~)20?+1s3bUql*t|0~_2Xf_4rJQ9Yx+@aJZPP9{O)pmVI!`RHM2+0~KGdU3$!?91sx+A^KSv+)NA%Pg2v*AWPy{)&{- z0%gLY!=wRi5o|pK8sf|ZRE*_vhr_EAD+{K-_<#up3PEbvz zxdFz1y33NEjWMMf2)VQ;&@*)QuhGc5z63BTsP^Hc9r^ieKrKD1( zL4ybJ5w`fyOQ)-|I2}&A6C^&4I1X30fjMb+b%Bz8yZy+aV}g`)Bz&&Hlq&VyJ9%`$ zaYc1lo40p!-SysPQsn4&jo~%9?evB=G?7(qmt!eNjsm4TS&QL~?yFiXQ<0(Vif z^Gb1RbU)zB9D+langzet;Lje6OiCf2$pltgzFklnps~zsQJX08VXv;VYGx8c?nW=A zEmM~Iwv3J47pYVqrwB~KY>1Q>L+QlzNyciJZp9Q9u)tmeIUlf$y`ispBSDloW0|Pi zQWqAWJxteRvW>`uj>IwvW6wp_Uyj{dv5!n=jM5M0QrWy8rb)?Qe>!nw z$w>2RQwIQ#(KJsk4UYhh#ea9aor7Iu_mAkUW0a9=UVm`qNFy%9S$m^0#_S-N#J;Do zg0g#*E&doos^TFRW7#rEBymS4KEJTnOBWa4WTa+g`?x^9nGL(ITtCTY5@!H3liIhU zTL}XpCN8-lQkr>=J7oGIfj;!JrPNo5%$OUlCQi`eTt>i~%ofl%M)E4*uDCTm$!k=j zliCTBr>)vU4xfyIqWnyMon zH;^H}#SouF5(;I2m)zgc13VNdnL;BXkdWDdQ+V94lW`le7d_<7e3xHPHl3M3o166Q zsRh%QS7#us3rdX%*?JVpXyTA`Js1US7~8jA)-Quf)vu#b3xuPdyy{UK)D50o4My@6 zv7GIC#Z`S48()6wjFYtz+-1s8nB~@;oplNXo?DMSA_Rr2DOD~y2?d%(BVIvlG zLmwGjLOwNflgKpnDJ><-N0v{$DGU0M-1F86EYGduzd2poWtX(7uUp5aS!sjVE(l1V z>VbMGNLrQ@fBdCLz3%DjQEZh$Sgoh)K+UHWN_PsKh=Z$_!4rs``9bYkiol73#`$}h_jy|d#o2K1YF4cNLxaPSD{)YP^&+wB>RIA|!$B!D$ zSVl9a?_1r(BT8lRF@z^OvLj5Vz@zenVyxIF%0FSaPFJyWc({%lS*yd3rM*NM@x(A# zz(ow%@Q!91!);AKE;jgCx6^ts0s~=sghH51lkL+Has|Xb5KYb#o9|mt6ub=S593`< z>T<56eT%TCyv&|1olC-5pJYz>LS*u8!3>MVQX@CCj6vS1z}+LmuQ&cEDjb07EH-GP zi4W=XQ%^4k7oW`=-KJw1axM%hTlz&=%lMv1|6~dd&Ybyao52;77KRAuxAjK|qd_`$ zY`9@pHkUI-;WgpC9NJQr_)I}w`!bpzZ?%9UB~eW!ISA0owFdG6GqvO}H?{;7xi0cQ zmo={G(nm6+e~8$3nTW}XgrTzGgM%>LPIq_!8k_;f=7eRp{i{#XR667-&Vh=nOK9{k zSXtrA{ya{Yo{+gWN27I!+Zk8u&7We&%m_q8N&()fDLbb<{KiW^W>kT)xG)zzu324Z zi5>~R~@Zc%k+L%+fLbB8P&mM@^-(Rob z-(F!d#@I0BaW)|cEml2jBbsA}@VDIv5|+|&4%gA^K-E0mg~P0IZWXDKK|IicqcWu^ z2n2&^>G1-0zlYo~Huw+hYVQ8wGpt5fZ#VGEt3 z1;L;TpQyEOVe0GWi`tlB#wEd#K{A^(*_LYfHKQgz`$uCcwjr&6jcsHN#uNU~fz42M z9EbsS#3ePV6nS2>=g4L-L+sDWAN@HA<@waNyBSekYf_Xpm%4D~uV&ZDd0tD{CU20^ zmzm8!>CBNv_vRJ6?eE@pl}EEjYDev77azY2gF1-ZM?F_bA?Wxl5i%3F+U4AQBDYq< zjPBjDi})rE4S3RbUU?x7YlpDXRHpWjm~^Z-ct@9tw(HYi0!f|H*Js6Mp1TJ8>>Wk3 z2#q4+IhUd>#gQEG}*D$V3~`b$COE2HSPejaq);3%K$|1}A` z!Uv=|g0KG0W6|+OA*hG)XU)p;@^r>-n475#+n&2iHc3-ObQZxOF#cLdiSq_eOjx6| z&3UYtMJ2uzGL1=R-_T6gy*BZV?baZ?qHwne?MaTbyV2PJ&71>+kKqZUIXaHhuR~ga z9Gl1?C0JeqM{}dY@Yx|Hv)2F*o4U|+%zRT2d>(A7VIb3Zm(HEwTr(&l`u*-A$C}oJ zv4VZ^V$4tB@niL_OK)2<@Ob}H?3T^ANjZ@&oL(t)!*y-K`Sm&lJ~VXo&)MHy?qMu> zsaxuZH@{%6d)W+#WKC(f&LBeFQrR?M*J-V>-(bx)Gb0f~xkjanwZq}H`52>&T0s)e zCtSg^=7+O`Z|S=mK!HhWU^m>N;-9t4v&X1{e(cMEnD62UI8M~jE%(D+#wCKS2Ex=$ zSkAAvbOxyO0Hu6n!XR$t03&}&dh?~VVJu;Vf^H+BbUja5f7LDe0xHA#V0J{S^}d3e zWzFv2EA*sAgZ}WZtY{!svc2)+jW^t82fs~}#Xw8COEsbg&`@ZwxLL~LZUKrFMC&vD zDn*R0JV|nPFIIGm@dY3cr1HfByC115!eb;wZ~-X~`l_Jd?j1vfPGY|}Crnua)pU;89GH6<>M=$3A6{Gk zTMf{uy2D%bt)&2JeuRB~gf;nKd&T*pvMvC^i5WU2Dz@5S>XCm53L2g3%q(RcFC&aq z^0mDsprqnd@)c^zs^A{LjxmTHNy_wBqYLIa<0H8ahM~9ee-k)Y5-NGC@bSbRDHERv z_*ti3wHkpbs-o2r9l#Xv2Wjx;0$HQi8u57-r7Kdc3n>^Rg$E|^7h&xHCv3fM&Szmo zczd<#is8=1Wy8>5ptJ63F?}+_=Qwfrn(<8Py#t?~WBU|QhQLnUJIw1|d=MtWvcs`7 zl;+;9x)Zhn4NmW`FbWZVp5uR#kVDTL-_^?*vmcz7LU41-B9<$S-J=-?7#qzo8uIx* z4h>YQ(ozp1mu?y1ORY3}v(yuSg5Y}G8to1)R1BKt7mUbvtgGQ!$ZDH>^=)*;tckRPF8} zQ;TR^p5yY-ctYviPM@R}A2FvD=%OC5h% z0J9?Umde^WS;rctJLJp?HjMSa0*4w4y6uK79QEEP#hX29>VOxEEon{67eJTYZ)$iX ztb~j)LeBUg>4c8Y=PX&$Z-*v>-N&heTL7x^T#lQvUXB*$gv;7dM2Y=zNCd@i%ummC zLy6SmnlUCn!pgyYA_Vn*F(3FV6X&grE|+0JNx&VaoTZEv%*WE`C3Kd~_7Yd9{MmN6 z&Bu@O->JE?6EaKh@~KNT560_2<$vu{D%`(#j_imN_ZpcLKMOXpJJAvgQ~)y>@~nrN zgUdWZxC#N{aDo>ejfQs9wn?|_ z>CxfZn5{Lt(gZo>0YAz9L0FQUq^yuxt2SR&6TOCF8yt0w4YXpNumDT1F7U%`JY7ri zt=rXnKSSQy1~$L2+6EzeKuS=TQdFfO&oe5IjX|;5lN;5z5dXtQ&125vh{uRP)e^^6 zVZLV3N#t_!8&(P@mO;O&dy%+tD`ApK<@KqnI?*!LT@o~2F#;)sBqh|Ci((<^>A}H7 zmYzvu;$yIZmabQ0$1m%2u_u}oGfAoi?PfC1k;%viSRp&LA*kU77&k29d+b5+oEFL# zHMx0SdX&<_LvpHLzNWKziYf})zi@?uJ~cQ%)fzQK@jg*@OGwTANN^;4W$u!0tC)M_ zQM+1qrd@w&`O%5paf&0&@fo+mH`5|Mk*(Mzab=%%Mx{S#x-KgmJ8>TFFATI$o4R&x zIJOoTb1=GabCevNbLZdl)=2s43^}6$_EnPtm=P==3A?_;4uJNCdcEs~vZXhJj>X(1 z@q(kPDTP$E+?8h$QC+viR~351vX=_9DWRr=X8+~LYIN3N$l`-`TPLhh4A0J?bu&x_ z4}4LsVMNsk)*~qi4QPj7;h>J7^&I?tVxHyKGi!#VQ*x+txd~a0v)33#pKGlzhdg)P z7Dw6I>A$Z^pVf|AotH@*26~F>z3U}z_mtbqCcZ|ybDOhw3^;u&j0WZFZf7>_nq3T9 zOByVe)z-RAik+yIGOTy-p$H;&)^60HoKaa2eV;H8csnq)lYY(@$d~*kre)dp7|W-b z_dGEVHgYRa882LU%U4pEs;!ARGsJ5W*o}T4D$Zi&*cd)KVIAa<`E2K33P38N0Ps+c(zcwUnpuMmbMoO@|jS7_n{km_$8afE6Y(t~w&OfalOw>{u57PBRv5wk-FSW7>24S4e5v~Ba7~-FaBGIfz&SoLB5<@Ht!WF2zFJBLxH9*YT~)L z#4L%!Di}aA`VvD!wb;eTy`8`;Z1H88$zK=9BJaEzDK~))su^x-!;VQ2NeX}ks)0P8 zM+sZ*W63<=+huJXE0@IFL?yz zyQOt|{H$7CGs?1w7?;lxFw1zw|L>7xaqTfF!mN0RBsD?L*63b*rMDx5C`nSs5_srm zVam2eKy*! zRk>)Suef(k)u;BdFRs#Wf=)Dog12u(RumdpU$}v!Gsc+*vKUtOk%RmxK8*L62*G1q z82|DAZQn-&_&I-Pa(zqhvF`ZSEMLBV&hC(gX`Zm+ru}+8`86JXp9D#&0iS|C7>8H$ zT9+SRb9*G-C2x7kb^LaZuTH;@Pkysga{%r;zOy<$K%K`67KXR%lR70uKCA3@*-ANk zC0mgK;$8NqyzleU$V=t@RMU{YUzjb@*e~cCaRg)>#;(cX_MO^CP{U)_nC^M_54hgC z%>CUvPAxA+ZIaNO%O}$Fa;quM--7PLlGSrnZKN1G-6icQRo<0;w-;fbT>Y#yv$WHH zIK^91AgT-pdrHjA>9aEdN2=)qHi8?djFaFGTDEE9i#Q$Po<`rhlqcK|R+jDuWS%4H zfHK8scnVaz%`_t$XcW1+NToq`@5tt?(XHG}*9Itv+N&Q_Vdp)xf6ZI>cqKXP2r1h) z#^4_p!p5qP8I$*~SbsPiE=7q|?a@J>m4-{2QBNps7(gHNz#Qf!1tdBUxG6X$mVGdq+%ua-nUuOfaZOZxsoS20&gW_Wjf+49Tn zrd@UHY@}iC?cMT1IMZ1Fv9AQl<_^H4$gPMlYvoUM)T2_7uWRMG;e25Zc$1nK7p;-s zTp`B;yo%L;yu&Z~UgczuRCjxo6!*ZO6gA(d_YIrRdD=x$Yqg|9PUwNT&_H7*GDKAz z-$>8J2+qDf&(S@#m3;g|cHjCE&2AVrn-)l!(;*rV@7 zQMUSKDN2RLS9Gj*q)=>`Wal{+Hu9%(j7XDi7*zx>M1mZ1Yjb(IGW-f1Etn{q`U zHJ-Ae>_9_L{DEntxrktYJKd?(DX?pGV<>4Z%@m{4lk)Xij8^PRKps>heiRhuNml8q z&Xk`m4%RE9B(r|wR?0ljGtAVfNR!1ns$;|*lk~DoOh!aa;e{Ct0vntqkx{&tg`@K8 zOAl$+pBAe=T_oiD6)p9l#lq{ehSgS1s;`od4>JHt+MIb{X!H@Z*h)(ZA<$O++kw3G zw<9l4&#icR>z#^BclS9`DUldR=62hJTz@si@C#WJd!*tkVi~_Y)nj{^fkEE(aMyLB zb%RW|*%_JJPXWh26G|n;-os^sMoQy>MJ>beO$e@upc2#K-Rnil^iMA_&tuHCwWMIq zRv-A5-8Gh%G5G7Er;wXe!@W+pS&6qREQ|DkJo`u|NS?XYZn%!Ed-{g>o+4+&i#4pg zUu4lNO!^E%{l;Os#alj`+hBGXhTX1n?fUBK?90f6=qYImGpLpj=BW)VbDBtq<}Wv2 zvQaotGWP*PLz7o*n?21veaD>CcbtD=SBflV5y%ql$E%6P$HN$cG~t!BS>lK8 zBia-2jv+7Gj{q?q`KSL_IG@U2FTMe3oEV!Tqx6We*lZ%*I1Ofkb64VS!7oaeeMs|z zjvJtY<)0l_|2ATKy$C7?%oGZ_P*vWb*xCxUaq68G2BVlr%3g0v3+oT0Sw^0FS$Hr< zX5H*u*Va@yX z61NXeO65SLpoFy(hzEyf#(JoCt=MqxqdUD#>%4X(SBL>scVZ+RcsSp=W_#Ujyu2J2 z;HT5N*eP*y|9r%kUO;THdwjrn7l<~_?z;mN3&xkBdsQ`+y&kBTI(~dfR4#Wtq!e4H z>|#kb@9{~X-`eehMVycW6PLmWis`}O_;!loJvjQ}f{>81>kK z34r;~q#1G^-5;*0@bCww%w+-{y`3!P4#q$L18WW*-E15W7x3YQW;!$zW3q>v?1v~c z-z2ITn@u8?*6C?R_>g=&W5(!4874Nv!Que&+I$N8c8{ftXH% zzMTsdrboXrI8S26dlfnkH)o;C*P`kQ^&&oGeme8R;4je0^WHc=soat~%n)+MB4WhF z_x1TMjfNPS@-DGfqB+^CcQJK4JCREvS1hqDOMVI#dfOZlVsD96zrj0&%z>v6roFbj zv$@MDuEzv$(}u+3(Z9vWeo+>(c8i{oc(DPue?xNzf1i6k$H}_SX|*9 zdbJ`B*VBLXBE@Y(!^Z2ski2*c3o+#u*bLoEr<@=rp*zn@fyYZTIH1VS?`&@5%0N_@ z?q^5u*hXrAla;$cMro33zaUc|2DX=8I||k?6^r01tnBZ{qEMcQx|{CH>tS+8DLXRj zrz%v@^!}RP7n&>^d+s8hqHxO>x^?OH(EwD+V1o*@e5I#b3OT%=OBud<+B+eNK3(46 z{H8QheA08Su@>M! zv`5mTkT&{jE~eHr*i$K<0z9!0Z_wU-Eoy zYUGChK2YiIVVGr`^BM0}u~7@iVTl8*nt*w=1uVKwd0em!2T4g z6%}ksvSfJrr^&ohrXmdN8nNd?GgAT{rAQM_iiJ^9!}J*&fZ4kV@%O-71AJk$SqXM) z(`a5&+y~X2SRDS&VlX8uR;XHCDLjfhs*@ZuGI3u(n0av{!1YwH$!mK!^OGFYsxND$ z^D@v7JVouGnrHyfwJ0)F9-=P&?mMfLE`hn|p#$r=j@db>CF<&M~~6 zs4+4YIh9j;QmGhVJLyw)r`i`Nn?y#Pf6fIz#p&=5iIqD^pgfX-qH53f zE2^GdMASkO=wK=7YB_yU)*-@Q94l}#rIfjQ&JaT&@# zhQYIu&~8vqSfKZS)6pttH|84_8!~y`YO?2hkYW&P`g!^k@P6ZNEKu38KF%6We^KD3 zx`;rb{5{K(mGBhiE-n=$7R1_UHESPFcN_-nLX_^VWg=lRu;R=%%ANpfTuSb(g zz<|zxGgd^yCFQ`GPe5WG%WkJ9b`8=3am!11mGLFl7sEwct@otAq}ymJgp!GuSdpe6 zne6{CSgOb^-`uL&bKUFl^i}oxz+n3I`C0jOdD@Bmb*^+WNKJqZfIBFX+W)9SERK|t z&tjXAKt?@Grn@KE%T2qCF~wR)Wihqk{Cng?vGDfJOYJzYv^;-}Anrh-%GckS-A>|- zg2UJEI~K6|>F*}EfH7TuMTOD%gLz-IOwg{6+c(DET<5g~ql830@(^VN`WE!}NWPfj z54$X>%MF-~riG7|~Oaf^c;f`)miS>e!j_2_(9^FsbJ{4y zaoiY16rA$o_zKwlBSr7ZzUQXIQ*La^w6zxXfCpHQ4Em!Wb?E5x3Fhgw5DHvkb6G1t zdQhS!#hCvm9PSXKsh5E7;b&o|Ztp^}UUeeZ8qC7ur?GiGX#(jB!ns*ixH%Q` zr{(Pi0{LsuR|vo)vW48TSJ;Z&S28u@Iw<@H4~VsNld_ngSfI-(OM7k0s1?YC9R?hl zq?;@3yH%1{lzeAGWE{l`f}9K3uP=yyR#Xll#JjNbOW6RNTC7>5~9Rv9p46A|#_2 z^!4`U#h5F@H83Kt!59;H>)t%lSWgY15Vyn3LI^(gv{`?cPjjs(gK4&Pl64hhr$0A{ zd%{?O^EPqtA*9g!l@a$bN4*>=_7QJQM+=|)hBflozATUh5iW7+gopRa((ruLt#Nm7 z9>bn?xDnwuaS7u4A3YD>)zSJ+OlWeOjoYNe+G-ij56MN-MhpFtjMPn%oX*)WCMV5r zLOGHa5Vv{u-65-pa7&XkaFgafW4=ahBC(~Km#Ff>H}qLJnVsFiIKEr%5Io+CDV|qE zqW87&Ge|RzdV@$i@|gpOvH{2(5sUWW7ZQ+9$L-xdp^o-)VE(9zd~u$o5l=| z<&FWgw}$hvmQb{nl8k(d^cK(>2att(`M$_Lf{JQ}@HLs6>t&c1te)K@SBy9EUa`9Gi#aBh)jxHT~3BJe<>a?)2+btJ@Ov`qaBd zIdSS*vV%?Da}mc0?waA+9wm+B8CFVt$v#zG-QE=v0+(3rs1kKnMQ=1@rI?H=192(C zaL2_VG#5fWhg_PLhrjA6#mB$C>?Hy2$vM9?~oo zMf3xP<;sNkIbq_JYudnmR{0(7ZWOzt!I%xXQd9WQt3z5l;dfB(XiI~5O_3MTa6u6x z@c$MlE(#78PF|88>@9Ju{EqnwUe>P3Kdw{6BGWtiZ-&XY`1iCQ3yE&ib?colk8Ahu zsJ_<%{?oVJk+wqb4?gvUzswvhmM`^-i%r1ACGE}Rr@~kSE-jUrTJBUk3`eP@^$D0A z!1dHT-s;x&7xLR9KoqP8+3IH@av%qr5xOBn9VRM%-&?{LKl^2GEAM&QR$qB7H+gry z)ari0_)ot+y4SR_hmy%U?kXs)Uq7^tzll~Y#HGN$jy$%oVj!y7#1Ar5hb$mrv2;Ag z!c?R`ZH^%}#TG=69bQvfee`muztBg7mg%DVg?Vw?$CYOTf-z{~5iU{h&=TqOgU%}F z?Zsal$gSks%(9RBWLrVK5D>~(K)p)g#pCIX%vcM5=qs@zF4|hUta%c%!Wz;v?cQvh zPmPLt;%Md!NFhu-NXojn5Hqy&ll0mpBoM1X;`5y+pn42cSL={ULlcTU!@k=%!3(}_K5j1o zNcu`lm6SzhNAz0RsPZNz3|JyMD&`F-)X3%+JO->&1uL`846S+Zp)u7l@2h7wlLRHM zCuX-x>a9C8Or2a6*DoKWfAY17;3#E6UPtLlBSZo2sloy+%n`LZ^m`LD``)#pTc18Z zr@$7i#eT&gjCGzQiTK&5#jshaG(o7TDl(;DQ>;Yy^60Aq!6AKNWgxxPCRL>A zniHSc=xF06pGLgIKF?T91M90(>Bzn<9-D4XSxb8CU4Vc9G_*8aj4VQ<5q78BMyru6 z>=%e2qY&uo2&T{_Xq2R^2`2gmgv8hOnuj=q(v!PhcEYJ-ZDhuRWo$YsmVI*<2NM*7 zoj{&Fpum;XhUZ-S?&_SQgddsxjV#ne8Br``9;IT4fUQ9;l<_KJ-bOh}SC@dIH|s`r zEU2(v)(yCs(neDYfxakW=I?u*!9NsA6*KvY$(X}trTmK z1PtpOl+&ngMjO|OPN`{5sMFttS$MhI)LBSK)9Iz0jx%`lpZ+~)hMVn!9_rP4p4IIS zr9QaMku|*GF%KJX0(cU#(6NuST8{Gkt(L%_+W&mn?A_$mCj7pdEWcWW$J8Ed5%1(o z8jt>_eT3g~a4>70{9b{X07+!?3r~C@vlLp0t}+379bLIc58U zo{X%_;X8GhT5EiD{I%*pHUf0)EQ{eiB;2FwFicPd(r%sywheSPaZdYMD@?(d=dnCRn%#5Wxn@ToVQ$I|6lx+=j@3%?G9gN zm&3y+?Fx3XnFHjHrO+^bH$mS66^(jj=Kn747?|;1H1?p#khUhF(10UBnm284(Duo= zBPXTWy+{Z35izUnZGTXYBDJGQG7!wI)&AFE$L%B6y|>UU@4F-wV@ zkyKRj9CZUS{AmLPahnG=H*kHUhLHVL<54SLx4~)SEib)QJAl0LeH3S2?)C(MF)7o zwwzjRZ^h-ZpB@HCxkgmtKz!epSVt0)$lUs37IaQQhrYE|#LPyTJGHN!iF3idfznAy z#~*G($d5{U`Q2c06X+NQA?Fy;H5HufqnDT%k3q=XATuPK*sLMykr#n{$LiI6{$$vAd1&(b8uOyQs)Jv^+^>fv$>c+y3- z2q!Z-&`SJ;LSvdaZp+Ph_~}8 z;$Ji+|I~=Vg;dklQ{Ym#%YO2R&__bcjkwcW3_Yp774>?WKCc>4fB$q)r8J?L4|m9; zw1Y7lg10H5{}a8wwO+AuDB6}-3xyDGm%;>A`$L<}sY90)QQ53yh2xBuc8^N2Y<)<{ z>7plV+C4>cLw%UuYpvxBfl@@znnJgulfhlIULH3q0QdD)`Z?Z z=4PT>b@;8|0xgVhU5Zb4*Kd)h3SE66&*`(k2l0VWv^zXZI^nLw+nT2+<7#7TeV&B8 zcof0GyH39991_SJe&Lh8*7$5VrBwTyD`=OBB)F>mAqvf4qU~F#3vukD3)jW7i^wV zZNFf|nxwQ(%OKRSd!&N5gLk6d*neh7?HK-{aqSVOd5nHl?*j)?wUPDSNZ3LIsZt^L58sFC7n14F0h97FeY=wa zI~>fzFSm1IVTRpv8G)+~Z#bh1x%_{*fbw~aza;GATn%iqs_-HZiv~-;WxFDm)8Jja<#8-%en)6;|E0hJZ;^A=&}H;R$r|yeh6Z`f8YKN zuI9O+_qI9RO}k!ifM)T78@sh?uN!Ug+p?sub%3TH59lyr+7kR?klOJy0XL`HAcomN zidRSYgLkiil=@wxo(1;G?mf>n@c0#m?Pyf!o5pAr&FX3XrsK(@zx}T)h3`h@QB%Xs z#+$tL@xsa_8vC<#Cgtl`Dn}!Yv(?ab#EcDs9g^c6=+r>har(%oKn&tyGqOU+8ua20 zQR-cn&)8trJ)~`3?C%oZ38!F-kJ?~F`2q@8G&2(R`f4yEHw&L49MWNflN%Bvuj(zA z^OgX(|7Q|746Rfyr?R-hz%?mM9wNwN2ttWqE{!#eBmSX&RwSqXwmhz%jv*-I!X5)i z_%l=DvG%~@b${~u|4LD;`?BVs>mcJQWfu8^5-}4Pry9Ferj8$Y!(r_Hk=RPM+Yf|_ zVAjhFXG;Hfen{t}Av2E&3MqX?Fwzo{{Q(s}-{c2|GzvONNNn?t?)-LflwrVnX zYeOWGMNis>Jn|Hec3$7q-$3q6L%b-5-bMZJ*gE8iQCGLuQpa7rWt^t|AAQSnQ%sw` z?QfOWyX{=HVQ{SdA*|gzTkC6zTC4W?<@qY{@>Md-*`u%H?!oVBCwAUxnp(1jJnT9f zE90QpdE)p}N5tFbU%D3p4-{U<5MC~@cJqvQpm}!rPUqdK?;_u|)~61&adrE`b?EEk z5b|cyT36dO#!+@dph_h1 zzQLiKKzp2wWuW)#yX^Jwn%ULM&UGeyRE6Xm#<=6+qTGM5=<-rCq_}B%&4NGa1d{2_ zhMMI1cem@xh<(v|;5W9m6XisU{MQuZ|6hP&aP?{=n!k~?5wzQAC{xI7s+4AY#*_bts{b#w{{OUoGxg1PeK)6b1gkfI?JA2`zr%!jZ@`%w z)YF8~@$`32MaG*vXaBFd@mia z$A3e+oC;yJeFwN^wd1q@45ps8aL(Zyd?&lEXky7vcKAD+RDE2zsM*zj(pPb4`oyig zl^mb;LP!?T3twLlVuLxveZgxsRRpd7yPg=0r90YO5oG@t9tv+HA6kAz__{)TciXh{ zw{^>;tIN7=z;y`ZC9hgD^q8~hzXcV~l=~wJOyct4CoW%9#HFE!TlEg*HyC8w>(+5J z{&d&&eI>uT?g8&FdsCX@lY#tgU<{pteLmus@!E?Gwl|PhN={e)v|vu`&6th%*0Nc- zj#(=l_061r1J4ua7B*rmA1eJMzxF=OS^+&Q8s&blBB(eA?!fvmygh^Y0(BuX?I0#h zChn+ongS)8IYPH>+|7b~rltOa9U_hg~EhD_g;CA36 z>NVN&B4`(XK%ij)Q2Ud)>=_DNVg(S?B z>_~{$ysS5lqC9Y(uPl-L(dcOWp>J>Qx_)Gc0#m-9MrdmhoFmHuagNKO zsE{X;nbP98CjEkzCg{YC>~T%FB!yFpw^m0Pcwpwy0Q=9sP=U?lSx-^}O^oH) zXhtkkLl=)*_?>yj*C5Df0k)YZivh%SKroTH#}CHZZ%kg&rAn>I>Z_$%kArnbv_A8C zg!o;kv*L5OQinUpz&iBFOE(7jMV*LJH#xmhRkma@u^Ly+_dCyvf)F07ZdZzSDjcDx z`Xac|8acexSVoA~Lgf&s^x%yyy@gCOrGr;XYd6~13$oANSL1Sa61p@Q*9T!(o-6hs z4V09*aafd)I_1XmWDJaoa^NyrLS_ev`Xh zT^l>8rCZALxue)ciaF_h)zC(xs$|O}^3@Yo*xo^=1B~TrIbE&45|0Q-+zNOILVA~p zRAsYv%`!zR)s*Ea_Z>pCWN6!&@hpPBEWOWv2gg-XpsZ^q)B$dH*l3{l2mz{VyF;RVf-5eCmR^ zt-DcY%6k=#WPmLITK&rw?%~5w+mD7*F%7duXe~LX@Wb-6@9y(%`!$rF6>JMdy8nNM zlGErx>pB2s4)g1(YkoK_J6gTJUp}jT`mOU>b{|j`8rZ&l^m|74 z#!Gke!H+#L-rzl7*&4`m$zW&!f><;(l3?q?)UV*^N5DOKcThTHd?T{nRH%|wW6f2> z5mR!K&c!%m&pny)*1yfXK(420btaCG4j1UX5v32mcYRPbZ^rU(-tZtT%%X~@V}6|G z@D|`a1Iy~~?Redo_#^h|!Pm8?a17dL=3T-}RY;Y4+~_S7lZQ`25Al22$4kalCFto_ zjZ7=X2`IT@9hbmk|1*BYN7~q%iELs0qSyi+JVD{W(?gs>PWbU*hR&p>&SxX&`_BR2 zN9{JzZUcqh1H}4xuJuT~+~dciH+nT&*qPJBa_w_kM03$W)ei=svQ#Q#D0z^Z%uf%uTj9K}-; zqziV*ik->l2OJ3+6T*^>ZCMQA-jxRA7O&Wv5E`1~Sw=j|UIbx&y`J+wv<-C86(I#6 zmX@Twn~7+NU4Ke$HK@;9siZ`^8o$`-x5c3@5XsoN;QyoP z#Z9ZcHScFtOihb=dOXzJN%s1!fX7E!Z!n!^XmgZ!r2U7<|CahmUe#$kW_{i-_+Wid z^sPtH78iMV zze@O9%`XvqCRTo;&E)yR54whPJ!`)*q;!aH63S6I2Hg2R@zw5$w+=16v2wpxVc^bN zEZZ8l-P-YVy;<&~OP|wRZ4WJJyUF!eSYuy7uIA$FD_s73esOezMfeq!fJ3{!2{!w! zU0`o^vAN0TLF-PTQeV^U*RIs6UOc3B?Mq#P>`KwIO5YZjg`N}N30v%k(QHCr4T!AZ Su)OR)d+rzFM;Uf7G5`RNH-9<+ literal 0 HcmV?d00001 diff --git a/share/check_mk/web/plugins/metrics/unifi_metrics.py b/web/plugins/metrics/unifi_metrics.py similarity index 100% rename from share/check_mk/web/plugins/metrics/unifi_metrics.py rename to web/plugins/metrics/unifi_metrics.py diff --git a/share/check_mk/web/plugins/perfometer/unifi_performeter.py b/web/plugins/perfometer/unifi_performeter.py similarity index 100% rename from share/check_mk/web/plugins/perfometer/unifi_performeter.py rename to web/plugins/perfometer/unifi_performeter.py diff --git a/share/check_mk/web/plugins/wato/datasource_unifi_controller.py b/web/plugins/wato/datasource_unifi_controller.py similarity index 100% rename from share/check_mk/web/plugins/wato/datasource_unifi_controller.py rename to web/plugins/wato/datasource_unifi_controller.py From 8718bf4183a45c73bd0d784ac7474ad6f1e579c5 Mon Sep 17 00:00:00 2001 From: Robert Sander Date: Fri, 16 Feb 2024 10:06:56 +0100 Subject: [PATCH 5/9] adds uptime section for controller --- agents/special/agent_unifi_controller | 6 +++++- unifi_controller-0.88.1.mkp | Bin 16946 -> 0 bytes unifi_controller-0.88.2.mkp | Bin 0 -> 16969 bytes 3 files changed, 5 insertions(+), 1 deletion(-) delete mode 100644 unifi_controller-0.88.1.mkp create mode 100644 unifi_controller-0.88.2.mkp diff --git a/agents/special/agent_unifi_controller b/agents/special/agent_unifi_controller index 5f909a9..8f2ec88 100755 --- a/agents/special/agent_unifi_controller +++ b/agents/special/agent_unifi_controller @@ -492,7 +492,7 @@ class unifi_controller(unifi_object): def __str__(self): _ret = ["<<>>"] for _k,_v in self.__dict__.items(): - if _k.startswith("_") or type(_v) not in (str,int,float): + if _k == "uptime" or _k.startswith("_") or type(_v) not in (str,int,float): continue _ret.append(f"{_k}|{_v}") @@ -503,6 +503,10 @@ class unifi_controller(unifi_object): _udm._piggy_back = False _ret.append(str(_udm)) + if "uptime" in self.__dict__: + _ret.append("<<>>") + _ret.append(f"{self.uptime}") + _ret.append("<<>>") _ret.append(f"{{\"unifi_device\":\"unifi-{self.type}\"}}") diff --git a/unifi_controller-0.88.1.mkp b/unifi_controller-0.88.1.mkp deleted file mode 100644 index 8b4e9061e2d0ef67f2339f14c530460f3e54ed86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16946 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 Su)OR)d+rzFM;Uf7G5`RNH-9<+ diff --git a/unifi_controller-0.88.2.mkp b/unifi_controller-0.88.2.mkp new file mode 100644 index 0000000000000000000000000000000000000000..76eab87634c2bc07496d1ea65bf66e08910c5959 GIT binary patch literal 16969 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 literal 0 HcmV?d00001 From c8204dce2823cda49874740433c66b58de5ae748 Mon Sep 17 00:00:00 2001 From: Chris_ <38036320+ChristophGoth@users.noreply.github.com> Date: Wed, 14 Aug 2024 08:51:14 +0200 Subject: [PATCH 6/9] Update agent_unifi_controller Removed X-CSRF as https://github.com/bashclub/check-unifi-controller/issues/19 --- agents/special/agent_unifi_controller | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agents/special/agent_unifi_controller b/agents/special/agent_unifi_controller index 8f2ec88..69c96ae 100755 --- a/agents/special/agent_unifi_controller +++ b/agents/special/agent_unifi_controller @@ -556,7 +556,7 @@ class unifi_controller_api(object): def check_unifi_os(self): _response = self.request("GET",url=self.url,allow_redirects=False) - self.is_unifios= _response.status_code == 200 and _response.headers.get("x-csrf-token") + self.is_unifios= _response.status_code == 200 def get_sysinfo(self): return self.get_data("/stat/sysinfo") From 29c7352a5ea487c0c4b7e8dbf024c5053f3be7d9 Mon Sep 17 00:00:00 2001 From: Robert Sander Date: Wed, 28 Aug 2024 10:33:04 +0200 Subject: [PATCH 7/9] adds r to make regex a raw string --- agents/special/agent_unifi_controller | 2 +- unifi_controller-0.88.2.mkp | Bin 16969 -> 0 bytes unifi_controller-0.88.3.mkp | Bin 0 -> 16949 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 unifi_controller-0.88.2.mkp create mode 100644 unifi_controller-0.88.3.mkp diff --git a/agents/special/agent_unifi_controller b/agents/special/agent_unifi_controller index 8f2ec88..0dbec25 100755 --- a/agents/special/agent_unifi_controller +++ b/agents/special/agent_unifi_controller @@ -438,7 +438,7 @@ class unifi_controller(unifi_object): for _dev in self._UNIFI_DEVICES: _dev._get_uplink() if hasattr(self,"cloudkey_version"): - self.cloudkey_version = re.sub(".*?v(\d+\.\d+\.\d+\.[a-z0-9]+).*","\\1",self.cloudkey_version) + self.cloudkey_version = re.sub(r".*?v(\d+\.\d+\.\d+\.[a-z0-9]+).*","\\1",self.cloudkey_version) self.type = getattr(self,"ubnt_device_type","unifi-sw-controller") self.controller_version = self.version delattr(self,"version") diff --git a/unifi_controller-0.88.2.mkp b/unifi_controller-0.88.2.mkp deleted file mode 100644 index 76eab87634c2bc07496d1ea65bf66e08910c5959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16969 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 diff --git a/unifi_controller-0.88.3.mkp b/unifi_controller-0.88.3.mkp new file mode 100644 index 0000000000000000000000000000000000000000..71c069b994d8959eaf1af7d7a08af7690ebea536 GIT binary patch literal 16949 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 K2w>R3$N&JmF?Ejs literal 0 HcmV?d00001 From a0843d032602c7f029de979519ba58f2ef707eee Mon Sep 17 00:00:00 2001 From: Robert Sander Date: Wed, 28 Aug 2024 16:40:34 +0200 Subject: [PATCH 8/9] adds MKP for the last merge --- unifi_controller-0.88.3.mkp | Bin 16949 -> 0 bytes unifi_controller-0.88.4.mkp | Bin 0 -> 16928 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 unifi_controller-0.88.3.mkp create mode 100644 unifi_controller-0.88.4.mkp diff --git a/unifi_controller-0.88.3.mkp b/unifi_controller-0.88.3.mkp deleted file mode 100644 index 71c069b994d8959eaf1af7d7a08af7690ebea536..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16949 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 K2w>R3$N&JmF?Ejs diff --git a/unifi_controller-0.88.4.mkp b/unifi_controller-0.88.4.mkp new file mode 100644 index 0000000000000000000000000000000000000000..bf9abdc71781bd38e4f28c923ed116076b6f6e9f GIT binary patch literal 16928 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 literal 0 HcmV?d00001 From 4ed50328bd67bfdda2b675f13e358934f620a106 Mon Sep 17 00:00:00 2001 From: Robert Sander Date: Mon, 30 Sep 2024 17:53:03 +0200 Subject: [PATCH 9/9] changes man pages to work with new catalogue --- checkman/unifi_controller | 7 ++++--- checkman/unifi_device | 7 ++++--- checkman/unifi_device_shortlist | 7 ++++--- checkman/unifi_network_ports_if | 7 ++++--- checkman/unifi_network_radios | 7 ++++--- checkman/unifi_network_ssids | 7 ++++--- checkman/unifi_sites | 7 ++++--- checkman/unifi_ssid_list | 7 ++++--- unifi_controller-0.88.4.mkp | Bin 16928 -> 0 bytes unifi_controller-0.88.5.mkp | Bin 0 -> 16968 bytes 10 files changed, 32 insertions(+), 24 deletions(-) delete mode 100644 unifi_controller-0.88.4.mkp create mode 100644 unifi_controller-0.88.5.mkp diff --git a/checkman/unifi_controller b/checkman/unifi_controller index 66a19eb..5c19c01 100644 --- a/checkman/unifi_controller +++ b/checkman/unifi_controller @@ -1,7 +1,8 @@ title: Unifi Controller agents: unifi_controller -catalog: networking -licence: MIT +catalog: networking/unifi +distribution: unifi +license: MIT description: plz fill me @@ -10,4 +11,4 @@ item: inventory: One Service for each device - \ No newline at end of file + diff --git a/checkman/unifi_device b/checkman/unifi_device index c83defd..23f622c 100644 --- a/checkman/unifi_device +++ b/checkman/unifi_device @@ -1,7 +1,8 @@ title: Unifi Device agents: unifi_controller -catalog: networking -licence: MIT +catalog: networking/unifi +distribution: unifi +license: MIT description: plz fill me @@ -10,4 +11,4 @@ item: inventory: One Service for each device - \ No newline at end of file + diff --git a/checkman/unifi_device_shortlist b/checkman/unifi_device_shortlist index 5a3554c..2c0a400 100644 --- a/checkman/unifi_device_shortlist +++ b/checkman/unifi_device_shortlist @@ -1,7 +1,8 @@ title: Unifi Devicelist -catalog: networking +catalog: networking/unifi +distribution: unifi agents: unifi_controller -licence: MIT +license: MIT description: plz fill me @@ -10,4 +11,4 @@ item: inventory: One Service for each device - \ No newline at end of file + diff --git a/checkman/unifi_network_ports_if b/checkman/unifi_network_ports_if index ce4eae5..2f4b833 100644 --- a/checkman/unifi_network_ports_if +++ b/checkman/unifi_network_ports_if @@ -1,7 +1,8 @@ title: Unifi Network Port agents: unifi_controller -catalog: networking -licence: MIT +catalog: networking/unifi +distribution: unifi +license: MIT description: plz fill me @@ -10,4 +11,4 @@ item: inventory: One Service for each Port - \ No newline at end of file + diff --git a/checkman/unifi_network_radios b/checkman/unifi_network_radios index 7e5a223..a609554 100644 --- a/checkman/unifi_network_radios +++ b/checkman/unifi_network_radios @@ -1,7 +1,8 @@ title: Unifi WLAN Radio agents: unifi_controller -catalog: networking -licence: MIT +catalog: networking/unifi +distribution: unifi +license: MIT description: plz fill me @@ -10,4 +11,4 @@ item: inventory: One Service for each Radio - \ No newline at end of file + diff --git a/checkman/unifi_network_ssids b/checkman/unifi_network_ssids index 3dc339e..6ee6568 100644 --- a/checkman/unifi_network_ssids +++ b/checkman/unifi_network_ssids @@ -1,7 +1,8 @@ title: Unifi SSID agents: unifi_controller -catalog: networking -licence: MIT +catalog: networking/unifi +distribution: unifi +license: MIT description: plz fill me @@ -10,4 +11,4 @@ item: inventory: One Service for each SSID - \ No newline at end of file + diff --git a/checkman/unifi_sites b/checkman/unifi_sites index 7295cdf..603fb0f 100644 --- a/checkman/unifi_sites +++ b/checkman/unifi_sites @@ -1,7 +1,8 @@ title: Unifi Site agents: unifi_controller -catalog: networking -licence: MIT +catalog: networking/unifi +distribution: unifi +license: MIT description: plz fill me @@ -10,4 +11,4 @@ item: inventory: One Service for each Site - \ No newline at end of file + diff --git a/checkman/unifi_ssid_list b/checkman/unifi_ssid_list index 5a3554c..2c0a400 100644 --- a/checkman/unifi_ssid_list +++ b/checkman/unifi_ssid_list @@ -1,7 +1,8 @@ title: Unifi Devicelist -catalog: networking +catalog: networking/unifi +distribution: unifi agents: unifi_controller -licence: MIT +license: MIT description: plz fill me @@ -10,4 +11,4 @@ item: inventory: One Service for each device - \ No newline at end of file + diff --git a/unifi_controller-0.88.4.mkp b/unifi_controller-0.88.4.mkp deleted file mode 100644 index bf9abdc71781bd38e4f28c923ed116076b6f6e9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16928 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 diff --git a/unifi_controller-0.88.5.mkp b/unifi_controller-0.88.5.mkp new file mode 100644 index 0000000000000000000000000000000000000000..821002366d1dfb7f380c8a9b4b6551a788ce6d11 GIT binary patch literal 16968 zcmZ6yQ>-vd)TMcB+qP}{ocGwaZQHhO+qP}nw%K3L zfW+}nQ=q>a9~-wrj>dcM)9ep;&9iGjQwTsIU9z`EuZ!T@Q|VnDV}6ux{A& z78!|F?!Su<*g1NyN~uQL4W@YCtc|YKYu9>ZsuU^33gtwpS?hD(w-jO6LEk1xKSGi} zHp`h&x0lo3fnVLG4RaO(U%$Wn58NuBH`u{JcpCV~?^}LmZwk#Q{cFz=VpVUG4tQGww&!iit_)7$Fx;-DekXF|tuLQZ zr>?1u;TEvd!7Tk(2ZZULqMV!r$g2SdV~d6ejyR_(AnWv zLjHKpMza7&k842hJv7Me=z*%IvO`?s2;jLx=m&VS3NcTQ-7p(nnky&77rgaK=t?4ACM|!4i59V zos1vtcRKjLs371czZd*o?ysZMzt3AiUdF$nIZeJlzod^n0!m{X%&Xvd1xEQyKx4&p z!N_77fd11?AY;@)@J5FQG;vWN=tUt9(vnG{I0A`7Nq|NU=2+9HiDE;08}NQ&6Yz?( zWK;>yj#?lN2_?o@K8(adL!2F~%#MNfDtiiiK-DTT2<%E?E@%11VrLOO$sM8ugfl4C z5DKyigkq%k?!3s-3*N$1%TyiW^bth;9TK<@YYu~d@z~O{qdQMdbf1(GJuQ)e_ghnc zL1e$G$9}lv{@TBONtb2fV`~O-G*7ZRFWJ{f7d$<-3e2AYr64 z2?GK88F7qLjONBtF*veo_6IZh=2?%h+WLek-|$`d`Y@)Lfz|eD>N4>-z~EMA_#-tQ zumr0;U;0Wr?pJf$01{`%`a{!4Xy}r^>zUH)J+$c%C%{uRA}>57prJJ9&a1%%iGe2M zRXQo=9$N-IQEO{=n`*eLHw{x&QF@)^Imo8XUiUW2>s_}mTTxk7U;EK0&91J006^l=*r~+ zYd6mb2O4LW@3h{ndM1e7qxv5PDx=mX0CKjYm;ad$pZ*yShzn=w;-% z;od8NP+N7f+}#}I`wtdfUaAJv=eUgf$`@EEU$XRLH0wcDhBmf(gW zUm=cc9xMA6wn4po&%#1+3QcGz^~hs)Ll957?jYj88us!~@2}U82cG~wrZbEsKq$XX zfQGmrL!dRQ0__jg<&1CS1cW!`-4s&w=%~Sb_;!TByv_OdfXRfH4gM{v$=Ckxuc2r( zc+erchrMG?O=yTN(2g}ge|^;EhZ-=xY6MsqXora?RFWg9ap5HhL()#hz*E3;EdL15 z!cetqBb|3+0VUXy(}%RAJB?=J58#uTF{Z8~;F0|mD5eEUg@uPjfozbiJo)Qmjky%{ z=d(p3ejuW_%w^YdlJTk~L;SXaR$JQYsfD54gL8^Rb&8>U-nHi`&5s|@`H4e2D2C*{D_A!9(C`W!ULKUyadU?YL z-C=!tjy!7BK1MQW-shZ`R*n}z98ec9HCs?iLQy}0nLs@i8r4~aXV86vFys&MsgU_a z)M4Iw5P$h1)3LMCVAE^m-586Vtx+Hc#Rg$OhaObkG68a{=FdPORnij+My62VoSc52 zK1RBp`3l9io<3eOnE^yw*h(4iRGMg$vE898&^ zSs~8+lM{eJ2q5JKD#*ujVFouUjzM0VO-N!Kz|OE>yb{_r^V*{ZyuKz-z*^GnxV*=J zHW7s4uLUdy5!wqC!xF&^6()--q|heIx)K}tiT|;9*eh%raSY zt3GUmGo=;j2_c1cpgE;u*erPhU`q5P{KTxpCJQx5$|P3BzA)Iww40Zu&*B#tC(2NZ_YHbw8m>qzM?|T|3DVWD-5lGT6D;lZOm(P$j zkaTtF2SmQ#x;S{ogSM$UCcW@2teO87I>>xd-hsfESH71#N@?)0@X3!-*-r6XfiTg> z88bH5vA!S^VJ=x%`oKsDn*m)@JN%^a;x&j5MlFh=og!MCG_okaH&zjoHryg;fJ5`;_R%py3Z(@DPt)QKMOX1>YIBb7>zrNT}8c+-aB!>P?5&;_algJdBF zsy9+VvK4>;HiY0?FX@>&uISZTr}o2EPgH)d_U8merU)hSf?A?_wd|!dm5wdFa>~Y7 zg66vMolAI{_LLw$k5xYt2K;tZX9>4G2ir*|S6%Uz$ZNo+jPE6uN+6(SXb>5qx}XJT ze9!D^HDN|MkdNLxh5);DI3ClnV|7lg7`b(9?2|H#=>!1-tm>cDRnM!NFlx%UBtDDDA~7OCW{>`!Ax?fp;`mA8u**ck;#Q zxS7&}=I0B~Aq+%gm}s93=gTMX1!;B~+kD#uL+7GbyB{xgP@{7v>Rf65Szb;UgqDW&a%)JN z^|J<eq>ZLaUx&49 zg&|PjLI6J?h8KCAQq(cxIh~{G+blA-*?Dht)@OZU^d~tzE8);3G&tCWJKU?y! zgJg;w%-MJ$gquLiK2%Yo3te4v7Y?wFzLu*+Nb>vx5EUT>K_CpsMW+X#_ci5~w$`tA zOJxs|OTPkkz2*d@ce?%zkk8PZgey{n+Niq%+cSus>GEt31wyw8pD49&VeS*)kD8cK z#39C&HZYSi*_KN9MXw|(GodCEl>$9Ec7&YLy&agTg4*cWT?8 zDFa~PgAtR07=6mWw;MrIYh036m%4E3uW8rGWnN3rB&VO!hmprWequYTW%~wE0r+aW z#-GwBxvBiQt1qZXFAtS^u417|3z=9TUTKZiyjxsU1k6Y9<*^`7@vX;q7k zIn1g)m8m(Qq?jrRd)5|j^!+{(iCM4x`&hkz@-+Rs_s2VXzGTo^z{*Vi8pQj-_4C$3 zI#plJ&~fvuNR;c|r_J73tkjCX_}|^O>1kT8J$Egir+W@5eZDC)^u;iDeZ33m+ADRy z?qsu&FIGdj9vuK2rflOYP!~CfXC&2GTWk6m*z>(iM46s{>CpplA1J_2wKA&L)IoAH zYHR?h)$}dgvueJ`Z?e2!+Hc4+??vC-Jnd5iJGnp8DhcVS5@Iz>FTZe%>eEW0F^A>UJ-pH@ z^liyK{W*z8LPbQx&O-ZDf!t1YaCM0-9 z8@O1&>c3uXL)w(_cRa+Qy>&G>2$g5<^Z|AD4`n#dw>7v(!-^1gfNuum*>OlNl=c+~ zerpOW?=ND`;wfnnN7DJd69s>$)^#ZFE?eLGn(m&Nr|UCrX7wl12tA75J zCsl?SB+yJst9mqRwME7&l)6S51R`*Vh>n;iGlQKIpS(IG`ne(6SMWg{{W6Uxi-4ptlro z*ul&{*a2zp;N)k-IrIR;ZFrdShiU6K%XzntsxVH-39)L8&v2uZ+5KC+uB0#^4FAfK zhG8Z13m^Vi-A#7->wIY-n1qK^BdR|IxjKWpg)H{QPgzQ|K7&^gIwtF^h{3%?$s@`e zgfNiThXD9~wyqF|jttoepfdQUoQ$J)0u?5O4l4vpRsZkPJ&8=}@)O@`MUysz%v@^Z zXkKb;aen>~QJ63#v<#hR{^v6v+^?G5SBmt|BRH-rY$nh5^Fkm0muwL{mpg9@Qjs86 zw&$zjoRT6Kj^3(oV_l}Wa0r0=J|MQ|^gu4ghg1hmcOKMA!-7Fci_gCtp#0L1j+HGv zi=*IGhoD?xsW`Fo6Y&`+-FiWQstlaz3ace3?=sA5h6JFYuE9(FuR?W?yZT324#4~a z{rm%c{M+i9{Z(mQ2#gIYY(`jOEz!sm{|X#DCeN8x#v)!$5U1pOd7EEe(Z2LM+>%|% zB#;$r04Iu_6|hDV(rwm8i~|Bydli6J=v+~#;H|;O6KkZ*Y$D)ioodx;1d7-Vt)`Fw zhDg9)y%#6I3%%x$@4GN}p>l0d-T*1YA6}r4sRN84_P$x4fd&5U)v7CoYZr$VeVvZ> zx~s+Xi5!pp#NlhkGpY9ubXtz}Q$z)fD|PQMuY2J^n39Q)ZFw-)xm|59Y!?iIF(54x z7H)z6XPDTdVP5q0^^zwP9j52m-mQ)D@ObgTOZ4F{d!1Q2JudItzR?mj3aTmivNb(S zo0WDC=6cK@Ks>iAz0KaWvK~{y{6Wdq1-9*jv84VH{OhZ$3p~cNr&sOZ6Rt0zgo157 z6%|yHMqI0SQkjUiG~{+^+mLio6+|Ub**0Lfde~F^o07y5N06yk1x1KYBgx%X=ta$c zTuHGCV^%VrRTVPa;{d`O)c^uzqyfgE>V%E2Ck+RA(ok3vS^~MpHU_bd*j^$)S0QsF zfVnyp%HNbdBaQ=3Yz$Zt!5gABFnrW_^HSW1g{{t!1|^COn$K3LDdN_3Pa{yFMDsfUc%aJD>aG6|+NYh?-sKL4Q*neW&QX*A4r!Ptk(=oOk z2tdBv&G~&x#9oVoq|7oW!e_fo$eE!T#jr#s}V+?^ER~d0#Grr z@!JPcg}M}@ER4Ka*7~mXh$vjyD!@RF8Lw-a@|xw|L;T85Z9M=4-J#HKV*$iW!BF5(vY<$HQuJ`-dwWoYH~KVnGu;pm0R0Uf9dOhoaVz#+Avw}5JG(iNEZ~hwINR+RSj470d(seY~x`*P$Q;t^uuI6i$DO9rV8(Cb59%H4Y5a<(j4 z`Vn+f_BNbx#(^$rAcJP5s68Kge5KAf>q~J0wQA!lnSC3~d95ZyvN1D*D;&OUwq?P3 zoXv9WwoH&H5zvszM^|*i73Vvk}zmK0M3 zWBLF#r*zcq%&K9#gJx?qnjD$s{7j-D}Na|PnlJCEW>954WNc$zgbLI;5gy>VS>Ban;qNp1+w(+-!JCdx) z6)|xk|M-9k^wB58bf*I?Qyy(tC^LZ|SAdwgKuI?7bPK0oXMelf-#{}bO!Z__V<2iS zyLhDKr649Ys;4@-d}_i8xP873U7O(qIx%)L^}XpZjumjD@@TR;<>4nA?pV_;m9A=U zu=L_-HD&e!`lJ=#Ioq2PyOda;a+nIMDgsJIUeGH<;Yq_cP=n9(!#ljE=qjBd`ljc& zEA}Bgq1I+yNiCXfR%1!lbHs=w*5Zx});~FpY1XatI;=xIIHuKgV@Ir}7={=y!Jtv9{If4WJeRtHLY^nyF|XJrs=TyDIV``o zqyFxt_8TA`H#A;yDULs_h9)Mxhz%fEcnBefc_sc=s_AfPrn92aa(OyLKP6>A75a;I zl!&)Vm6=KL*qc}zWy|-D1RIawS1R^MN<~^6<(VTPkGZoW$v#HmGXsGdi?F3;nJ@9! zd+#bYic-^(WkEIqcFB^^hF+971JjB$w`<9wiX;O@2hfbCFCd45^fzlBdgi{gt|*Yv z5{zZ-@6e27#MU6_N7qU+6LIy$rHD*W1)&pVlN>;s)lWJ@{BC1ak+h_i(26x@F3eNd z4G9yf@kg12m(ZJf4^0_0HRCO%N`d^tin zU;7r7Sz&FitzcY-(U*)Q6yn>8_XxTId>Kfs5+6`vM09O zH~dfG5OS{Wpn^hSI1S-C+?IG_7I30K@^{b}?=e1%=a>-QV_f)uLOsrVxADHsr8yM7 zgP$|ao`k-?Z`#4jwX;6$FMQ*^zwPQ9_Vb^!ou8eZPr%`|w^ui-kFU8sBJYB?Jf%8* zyT@0j-^ZuF+_bzuo;$v?I=;WL?$2oK-qH`~Wn}qGvfL$0W$cwq1&VMt*&lNL&x=D} zmG_g4gF3(d`f#Ja2(yIYpfPAWCWl+Ms_y~ykDVhrnBiX_TsGuy?%z=Axsb172FDy< z5Z;!W4KX>2I`;}z&lOdXBdxXPRYz1i)_bL&`P{R$)0d4Bj}5Tf) zPW$etruI7Ws-V%1g59ZGC59I<+r&Nw+jhx^vfr6py5}Nw@0WipkqalmhcaJ^*R%$M z7b*%;>!ET9u1oG)N=tNT1N|;N_(tKkU4_xE*u6!~OQ!{iT|U(W{66N@QhZ8~yL>?x zWU@UH#ZZ%m{<@X+l(Z_2$*pMt?(~5i=OhHh+u%7#S;jdGRI+n)ANx0wi~(-gg@wnu z>3HOC$Ink9pVOHgil0|YBA-_gKNKZ>ypUN;mXaOsu5UZO+1>PQPF+p(h`oI~9x&t7 z)-d*!K-pXYxa7GN5oWFYsgAmoCAqpbZkrC5CO~&7i3v@bdCgTaT)!_dn;`eNr9Ye8 zoKcbZtGwz9Lj z70Z2%wDO6?zgu2C1SVe(@dlUf<9&E+N>Nf$V*X__mEkZ)hT7s^` z+;byoTk7H@6bC*cPLDxFs zl86V)(uo+)jbz4Ope2Xw<}xx#NI`{(A_5)>f@_{ZB+$L(_{X;>jqtA#>tRbe*u$f| zlg2pGlA|-50xL@-*B8h~6c~NQKF(i_ReB1WFUQ7vqnb)`cEc|6xTmG7*#BA|{3XRx zS-J{RiWvSAIa$-kQ=LpUdPI^%94`C`o4^Z9ab2G$ClfL}n{*p&T_ocF$O|68O8~1FAd&?}NL=aB{(?6gpvBuf~k^u)ssRk6bvh=T+wkbjZL zyUxx-v;y2Fyj2hVKu|tZ*$iT#q??Ynk_=A5@OSA8)b%=(rhO*Vromal9+sbhBb+nN zd3A|B^q{pBw|Y`F#MAhK17 zq_o9OB9aVH@A8W*Dp3=qdS6AW6%bd_>}X?X`3Esg!8<4X1;k3DmX>By63S`9WC0d5 zJ~94L=>!${Y{;Ahw$lIwFj&*^vZgB{!5qjy%N#_MrZ__QWu>ck(mJqJ&P+cn2fT-s=Yude!%`AS z^LTGp73x)O_?s=CFnjG>$yTC%=>0HYP5i9y`{w#Q?LOY`7Ne&#yICmn@ua-~%dkT= zTRgua&WofO=M8;g;vA?UD$mEQa4Ie*z#mHBfol%N%()DpBp7(o2lkgn%A|lPm zKuF2z`NoH$IKMxK3mp~!Z|{yUMr|a%#xiWyH)sX26bCM>Aozm3E7SBiPacgll{tHW z|iw)MS0O-8L{o^2H6bi&RR1GYbXg#nBqu878 z!Jp)C{HGx+r_|1WGmX~D1r6jR6oL54Zuxr_Cw2Cv-y4SUBl*@X6vPBflCE)J`1`OF-W$ zMEr?7m%dT>fW(dVeT5g4)${vSF*;7r>1S*EB_IY?{!F1FjCf_3lgT5!H^Gvs==4YU z^Ei+tBW^ftYLaZf89^yX?Kp>ivsM#3e|?x!UjTodTDhnMF6D0de=MjmAbR|J4UMYy9Xt9 z`4M2^PxIR3VS7d(x@^`v!@~W#I~ei?^FhZ!Rn1FACuTv0Wp64MTnPrLkrv@DU4=5_ z#d|1vv~9g~J;u2>V!+HiS{c@$_8b(c`5fGhtguq7)OFdtYt2&K4P6({h5J&_>K^7| z&ycu!A|~BOtHJj?uTV=o8`hGo4IYD)!VQvJkHg~n**=YN0BnvFYK`tTjg zyJc+xgS#+VozCW#-VUBo?KpO@i2o~CrClgcdJoWM9-GzIpW`@Re%wQ*if^9s-ItL+ z|EI@-PXTj!i+@2`=a*M7>*nynJQ0=46{`$zn`Q?JK)cS_PeyI`H*vOk8M*Q*W?HlI?=imY;5(Tw zn<%#v9uWBs;Ybl14B2nSfl>2NnJJxY3;&bqGMv~y>xhxlTgwrsZ|Nqc5mbM$LlhXX zY%o9j0J`i@0_m6>Q~~{G8l(UjNHS%wd_fLAxrbAIaT}@lhCZAu(k5}nyvY~=Fk)73{`rqoIF#l z>%o5~Y*V3y&zr51p}Pz%-cXC+064;P zA8z6}p3{MH;xeq)difBq`XkgPKi!a(ZI1+c99NdJK<+UNj+L3_f@;D9tp}8rMM=9c z->{gF(eqYAHQ$58jL5>z)1!dr8|Pwy(u!qq)?oUJJUi7T1cA(Rmc5JM0`{Vw1r`Z% za(q-&DG>~kb4u267e8s14Z9Qjd^YhEhYuH)I=#caM%}ktz1tdRuGW}hk+Z)tNX#AzW#-KhE1rw~{^6 zL_}*=z2)FBx-MsU{phNE97OJ)a1%eyNRILcz>VW!?7fWjJHQVvx#kt`XJ8?{y26?g zne!Lpe(f@TyADp@7~6B5*A|o_BH4(8ctgO~Ztes5A~IAKSz@Sbq4nixsef?E;c`Yl z$((q^Sl)wF*?}o&2D?8g1Ar1EF>!KnaZ!BfDIJn7Tg=F`-gE+)7lAHsjK$~~dPAzy zoR58clfkh4gj!So%=y}KChdF$F$E-^U2#a!sDmWdHryL@x|T3EF0qyTvX4{z~EtdhuMDyFSuLu-z3V{%qc;9%Smsy)y9lNL%pymwwvIdk0XL95LIcrSy zW03D3xL*!*Oy1-}-1;2zFE{7*pXHamw z+jB({i(dxe{6o30d55BHET7P!yS4pLN(~{F zlh!_CzQ%3JIJ8a6q`9TdUDlT77mrAm?QIV*j_-xkFRQ|p{ar$AqRo>YkfO(VEI|aC zK%_hoi_h|lD4GEQ8;NU=%@#VnUzMgRJa0}v8DuKUW4gxjCome@L&dl)2!d zu>>^VqmtQi&vZGKT-{pU@)ThMx+M;*~RvxIu|fzr;=h8xC_Kx z9gxy4*0Q`369amZ|7zz*XGz!2*4+~HX9{COLBa|I1Kgd_@G5ldK)-7O zE)REd+_8}jhkdDRyhtSAwOoihiT71Rpq-|v3Ypns{S0T<^7hWc$`)YMfsgiW~Vq|5!MDB^D(XnxTw?86@8H%O0Q3ii!{AYn^HM(PHqobg5LIE7Z^%@bPZI-aYHR|bxP#Uda=t1 z9~_4nA=JDk1ftWq7{@eCSjn;<)dG%=8^Joc1gWz~X=JkDkSRUxt?ZviqHY-gOQ?Wl zyNHMa0T-kNfRoY{JBO@l^i5)5jUzeXKJFV~h2U&I8>{*g_m*5KCyL9B=`wdy>`qAN zF+)&LDA-Z8l%V*>4^U(RXX92X-taRlXKkD_+{SmK{!8IP!~c}u>v*dhu|O+j(ljSt z0JsBXD_}z9%wfwYbNx9sg#%QX65(><_#wLsbQVR+wRU$U2QM*2`a_NC@3BIh@O)TI z(OGZN!xTA~8M%^7kddlz$X=5#K=VZ9s|i~pS6T2v$=cj&4y%TW+ItT4L+f2eXCt1DtWT@p0hS#36fl1Me1=S;O*)q7E)PKd%Y zqdzm<#huf@@X?!dlr&asv7wEX>}fz5ElJ*e_|aI&r#FF58_;Q;Uq4UCR=Re%|4_Ax zzl0^RXvI6ZCBY@@@0$VYH7(i*0Froq^M$P95hT|~pGZ@vb#BnLU5nQEF? zG{R6#jl)xm{Hi}_T{|9aw*X9S)mrIX&RK+uVmBfEAd}98fpv0Ns4HOkK5y{Ry48tS zV>qga4|Ad z0hh1R(4fy~CTFgNupq)WM+rdNQ0*R(`M>|Zrv8Oz5LBi=HODPg{i#c+oatUD#GEG3 zq?EHKIJt0+7GUqq;o^nfcM%y)HzckEJm(XjV6oHr{B!dOIB)I7_6qLg5)sFze+Piv z;30_$fTN_|gwngBqNC^pFPo}@Mw?ix9&8UA98MlS$iXb;k0QSEeZm!Q%kwTavTJtL zEB673zmuwr47`|k;=j`#D159Jb4GRK9LYF z9x98GB>YXsALGm6k+Ob8A1O^)vd1zP0>4|Jzd@A_f->Xo3vF!FeIM#;FjQ#X5uwn4 zBSHE%t#5`-sko!3LhU}(quNN}J@Jv?X$__UB*J;R_R&w|~Y7GgcXb`C-0n9d;ZpUhJNV0Iu_iz>iu#HiEm;NX1KXvFE>|%a=s=Jm6;MT+$=zJ^ z+#p6f)|`3-#rk;$WTLx23&>~|7UoY278&HmxdX%>WO10NFIwSc3*Gh^?`>^y3o1asVNRU4=2tS-O zT2sMb4$ux|!>&76sO7v1_7NS7dNKbj-m6Q`_zT$C%_O24&i_N-GhYwdeR*#to?XjF zU|?&nuNp|2#GI{(m3uaHc@Fm#k>>uL1qbnyB@_g+2|orNBx49R^FQJImb%DDk?@ya zBAxXSE}Fdvwg?wpfT>J}o3u>Vh4M>Q%iH;FBnjacwv;-t2ErM!89)#GbXj5NcDNAK$o;g(bhN%gw9Z~C)ral1kKa20T%sB18 z$uiXt0=OCyOfFO2)`+Q>Cq?@|&H4e+dc)qdXL4(T?<{FEQG}oY9`!9gW39By{l&KPrpR6y*mH za0=&galqvyuWb%LgeQBJ#U#`gjnS(HkmTdkM{5p`3&$*8s-x}=%TQItcG*k6cn&zN zLfd2(MYlpV80Y}|*Zv!+FhR`}fP7PoD0`_-o$$D#7tHvnyhZ3Q+W-WAlZx%|QH5!W zF{-7Vp9GqM!VR|0b1iy{kRu3(>xzRfz!1C{mdN0Zv03%_R=`NtOhNe=l}*|DY#M>@ zO91a%@RMYOp4Ih@8bW1(bZrSpl|%_n1Zq*AKKp|d2J2E711J59J99f*y#gaA zYkFE}g5&4x8`9Yc2d!tC*wqdjFG5rMfKfrqI-@nHQ4>O%I`o=fdfI~p$_IO11OiM7 zbMoDC`+w;b9`9{1%{$yJrg~4H=PP&o?9TrUxYx(Gygtd7zR9S$%-1>ZzYf){ogMhC zK8Jab_D|cIhP?l+Y6$IvAb(MqD1Z0%Io&^u&&~d)!%sQsIeS+kSo*d)x@+K^DDxP{oC>Mfgj~3VSjq~ zn;GM`UH;w><14dBa+o80Quu>B;`iYDg3tPMvjUITwPU;d`2M>Y`-5}=z6PMjzuHhF z&inh58U4d&`@3U1eCYE7IOPHPqz57LWpJ(ei{0l?2 z{{vps(fCcrl1F`ETrR$r!nxU>zFS*+z5XC$dmL-@42I^)R1N&DKZ?1AcvDU1u5Z82 zkHvZ6tHXWT8KGSXTLj0i#`;q^ABgAj((Ji?#fHS*gWKlOohC&&YKLs{Q6E??ok!q^ zWk6xAuLd)4G52D@A|965yCE`kKizO1L+1kt{7e90qLIpFR}f1L{KqimApkvwz_$oy zQd>iL;~nZ{RdVQU%i;KG8!R+p5&1-u{HoUTao69z+(44U*K@Su*JObH|CoygZWXIz z`_52kJ226$WV?MJ=n7+J<#5Jylk-9|_G&VT=zyS>r?|t_VbpGyJHB;g_T5ir_Wl;G zgdkYvI4y0G4nPCMEuX_D>vAaHGwaWV&^}Wr_Q&vA)o2rtn8>6d* z(0RLlY~BiZzx{Z)n2~(@h814(J42s;>0$r?cz6LtrJ8r)<`r>Y?cnl-&bv|DS-O3( zLlt`M^zw;q*VEH3u$z2cad~?`ZT1aAA2?caeXAan z-88#l$DMQmOn2u+OjerQ?YYrsN!<$l!_{-6pKXwOPKWeX%^y`;Q+RdT(JdR?RNKL0 zI(u0e!K|Zc#BkI>AR71DJxGuLv7`os@ZEdnLR55Jw8#VM#WRJg!Zs~OgVL%)XZ{^u z9EY0+3}p>@kQPS!)ZBZV_(1-cA<5&O@4&->-h{x4A`>{JC7ahlKX11iz^5y(zYl@F zY?;-5-|wFli{&f`D!8!Vbp136Fu4fUc^~kB4?&r~Nc9bk@eX4u6a{B<^ax7 z-ZC7{e+F%lC}_LjZP8FcNnj9gPDfBOMl)m#+D|4uI@W^M3#9Qsj_oK22UQ1&JEH5} zou9(GAnqC5s&PN`-(@~9pP%|JatHbl9k??%!$UxH?0umZ0zSfv1yeLbBa*54K~XJ3 zhm5pAPYz!Mgnm_`$Zl*wAIYZ?;@-FBno2?LMW&dr5lz)Gpu|qsf7#>f5=TyXut$X|COrhwld@P|`{Y^jRz4UnYWN`d-=xxpY z{COwE=lxC3`JJBeKRxCBt)B5;C1+VCre9YYdO{aSIp@ZS zFFtViY9oTod(-%U6U2W*!kz;4h{7-09D1(5Kx<{TZS#2fKPYjjn3?drp8_o=)ST9> zY4i+Sc2(~hzwoN=r6p#4VUfgi!ZefxnIjDI=5ia)l)@RNHIQS2w?Jc) z`kM(xsUn6LAfC#{A2aAF!ti}reYwjg$!}}*E}>H}xIOfSFHxr&&wReZNoZ$Qi9{fA zK*+yN!j2Nkq-!Pffcij|Jon$qOQBOGEi&2;D z-vY)ai8A*!5r>H^6MFySG*}A6ZfmhE|m@U~d7y}~Gh)&Uwu1p4ZL-Nm7SD2*#Z)H-rGg(ZP z(#g%ji+ZxX_}Lh8N@gR(Y+lB@LtYPvZ#q*bcQhu4Q1l044@5WM3%1lQSQ`Nk`YqkI z=}uMwy+D2 zR_*H+i0jz2dc<+H0Udg=iKB@GHtz(h=7bfcqX)7NmF>d4c2#cbjYU}Ak!QWMZ(3g> zYf%IK`TKYMmA?xRh`pX{V?@X3kvutd0Yc$swN*%!SB*t%y0dyUoJx!F9xieb4azJP ziO;IHlXCNU`f=Mu|MRQ*RDG1hG<9O@Xen~JIYM(z23u6iTWpAgqrwWaWjC{Qq240K z+w)BnWZ4lJ^5r&3RJoI8Oh-#`tp{yak=^#g)O5;@26@kh3MI{|xQ(SrKXX! zN&3pb_>~-P_v|re0j5U1DS=FNEp!&4SGo;lpnn(oyQ(c846;&r%Gn=44)I`qm*Cra_6PDtJ{Io(o4rf4#|8b{Ul zJSxywBc8 z{c?5^vM?FP2Yy|SGxi`2Sk%}!qDr7dx%DaqA4yaYR@H2HusGTwLP|DAvkV)hvmgrj zI_PFVGwKCGf|vt?P7D0aQqHI`SuG0B$8v#-Fhk>g)xbu*s^rU~^7;iUH2*N&5z=rq zf{`{zg;xk5b`>ZTH?`VGUEZQgw@Ss*#B!~Mmd!p?7&~p}+=@Zp@9%35TFWuVp`+`* z0B)kwwuCB*dJkK#x~6TBbvu$W4t=4)Tb3k@`lFpst58UbA~WE*;E6*NcyeA-+W*^Q zzrV~_``gPkc(rDh;A$a6UPv@Wb}A z@9y_*`!$r#8DtAts~_b+VfxG#xbER^iNpMw?9~rG)9d5+u5IJbXG6@ccPZ=c`INio zL-sDuu#DY^n>}|@B8UnF2~ow0ugxq-v0R*Y#=%GYGV>$^D#&w61#DB<<0x=D0dy+$Vfg|(QY;&Z0$=RRv=}*w9uXgq?X4AGPVeaqaqfVQ8ye07endrTLp~<;l z?$@-|;A_zcz)oHBC&#Qw9 z(V$?J@#2Ed1=w$41r(&q>f{_;w=#0QlS)N8*=RRr-brM4s-obF zk_QV?zZXn3`jP0V%LG)s4^nGe8bU#c2lLuG2m+U z#xM1C?m35{aiEE=NGX8&U(1S8Da$>{buzf^Qh|= zINyG=-qRvGv6y{p=EEzK#ic|&?VP(g4+YsdKK|wEw0G;qn&&f5ryA-$`0Y2vnPCx! zmk;Aco1kQSHRZ^T{9Ex##o=I4T6(>l)S)P7}2=@8!}l%n#C_iWEZ zsofKA99ny0<$kY%z`eIvwl!|Kwd48vu-r$tKIgeAA6n9Plk2VUiG2n6n#osIwElR0 zu{*JF-3o7o_R_z~Y;&U=>vI;dvUWPO?+ki5D=lwr=5Mb>?Y?VX{ykt7Bt6UZiTmGG gbMlLxqO1!Iy0FKULdjJ3c literal 0 HcmV?d00001