From b0211c6e29b1ddb2c3bf31c42f0d0a97a288d3cf Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Wed, 7 Jun 2023 17:43:42 +0200
Subject: [PATCH] update project

---
 agent_based/inv_cisco_wlc_clients.py     |  20 ++---
 gui/views/inv_cisco_wlc_clients.py       |  68 ++++++++++++++++
 gui/wato/inv_cisco_wlc_clients.py        |  95 +++++++++++++++++++++++
 inv_cisco_wlc_clients-0.3.1-20230607.mkp | Bin 0 -> 5517 bytes
 inv_cisco_wlc_clients.mkp                | Bin 5554 -> 5517 bytes
 packages/inv_cisco_wlc_clients           |  11 ++-
 6 files changed, 174 insertions(+), 20 deletions(-)
 create mode 100644 gui/views/inv_cisco_wlc_clients.py
 create mode 100644 gui/wato/inv_cisco_wlc_clients.py
 create mode 100644 inv_cisco_wlc_clients-0.3.1-20230607.mkp

diff --git a/agent_based/inv_cisco_wlc_clients.py b/agent_based/inv_cisco_wlc_clients.py
index 9151962..3794c86 100644
--- a/agent_based/inv_cisco_wlc_clients.py
+++ b/agent_based/inv_cisco_wlc_clients.py
@@ -15,17 +15,9 @@
 # 2020-03-15: added support for CMK1.6x
 # 2021-07-12: rewritten for CMK 2.0
 # 2021-07-15: added support for Catalyst 9800 Controllers
+# 2023-06-07: moved gui files to ~/local/lib/chek_mk/gui/plugins/...
+#
 
-
-import re
-import time
-import binascii
-from typing import List, NamedTuple
-
-from cmk.base.plugins.agent_based.agent_based_api.v1 import (
-    OIDEnd,
-    OIDBytes,
-)
 from cmk.base.plugins.agent_based.agent_based_api.v1 import (
     register,
     SNMPTree,
@@ -193,7 +185,8 @@ _powersavemode = {
 
 def _render_mac_address(bytestring):
     macaddress = bytestring
-    bytestring = bytestring.replace('|4|', ' ').replace('|4.', ' ').replace('"', '').strip(' ').strip('.').replace(' ', ':').replace('.', ':')
+    bytestring = bytestring.replace('|4|', ' ').replace('|4.', ' ').replace('"', '')
+    bytestring = bytestring.strip(' ').strip('.').replace(' ', ':').replace('.', ':')
 
     if len(bytestring) == 17:
         return bytestring
@@ -223,7 +216,7 @@ def parse_inv_cisco_wlc_clients(string_table: StringTable):
         client['status_columns']['ipaddress'] = ipaddress
         client['status_columns']['quarantinevlan'] = quarantinevlan
         client['status_columns']['accessvlan'] = accessvlan
-        client['status_columns']['logintime'] =logintime
+        client['status_columns']['logintime'] = logintime
         client['status_columns']['uptime'] = uptime
         client['status_columns']['currenttxrateset'] = currenttxrateset
         client['status_columns']['datarateset'] = datarateset
@@ -309,8 +302,7 @@ def inventory_cisco_wlc_clients(params, section) -> InventoryResult:
 register.snmp_section(
     name='inv_cisco_wlc_clients',
     parse_function=parse_inv_cisco_wlc_clients,
-    fetch=
-    SNMPTree(
+    fetch=SNMPTree(
         base='.1.3.6.1.4.1.9.9.599.1.3.1.1',  # CISCO-LWAPP-DOT11-CLIENT-MIB::cldcClientEntry
         oids=[
             '1',  # cldcClientMacAddress
diff --git a/gui/views/inv_cisco_wlc_clients.py b/gui/views/inv_cisco_wlc_clients.py
new file mode 100644
index 0000000..4ef9c43
--- /dev/null
+++ b/gui/views/inv_cisco_wlc_clients.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from cmk.gui.plugins.views.utils import (
+    inventory_displayhints,
+)
+from cmk.gui.i18n import _
+from cmk.gui.plugins.views.inventory import declare_invtable_view
+
+inventory_displayhints.update({
+    '.networking.wlan.controller.clients:': {
+        'title': _('WLC clients'),
+        'keyorder': [
+            'index', 'username', 'uptime', 'ipaddress', 'apmacaddress', 'ssid',
+            'channel', 'accessvlan', 'devicetype', 'protocol', 'status',
+        ],
+        'view': 'invwlcclients_of_host'},
+
+    '.networking.wlan.controller.clients:*.index': {'title': _('Index'), },
+    '.networking.wlan.controller.clients:*.username': {'title': _('Username'), },
+    '.networking.wlan.controller.clients:*.uptime': {'title': _('Uptime'), },
+    '.networking.wlan.controller.clients:*.ipaddress': {'title': _('IP address'), },
+    '.networking.wlan.controller.clients:*.apmacaddress': {'title': _('AP MAC address'), },
+    '.networking.wlan.controller.clients:*.ssid': {'title': _('SSID'), },
+    '.networking.wlan.controller.clients:*.channel': {'title': _('Channel'), },
+    '.networking.wlan.controller.clients:*.accessvlan': {'title': _('Access VLAN'), },
+    '.networking.wlan.controller.clients:*.devicetype': {'title': _('Device type'), },
+    '.networking.wlan.controller.clients:*.protocol': {'title': _('Protocol'), },
+    '.networking.wlan.controller.clients:*.status': {'title': _('Status'), },
+
+    '.networking.wlan.controller.clients:*.macaddress': {'title': _('MAC Addresse'), },
+    '.networking.wlan.controller.clients:*.wlanprofilename': {'title': _('WLAN profile name'), },
+    '.networking.wlan.controller.clients:*.wgbstatus': {'title': _('WGB status'), },
+    '.networking.wlan.controller.clients:*.wgbmacaddress': {'title': _('WGB MAC address'), },
+    '.networking.wlan.controller.clients:*.associationmode': {'title': _('Association mode'), },
+    '.networking.wlan.controller.clients:*.iftype': {'title': _('Interface type'), },
+    '.networking.wlan.controller.clients:*.nacstate': {'title': _('NAC state'), },
+    '.networking.wlan.controller.clients:*.quarantinevlan': {'title': _('Quarantine VLAN'), },
+    '.networking.wlan.controller.clients:*.logintime': {'title': _('Login time'), },
+    '.networking.wlan.controller.clients:*.powersavemode': {'title': _('Power save mode'), },
+    '.networking.wlan.controller.clients:*.currenttxrateset': {'title': _('Current TX rate (MBit/s)'), },
+    '.networking.wlan.controller.clients:*.datarateset': {'title': _('Data rate set'), },
+    '.networking.wlan.controller.clients:*.hreapapauth': {'title': _('HREAP AP auth'), },
+    '.networking.wlan.controller.clients:*.ieee80211ucapable': {'title': _('802.11u capable'), },
+    '.networking.wlan.controller.clients:*.posturestate': {'title': _('Posture state'), },
+    '.networking.wlan.controller.clients:*.aclname': {'title': _('ACL name'), },
+    '.networking.wlan.controller.clients:*.aclapplied': {'title': _('ACL applied'), },
+    '.networking.wlan.controller.clients:*.redirecturl': {'title': _('Redirect URL'), },
+    '.networking.wlan.controller.clients:*.aaaoverrideaclname': {'title': _('AAA overide ACL name'), },
+    '.networking.wlan.controller.clients:*.aaaoverrideaclapplied': {'title': _('AAA overide ACL applied'), },
+    '.networking.wlan.controller.clients:*.securitytagid': {'title': _('Security tag ID'), },
+    '.networking.wlan.controller.clients:*.typekts': {'title': _('NEC KTS SIP client'), },
+    '.networking.wlan.controller.clients:*.ipv6aclname': {'title': _('IPv6 ACL name'), },
+    '.networking.wlan.controller.clients:*.ipv6aclapplied': {'title': _('IPv6 ACL applied'), },
+    '.networking.wlan.controller.clients:*.dataswitching': {'title': _('Data switching'), },
+    '.networking.wlan.controller.clients:*.authentication': {'title': _('Authentication'), },
+    '.networking.wlan.controller.clients:*.authmode': {'title': _('Auth mode'), },
+    '.networking.wlan.controller.clients:*.reasoncode': {'title': _('Reason code'), },
+    '.networking.wlan.controller.clients:*.sessionid': {'title': _('Session ID'), },
+    '.networking.wlan.controller.clients:*.aproammacaddress': {'title': _('AP roam MAC address'), },
+    '.networking.wlan.controller.clients:*.mdnsprofile': {'title': _('mDNS profile'), },
+    '.networking.wlan.controller.clients:*.mdnsadvcount': {'title': _('mDNS adv count'), },
+    '.networking.wlan.controller.clients:*.policyname': {'title': _('Policy name'), },
+    '.networking.wlan.controller.clients:*.aaarole': {'title': _('AAA role'), },
+    '.networking.wlan.controller.clients:*.userauthtype': {'title': _('User auth type'), },
+})
+
+declare_invtable_view('invwlcclients', '.networking.wlan.controller.clients:', _('WLC clients'), _('WLC clients'))
diff --git a/gui/wato/inv_cisco_wlc_clients.py b/gui/wato/inv_cisco_wlc_clients.py
new file mode 100644
index 0000000..7993396
--- /dev/null
+++ b/gui/wato/inv_cisco_wlc_clients.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+#
+
+from cmk.gui.i18n import _
+from cmk.gui.plugins.wato.utils import (
+    HostRulespec,
+    rulespec_registry,
+)
+from cmk.gui.valuespec import (
+    Dictionary,
+    ListChoice,
+)
+
+from cmk.gui.plugins.wato.inventory import (
+    RulespecGroupInventory,
+)
+
+_removecolumns_cisco_wlc_clients = [
+    # 'index': {'title', 'Index'),
+    # 'username': {'title', 'Username'),
+    # 'uptime': {'title', 'Uptime'),
+    # 'ipaddress': {'title', 'IP address'),
+    # 'apmacaddress': {'title', 'AP MAC address'),
+    # 'ssid': {'title', 'SSID'),
+    # 'channel': {'title', 'Channel'),
+    # 'accessvlan': {'title', 'Access VLAN'),
+    # 'devicetype': {'title', 'Device type'),
+    # 'protocol': {'title', 'Protocol'),
+    # 'status': {'title', 'Status'),
+
+    ('ieee80211ucapable', '802.11u capable'),
+    ('aaaoverrideaclapplied', 'AAA overide ACL applied'),
+    ('aaaoverrideaclname', 'AAA overide ACL name'),
+    ('aaarole', 'AAA role'),
+    ('aclapplied', 'ACL applied'),
+    ('aclname', 'ACL name'),
+    ('aproammacaddress', 'AP roam MAC address'),
+    ('associationmode', 'Association mode'),
+    ('authentication', 'Authentication'),
+    ('authmode', 'Auth mode'),
+    ('currenttxrateset', 'Current TX rate (MBit/s)'),
+    ('datarateset', 'Data rate set'),
+    ('dataswitching', 'Data switching'),
+    ('hreapapauth', 'HREAP AP auth'),
+    ('iftype', 'Interface type'),
+    ('ipv6aclapplied', 'IPv6 ACL applied'),
+    ('ipv6aclname', 'IPv6 ACL name'),
+    ('logintime', 'Login time'),
+    ('macaddress', 'MAC Addresse'),
+    ('mdnsadvcount', 'mDNS adv count'),
+    ('mdnsprofile', 'mDNS profile'),
+    ('nacstate', 'NAC state'),
+    ('policyname', 'Policy name'),
+    ('posturestate', 'Posture state'),
+    ('powersavemode', 'Power save mode'),
+    ('quarantinevlan', 'Quarantine VLAN'),
+    ('reasoncode', 'Reason code'),
+    ('redirecturl', 'Redirect URL'),
+    ('securitytagid', 'Security tag ID'),
+    ('sessionid', 'Session ID'),
+    ('typekts', 'NEC KTS SIP client'),
+    ('userauthtype', 'User auth type'),
+    ('wgbmacaddress', 'WGB MAC address'),
+    ('wgbstatus', 'WGB status'),
+    ('wlanprofilename', 'WLAN profile name'),
+]
+
+
+def _valuespec_inv_cisco_wlc_clients():
+    return Dictionary(
+        title=_('Cisco WLC Clients'),
+        help=_('This inventory plugin collects all the client information from a Cisco Wireless LAN Controller. '
+               'To use this plugin you must also enable "Status data inventory" in a "Do hardware/software inventory" '
+               'rule.'),
+        elements=[
+            ('removecolumns',
+             ListChoice(
+                 title=_('list of columns to remove'),
+                 help=_('information to remove from inventory'),
+                 choices=_removecolumns_cisco_wlc_clients,
+                 default_value=[],
+             )),
+        ],
+    )
+
+
+rulespec_registry.register(
+    HostRulespec(
+        group=RulespecGroupInventory,
+        match_type='dict',
+        name='inv_parameters:inv_cisco_wlc_clients',
+        valuespec=_valuespec_inv_cisco_wlc_clients,
+    ))
diff --git a/inv_cisco_wlc_clients-0.3.1-20230607.mkp b/inv_cisco_wlc_clients-0.3.1-20230607.mkp
new file mode 100644
index 0000000000000000000000000000000000000000..3cbfb4cd9d266ec96cf81afadb17e28c87f1fa4c
GIT binary patch
literal 5517
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
a<Nr&@|D((QTK8^OeFJS!!51ShUi=Rp_0@g=

literal 0
HcmV?d00001

diff --git a/inv_cisco_wlc_clients.mkp b/inv_cisco_wlc_clients.mkp
index a6caf989a98b1841145c5960673885ecfd1056f6..3cbfb4cd9d266ec96cf81afadb17e28c87f1fa4c 100644
GIT binary patch
delta 5475
zcmV-p6`bm_D~&6EABzYGt)+lu0{>}lc3)#@b7OB`cWh%{V{B<<Zgg`kFfKDLF)cDM
zGBYqXFgGr3Yj6PVU3+ueIFirb{uDT;wj}Mzv?SYdqAG8d$4O;elVp6cv$-mdOGT5A
z%`ruC`0!)1xzB#xcn}X#Hm#Y-?bV{QJ0^i28bCMDXtYRwFiIBbi$9r0K-1k__7}+h
zJKmj)UyOHmcSqyNWV*Kp>C@?S=LH$P_zqMRrJqBUFaAC0YtOIB>oo7pNbl_0d+(8c
zc^z*B%bRn*yhy7uPScz7FfA{FbUEk^H%Kp}MUY2X8Knu9I{o<Jgha_LP0BQXAnAe}
zMMaR3FYk|kNDxPmTzJ1Ey$xbfuQl=Skx#xHp8ZT7(uxFrGHXSVEzBc+7;fiunch-T
zq)SQ`5sky5du6SOlhI_fHQMpUdo!$nhNP&nEX_-@NON-Z;is`Ty<b&wyfxb28c${<
zr+0Z&mNb#2$iy2#DJH=5E{Rh=oL6~_61*<UY_`3BE#&T9r&*bLX@14PizucApg>Vq
zAj|osU(gWl&wC*Ad4Qsx-^IaPiaLAfT@3ZM^{%Rj;cp{)S8T5=HEeVU3*Y%=y1LB8
zH*8|!FDdq;6~;PIMrAA^YMcc2IAPdZnipbdjXY4p7Kn9cG#%~hx!y8L<~jYXigG56
z-ozV!d!x&-fyw;f285>avxy0)3jZ>u^C~GLRK&+Lq2K<^=6?kC-}|*llmA2eKi=K5
z?En6BXX@<#cd`GQ-2QLQ$mY}be{)DSHS>>!x|#o9k`}}MgcZks9gT4Z%gdUs8D4Dr
zD#MFdW_JMu0#bGt?$0+@S;Nf>C<exsfgU%1wphWVmUR;>E7?TDitTJgArEF(1>zCA
zicn$m5Nw)NEz_{7h!j>;he)GZXM<7I^L3jFn52s1Z!aAEtCBXjJv4;h-~R8hYs3DJ
zNBg_Z{(q<Szuf@+N%|k}@9y)zY@J7%OsD&5{omW4g8uj5@_Xu^kQbL#6o-%Cp347!
ze@ZXOe{5GpzI_=b+cdc)*#me3$<D@0vh`P3p3^W&u4bev7hA6|W#c8}ypIB!6m&-3
zef&(`(S+uHOirrHI0|GQxt%cRA#*NfWVKHLpwFM)!&YNPa5*m8)?>iD@k@%B$!I*?
z8trb4UNQc-)Wb@D`7k5sy*yeEz<KF^S6dV2C!os_g6|U2d+2FgEfWseXBE7b9tSSe
zgeJJGZHEzC-iD&IC|2-tub>bVosr<$Pp)WDJ0N3k&$}mmoNHxHDcRck8<98jI4a5k
zW58UUtw&uQj(gnK(J}43{L+sfijus3H5!qlG%52mj$!@gC3m()Af){n;qn20kA^U3
zh=3UWXFE;<Ki-a`%kAKr-prRb+W^?k;_50&ifzyHK+qeDJY5o0AucSQ$n^BJM!TN-
zS>)Z0Nwj1w?6ZAnPOm^NH0QfgbTZFCSp4n`Rq!dj<97kH-v{>m&QBiZ>0-DsSgQ?Q
z`H<0hNEe0Kn$t3edBE!B)f`KIf9n%1s<_1ZHs*Yc%*7ZX2jnZm_C~k?{kVN7w%ENf
z-g9s$(<YcEN@C(S;0Jd>>}MGm<<R1mZ2JbcGOwt?YT?I4owCD<q@{oBM={nQD)5UU
z4I&?1`DGf?C+et@n*<zaqnbOK8I{~+b(vjpKarJzDQK$&Hr+-wS#e{3RFV5(R24=o
zL2$D)s{!?C<@RJ+K=V>2PMKIrFbCs%nYPc<w4$$A6P61D_F5!z9CjwBKJ1x;E<!6Z
z8bq+CF;$)A^fpStSq7<qW^VmB3XML76tiHEMFCS#O#NFJgGRS;yeJih6)n>!@q;qD
zjmif@7$(xsF010f5DW}|w4#_Sa@cX;!~v~f^{_UwFrO~27GzOaz*o&W0degYF<q2~
zRB`pCziGI;2v&@$#M)~?jzs7Pg@gf%e953Rrb`e|4Pyeo%F`+fqU@UHqC}lP;R*qP
z7G*nvN#4I%W_HG|&?UE`G|Y=c#;GJ^PirJ(M>Oy=|1yfBGNSc=@Evnuv&xGK)~=lX
zN`q1jjxm$*GAasCwi;!1Hk0hqzn2oDq43!N3kF&7dHn=1O>knR^`IO*iNA||HTmtq
z{aacrz_?VoGDA$<ke;RB7(76iKx;v*)X5H)S5Yk%QGhjF`bl^fg-Y*}T}`CO$cI5!
zXy!!Cjx|gd_$eiSI4;JdV~d-pAcR%2fYBISgC_n2{?{Pb4E{ks{utwq3q_z=cd!IF
zEuXSbzf~Ys5M*N3;RgXNq_DF*EmQDyo?!KAH1Wn`-{8a3E{)dmG}D$@B4o2^nZo>`
zhMnR?6EYd@zPtX1VVGpr-n$?FVHhF`BPCC$X?VcE@0bREMzlWQ3|POb0(@Ig5V{3V
z^gYdJV`)55>k8{P+72}$ShtI4c>?3W=yr<j6_UTZx<n;b#S_)vMLC$mq7We;vn6I8
zxy4Z2yC00E!99t}g2oF`v6%f`>W;$L8auvEPG}Np>lL@GYR)Q4#l)bjjv<LGy#qVx
z-<o4UTUZo-o(%!;P%kM7p|@HNU($0JOR70+2+;c=u0rK*C18#hen2~DTa4<fmZ9z&
zUH%+{5g=gJD4I8;&jNmVWe$2d3|of%Wy^TKGP+q$4{ukS1+Q044?ghK)MIm9%DjV1
z$b1b`_qxh}-3B<*1l%RqWaaavAIxDplEYZ+Up|z7v|w)aV8)6=rpSXzRW8d@w?>|q
z(<}ys^?U!^{bz4TdZahd)4WF7CZ_ZTk21wSS)Y{?m!8goAd8uv;)#?E#x`1zm?nDv
z$iV>_@6YPr*K%4`d1CjGf=zE=fUWl{ICcH=-d{$OqDTHhuIYV0&BOk3FgTygF4&H4
z3EN43O@J46b4Soza9wEL9|)DeT3XO~YxJkj8#OO+Et%<iAE7CM1F4-~@Gi40^Z^-h
z31Ewasexu0-0J?R#tsQLGDCt62Fz33Y+~da5~T5CmwFMoAPtGNhZ&Mz>N@;PFA^<q
zUc=w4PLeC+kf=rQ78(Iu+3Lry;}mv|WrPiXsxtmp)nUw*AqlD+#(G)a=fJk0<&dBo
zQQv55J~V_<3X^g?u9&BYQH3lmK<!jCO6y4wbBU-8A%-AAFzf*oKr#3}?AG%f42=RC
zX>~bV)Hpy@0PZH_6cpMITZhuW!dsNrO^Kq*Zl^U@aZ|H1{3NK<@XPc%Fe(B*JBM(8
zaVZBED=*NW#)^GVufNolw+zA6<U@ns_~C7kR!M2<0v*k|?|F*g5cXNzr1PF@%Q+vT
z8+Ca;jQ<lRt7<bJ#$W}%S!w4zJ~Zbd1k}4|M=_=>lU+T@<-8~L!wSip4&|)r!-`vJ
z9k|rfgST1Ubtq}hAy(W>>cB(IJ62wQ-F7Hj&r?>kzUw0KtS-hcJCw0!IxB4_cHpDg
z2gX9X?<B9d*0s3qP)f5LtfY3|rOt+_;ng>iJMcog!%E{t7rbtvctJg-)A+7!nHb^q
zeHX2B8^)E*uRFC`m^RU3ao3@wX7^ZG?Y?7aX(;RBGND6xWl&jZb=z%}paGVDLj$k7
z%!b-p^T|-(cIj=sUa+!lPN#wlx^yAyz)}ZwV`{E#k1#fYU6>nQ(n`(-stenOr@~pA
z@ow*mmi-2D&}o<{uV*D^9n^)Xa9&pO6ZwN~Mpk$`oSPn(XS~$y;Mw-`3C?ZUL3cCv
zICm4&g)L9v?DPl$W5+K$j#Hg~Q+><W)OVf6j@SrrM)Ho27;)1{C+04KbF&h;Ld>*I
zs#w(a%#1N`9kARkeB^G0bCP$AiM;7H+q4~v5SyMPW}BAMg{!u+;XJhj#!<T;baadA
zT?OZ8Br%>wN+&fNn-igBBaJKBNb1U18#v;wX4X}TTEJfzZ+XvHsoOz+$9;s{?QnK_
z3S+1z3^pvDg$ITKR*ycv9c*ZE34sv7g!<{TmS6%8+OxeS6DHaEoBiwQOmN2En??J1
zY(d6TI1fEIVnTU7>rv0h>kUn;=ws%ym^(}<THdAk4GRpC9{+)Z^n&^qads!3O}=Oi
zZtz~IrrpqoxoX%~vHhEW+1tTyO4!H{N+CC`um{&ge=sv1%H~YGEY13mttre@e!aDA
zjtX1HjF*iXn2p2VF<A2qQJO6S#H{iBxK;(@F)$GHKA>4iexeU=^E}O)#WS$Ae^5)z
z4*o$cdcfyY>xU8g8z!>6KEVH&Pt|J*KG3dBkT#nHlnc^CnO!=6FmDwU<9+g33a?0(
z*<1`+-d=R(4^}_8&w7G^!bO#^QU{O34LN>6!5kmR2R4*c@G*;no;UV(yea&57ykbm
z{_VYf&C<r+7$zHeNsf+BkAB{I|K;%HWb4h(XXEkK(fi}KAJ4Wv9RDzz1#uW0vFhHU
z{%Y=N6cz{PhJbp1f}tw%!4D3tXoiSeTfkE$OcS(YgT8>ZIN@8dkNTEK1o&<A)nyyk
zy%yZ6W=?JFiEwaC*uH`tDre;bEE*>6m4?e!)%jY1ju&V8K1}|8V72M^q?OOOp^T4y
zfC8}@Hgxe{bqMM2?+-s(=!Q}bS-_|T*-*%Pj1Qefw&KQr4UK%xT2M`0pu=<u4pURm
z<9!=^#KS~q_n$xjr&^##{>E?N-+-Uf4t;Gye?&LyFvI8WtU=yT72l^F@qL;F9yj~P
zwqGqOn@pNYh?_HF(xR*QkncP!WJ6b<M11OVZjJRxLtBTw|FhUIwKrq>c!~BFH8l9y
z4$E>}LvyEpr^jzBOhaX-B7$}1UmaT&?=+N#bMU9LQw!Em*D>tuTKm5<SpjYB_|8t-
zP&}0`w*_wK?a=U}Ep$V5M^-$I!=`Oao0Dv3zd2~oSw3nan@ZvVIa^aZ4NV<ppHhFh
z%2w_+l=UG@iW4hZ$D!jk=wWz!WJKmTcG8@S7>8?rS#+9H?C|hY+Nivtr#CFj)-><C
znvQV9qv#D3|M_pgSN@QeFh>vg6PRk@m(OSR)#8uujo?2NSdYIhq@F_U4OpGUL-7XR
zH0sWWJ<WQWF3LMUr)^vY_>^Yt3@JB@KO5TBAyVaPr|6OWk6i|~OFnFQ=4{IX0?Uho
zuitDAP+r9t|DQkJn8Aj7eZ`ZI6&8~q4-9_<bX7%v+PROCo_+q~Xn(Tr&VT$a^!Pco
zf4Kfz&VL+_Cwu$W`H$1_&YnB}@q5tA=N<p3PSr!hArIAKgUGAOD7Mbc)1G^ZiY)dY
zt|RtL)WGBujbA0Q;QX;F)G@~b9nv87bM`<wJ78jtxQ&hWdc7(O{gU>@i6)+U`@?_3
zS3f-U-iIfqzzh%Gub)7xkFlTkd-|#M1NFFl?}k34c}Vel3fAN3{LPOcQSbNTHGlIQ
zuGD+?aAUlA3is?aY4iF2`c>p1(chXM68#<8AyF^L4T*evPchQI6u>?YAkNzYBOv-V
zPZ#s+v?zPuh8x|b_E%57_VQJi*)e}h91Mwg;H@LCT3!}A`3&wF9J$nOemwQr+?3|*
z{+<w-^K7QZ2(b7bo{$fRN9*%uqsiil4=O*OlN^H<Gw~$v8ogEn+3qvTA^2qf^Vw=M
z!eYyxd}Sw{JfCenwJfIcy^J+9!zZY%8=lI!J%`=uA%x>cJjA?4$L*6wEarb-KuJX8
zll5k(dO_Ic{q6_x>eE_GS4#vL|E^hOzd~#eV3kc+{`2k3qHP2p%QuSG9K`io#TMU>
zAPb)HY?jtRFcxF=LeHABS)KD@ab~adkoAnX`Bt<&p)r$S?wYD=92R36OrB59{+l3z
z^gsL%mD|N&4O6EbCu7?>$l`zOG4t7+^*6jN&Od&73u_Ymk7Yi8U^kAJu=w+%>+rK7
zJbMl8Y9~xIl*{tg9qjTf8GE`Py<gMxX{R={@RV84W~-n1WAT-*SK&eIYqYm{9FX1a
z!$X1)K#<=dm)2u5o~UYVahV4V*$cABB#=wi@tfq~B(}|cdqjRZJ0*Xo;5mwOJlF6>
z)%ivZfAn_xI}~6YDYA<B+9EfPd}uRXD);%L$2|GL9yVs~THIR~eLUQEy(L3C3ZgMx
zF^2?eu~kP=HO4f{SZg>p&NOOnSP=00{44z^EQ|m0&Bs&eaIVL=J|(M-Gh`B;yT-y(
zpP<!Pb}(msTgVRAYO#NQEPbs#c70Yz%RZZ}?7D~fZGcCAv;<%JW&i=h4xIum!)8>a
zk>cKX`@`wcuaLd?9`WDNbTrwqzyGtp>*Bxvit*o<#@Ags#%^(pwMB=21kd{uzUrFM
zfLp6v+|Bu0y7@yRRDA2l6@!?p-bCz8Tpvr|{d*{Vbe%>4WuJd$S>3EgM49uG&3cDl
zlc<j?;-7gj4xeex8$4Ku@pwskb{G_lp$vjbNK14RP+DxW2HHVOgvpR)U13Ws5-Zgs
zkrKNi#0c<4fKe8)B8LDKaYG4c1_bfV>^dA+SKSup!-|b4pG3EY?*MHE?<Be<DhF6C
zCRcaH4lrSNWN3eh$JzQVM;{JJ%YIa#+xIBgv6cIh){^q)ffYL^Rfeth0w`8~nQ7MF
zTBlY~lez8F@o~}O$H@X#{0s5Tn3n{b4mV<L7hFTu{4{r3WH%x!INnxAQ$#5}N`eE)
zii~I|wdIgFeG?*pdT0b-b~r>1rG@-WrV+D~2y=(UCT@RYS7l<Q0`0w>K&e<6V2t>f
z0GJB4!om`xJIH`)IK>)Hdf^hLymA4m<BfpOV~iqObC_|~8cuQz(SkV)WCn0*m>$t%
zI6I0bkXF1Bpv@Sifa+i5A=XZ;hNwUb!x+I80W!l2Xm}bSg&HY0Yz(Ds(gZ-p5>TFP
z@dE)fJbZt#!Wdq?z?nhvA!!MWE2R8Ek(hCL39x=9Kv>I90~;6eGZFRTzT(3KgPDE?
zp<46RVI$0tA7Dha{s!(*^H<ty8fOSPyN(L&+r`{5z;F7+ps<4YaZJD{spJ0YFHaHX
zQ26pw$MX9s*g18OiANgWi0_@Hc%nOSg^ERW_&tB*C3vAwT_L|SNH+OG#7+ZOE!@Pj
z?|icPCMDN?9^yGC+l4srL`OC2MaRn1MIgSNWgnW>I6u+kq}-~0^K0?7?D30+>^sEb
zIKna&2lnX=Aht4e@zy1{pzE%+G6-0Mii4*dvzDUrG!{1S4$dzu$Y9X;shpjsXM3rh
zJXA8K>DMYbu@93Sta2>XcQIgbnd6i^=!G!AH4UiKVASC;v&T-VL8_<J!BewK^v~_F
Z9g}etHIr}^6b$-q^uNKjvoHY2003g#!fpTn

literal 5554
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
IVH}+Q0AS<+Y5)KL

diff --git a/packages/inv_cisco_wlc_clients b/packages/inv_cisco_wlc_clients
index a8519f0..ef573c9 100644
--- a/packages/inv_cisco_wlc_clients
+++ b/packages/inv_cisco_wlc_clients
@@ -9,12 +9,11 @@
                 '2021-07-12: rewritten for CMK 2.0\n',
  'download_url': 'http://thl-cmk.hopto.org',
  'files': {'agent_based': ['inv_cisco_wlc_clients.py'],
-           'web': ['plugins/views/inv_cisco_wlc_clients.py',
-                   'plugins/wato/inv_cisco_wlc_clients.py']},
+           'gui': ['views/inv_cisco_wlc_clients.py',
+                   'wato/inv_cisco_wlc_clients.py']},
  'name': 'inv_cisco_wlc_clients',
- 'num_files': 3,
  'title': 'inventory of cisco WLC clients',
- 'version': '20210715.v0.3a',
- 'version.min_required': '2.0.0',
- 'version.packaged': '2021.07.14',
+ 'version': '0.3.1-20230607',
+ 'version.min_required': '2.1.0b1',
+ 'version.packaged': '2.1.0p21',
  'version.usable_until': None}
\ No newline at end of file
-- 
GitLab