From a73feea9586ad29eaff8002cfd076c1ea32ab36a Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Mon, 22 Apr 2024 06:28:53 +0200 Subject: [PATCH] update project --- README.md | 2 +- mkp/check_radius-0.0.1-20240421.mkp | Bin 0 -> 8405 bytes source/checkman/.gitkeep | 0 source/checkman/check_radius | 45 -- source/checks/check_radius | 52 ++ source/gui/metrics/check_radius.py | 43 ++ .../gui/wato/check_parameters/check_radius.py | 102 ++++ source/lib/nagios/plugins/check_radius | 142 ++++++ source/lib/nagios/plugins/dictionary | 446 ++++++++++++++++++ .../lib/nagios/plugins/dictionary.freeradius | 91 ++++ source/packages/check_radius | 15 + 11 files changed, 892 insertions(+), 46 deletions(-) create mode 100644 mkp/check_radius-0.0.1-20240421.mkp delete mode 100644 source/checkman/.gitkeep delete mode 100644 source/checkman/check_radius create mode 100644 source/checks/check_radius create mode 100644 source/gui/metrics/check_radius.py create mode 100644 source/gui/wato/check_parameters/check_radius.py create mode 100755 source/lib/nagios/plugins/check_radius create mode 100644 source/lib/nagios/plugins/dictionary create mode 100644 source/lib/nagios/plugins/dictionary.freeradius create mode 100644 source/packages/check_radius diff --git a/README.md b/README.md index 9209cf4..5df5a6c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[PACKAGE]: ../../raw/master/packagee-0.1.2-20230706.mkp "package-0.1.2-20230706.mkp" +[PACKAGE]: ../../raw/master/mkp/check_radius-0.0.1-20240421.mkp "check_radius-0.0.1-20240421.mkp" # Title A short description about the plugin diff --git a/mkp/check_radius-0.0.1-20240421.mkp b/mkp/check_radius-0.0.1-20240421.mkp new file mode 100644 index 0000000000000000000000000000000000000000..af3d90c0c5fe60838831d11bca1d6c24e26a01dc GIT binary patch literal 8405 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ⅆo17*v&0}TswJP+Cc4880K8aD1o zCvN*D?oI@BEK(S|1ALpuY|AGN$xfFC#V9ru*(S@+iF~9HCFLVofgl%wz!r>2MCp5` zfVv2Xsia|czaN3#N5YXn0$Qktj}qd_9LmOT+76D9nzAMPSXR$0NX1N<kDbK&mKjq; zk2?3JByoZd7|4?m06JYI#{1Xp!3??=T!oAGymB>5s_bMbbDjMm7EIL0QR%5-l&Doj zDZQ)&(oY2aH3-wlDP4VE@rl*qG6DuACD-;Cb#Yp!ADwu!h$syDV&UZ`M^9RYq>b() z?Te8okm|6we>AexLi(V?mNIVr3?So54qf#OE$uTcSe*zOtK+`hK`94*&Uv^IT-&jq z3}wdr1t?O1uSkCZ)EspN5)dIRc)wMm4n2@7i7*Q96)gugS^O*~U+roH&ZF9xv9w5$ zW^gIn?6z#LGzE(HrmZ@<`rL;86nG=+sQsrdgr^uSN{8nIZUcwV>^34AYy#NR7{|$t z_k9Dlm1=_di8;OB^`{zrGz!A6QaR7z%V<uAtF9A_pGi#uvw%iS+KEn^pa6l<xSSE| z_u%9g)Kq5}*X=ekB|aZy=w<A|zO*#${F-qlXa}oLF&ym$vGgXFlo^*-L9teZ>_Bg{ zB71X_@F#3M^1gOkGTCh_6Ii?Jw~nQRs??c+fl}YvL6d^=Q*T?s!ALE&*X!#(#tc&h zr01@a$=<y>9(C1V+~nxmOv}e;c%jVB$raj^k>_mzHv~tkNGcZrP4jOW-3ce1PGZ>K zk@^}eCk0X#G9hLaS8qhV59Xp7mD(Fz8{AB}n_yB$Xz5+hipG^&l2jL1V*JVLSAz<- z#O%Z7_tE<y0##X3F|#?u8CWU~(d@K2vnq16r)1ih6N)-bb^oGT3%GP)83TpP)vRFh z5PgtZxIx>O8q(`qJK40})UvvW05+c*vwX!m+RFaoarrAh2wl&tDEgrbm#ez6&%>ed zXGZcA`eMy1(lpy`=MMzwcDQc$^oXWg($+>UyruCyLvD_4Z6kSa3Jp2pnO5gWzx5a# z8TOLLa^z{!9fyj>@md)d<$m*Q?J*4ZZumUupc7)bN9p*cije0iqE3zdG)x#2G~z3& z&xP%t+gM$0m+G&s2{}7zS6~dASrG%Dj`hQ9NjW_GtZwx;M6lp4w=%8_q~};f5B#nt z-AmO~>u%V@ZZSYNO_Hx=1Hxd#+LM_T+uAj_)G88Df%We$Ic*k2g1|1L7*y%xON;>b zN#Yg6>eit6?~^XPbJ}#)MNFu)=Tw~U`r|pkV-!X@B!_3LB+`yl=JH$Z5POYI9aDc0 ze&T9Zk6D(CzrvakgKZsN*!K`!65?uFqID`l{eL%PP{h$L10CVMGBCC{YqnT+4Y%05 zL%%VdY||NkiDRWsTtZYd);mp6NCZO~u?o9~;u}>kjvbc|&a6YFye==Uc8IVHa={kf zwBs%%#O~!%j<7AtHw)@Varf0{3^3^!DO^oErIjqFE*ED@U3r%c12_A5H~Z-}N)ru| zlc4(thh*NJuPO^Ru2PFpbtbNL^nUeD!tNHLK&aB~=3K?txD`HD+f_?hfUEX=b=&jN zi{h^$8w@XAS1lW=A5*sxv@HSJ;-^E6OZ&z_wY&aJr4%PXoXl9UeUDc=s2yNjYuDs} z_Cb(kt|0G)HcLQLai-)53AK@&gKwge-p{+fr$)YY5<i@`4;GkUbL-xs;vFTg=-8fz zwM~8~+a2+aFRPkCynazew2BN>zoW@gIh{CB$0Id}=hesD%5V^VKH~{plgU6mRNv!A zOblRCV!bu6?cak`B5L*Fmv!LGY8$1*lTg5^))tq!uaTBa6CXXkwKH`>k~6<c_{cs5 z3vN!hn}<hj?_}6m%3Uu+=Suu<;u6_I3r&xB;X)S@!XLa${3uqVGcc-)_E(Mm9-oeU zzrTNJ1HW7OyB8fB@E*f6w~fX|VcC!bc8t60I-f|ed6L*O^~rkZpx6DDfl8_#kS*0A zo*R53i8JXmn;@Itj=evr=bRb1HCN|$-3m2^hwOA8*hE8iVW`ZhEd*+F{#o0QMj}gy zHFkfQ%}f*zx9VK%ONJqsTpS{CbNZJ!7#vw7;vgW$MvjD06GUEZp|3JKcJ+W@`6c<O zHcjy7*CaL5d&&oJhRw0Q#uK}x{)@W42@qN?Wmy&KZ<VH5fjJ6K5soDt{D?37Tyc-} zo}Z8e{@Q=jUM;^D!|UK7;Gv$)1DSRyOMYfHU6Px&IMwf{(5k!GpK!?)Vs~96R^Ebm zpkCKG+kb|(Av!uhFK>-vf+)%4O4IUlA(=s<x$=52QQQT&8$#NVY0=yYUqgsxQ5S7o zG{{EZn<2H@HDKwxjT_fEf&+vTg+%&MF$atc`TE8I6T>#VAWIb)EF^eT-alX5474&8 zNn<ZaO5BEr%qT`?s4Kj5O;<$r`i#HGocK_0l|B{gU5|<2X-4raxt!Dyqs3>~+>U#_ z9XI<+*GLM7xA8;Wf64Ret!F?hk-HB4@e*A64^|WhLRwr82^7eaHp6f=sAEFcGCU;> z28F3{mV1|3q`%ksr*QFZ)7&#ueyTrU?PZ6}m(n~bNOwbd-^@eKs9#oR+}1lhZqA!u znvr988eCRqxf7K%vYb+nBzbxY0#Jk2PNF7Lw9mM^orkdN>jW^RthG-p(u&0Na_5q` z6AUQX`tF(~4b#ZCRwBE8>Ljda^#>ZK-i8!Qa~F2EkGfA-(CxUPPtw8?Jz*%(3yd4b zS@{13O3?)-`;1{-p<w>fn_+Jg9~8g=KmtOLF^F+CCeLa>xbs8zG@}j4OM_McG##ah zHfbuuvob1pjAg+m6`AfnXeVsR(RS{pN(mkd3yRycu)A_BIP<-LSH_GA%jdwJlKIGo z=)k-<8{>R*i|b>QnMQZ^+Yzm7y*BKay~hy;c^Ao#i_C5+fG9fvvRPV(4;aIa%yg37 zk|B^b^-hRu8U}LC9wHG^JmDeWMpCX2z|)8*Fg)_#A2LuhwV`I<&8xN(xPwh)SvAha z@E}IAwGAe#va#7CU*FhPY-7Py-67)rZ9gIZ6rwJC_fnF0`IlP$qqb&H+r{-~1Ze`X zwMnWpiHCru!@29b&XU{zvf)_k$ju3Wdj3b9%jxvNF8P01@RDC0cvx#&HQ@DlwLd(K zU%jXjkH2h#Z(D84ikY@NjZf!wF4^dIeDm*1@m0rBy``@8Wmc(y;VHgkSkP@*J>BXc zgo}UNpaBciS_O*c;ox5KWeyvbg{Ds%u&HU-=$$z7*COIV>C{HG+upPkonUD}?eyl< z*45p|^}G15YOleHyG#ddM*^?n*6ezG(;T^1%!T}4JD(cL!m7otjeL2Y8@_uRjXDHR zt3cig{B|`B-RUXTaR&$hqH$fBU~g_|<hcquFcGvoO4*mysi*>=ssF~JFaMJ21ebSO zKl@yRFQzildcYQJF>u>pyL8j8RxnuTAGjfmcZ~%1(nrqm-%MHnvrqKs-YXiTOVKo4 zuM~FcP~K`5Ja0AJYAS>7s#yTH@AsXfnfS_0{G@B^)Dmn2S*c4zD9aVxs=6)9rN?F& ziX>N~)$~&%kVse&n|TzYHG9@$!B8FnW!Dfz#ww3)ZGAFq{{EB!nwKoyt-d{w<5x&? zjDsE?A+dh)%jU`1*x3EO(-LA16#>0$uh88`cqm2e)f$B>dOR?9HaPCM&dS?+=lJev z|6ez$j=h-}s%n)gT~C`g{PbV`Vt*z-ngAZRco_aYkSnqG`Y_jv`xKMcZ&s6D`nnJ_ zQP%Ky{IkRybz&R;8vIu~epA5dJmx)lqA_NAbq;&42hEuzXH(AEe81*~MYXW;PnOT2 z)q=;dNJT$JH-Cx=<<F94=#MVGqOo~ZKZ~=Ytv6^qf?pxFS0vlX){RmEbQ|LyjO2n^ zM|1eY`rZc6;ExJgktdVD#}f26UUz;?R{*)Oth|)R((kxrI~Du!C*5T4=RgI`H{Ikh zQCJE#S5ndP5xhUy^P53;hG-*l6Z7?zJnEaPblWQV2Q*RZK$_~CnT$Ww$mj1YBsUu2 zUZDa;064%0D^+P)c6)}r9l4zKV8yrwSA}+HK(V{(JKibTBj{|0KToAUvkp6oRi!e+ zYXO8=Z+bN)UX|Lkz8$SRt^vB<VF-y_#`S8@P+DBCj%@E%nmluBi3YuoWc#|k;~YKM z>g)uCwCi0A18J0bG})gmLJR3HmVwC2o^`q#E1P9+^}0JwqtsrF+p9@ZwmodmrpXH( zRb4-SzqfYz4PfwW%|4qpEbpKgS^0rI1hADmN^`L~lB4ZGxuwpPP|>67IS5tAMdeol zK?OYGN;^5nfuhX=S&OSw-yZOV&epNG>h0n$A0aWv-otDqXSKW5Ybvx_HlPC<pnZ&5 pmc=nFPLd~TiGNHmMHH`o`~Nfy{|`qIjDH4(00enRLEJz<{133WW+(sv literal 0 HcmV?d00001 diff --git a/source/checkman/.gitkeep b/source/checkman/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/source/checkman/check_radius b/source/checkman/check_radius deleted file mode 100644 index 08ef898..0000000 --- a/source/checkman/check_radius +++ /dev/null @@ -1,45 +0,0 @@ -title: Dummy check man page - used as template for new check manuals -agents: linux, windows, aix, solaris, hpux, vms, freebsd, snmp -catalog: see modules/catalog.py for possible values -license: GPL -distribution: check_mk -description: - Describe here: (1) what the check actually does, (2) under which - circumstances it goes warning/critical, (3) which devices are supported - by the check, (4) if the check requires a separated plugin or - tool or separate configuration on the target host. - -item: - Describe the syntax and meaning of the check's item here. Provide all - information one needs if coding a manual check with {checks +=} in {main.mk}. - Give an example. If the check uses {None} as sole item, - then leave out this section. - -examples: - # Give examples for configuration in {main.mk} here. If the check has - # configuration variable, then give example for them here. - - # set default levels to 40 and 60 percent: - foo_default_values = (40, 60) - - # another configuration variable here: - inventory_foo_filter = [ "superfoo", "superfoo2" ] - -perfdata: - Describe precisely the number and meaning of performance variables - the check sends. If it outputs no performance data, then leave out this - section. - -inventory: - Describe how the inventory for the check works. Which items - will it find? Describe the influence of check specific - configuration parameters to the inventory. - -[parameters] -foofirst(int): describe the first parameter here (if parameters are grouped - as tuple) -fooother(string): describe another parameter here. - -[configuration] -foo_default_levels(int, int): Describe global configuration variable of - foo here. Important: also tell the user how they are preset. diff --git a/source/checks/check_radius b/source/checks/check_radius new file mode 100644 index 0000000..eaa316c --- /dev/null +++ b/source/checks/check_radius @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# License: GNU General Public License v2 +# +# +# Author: thl-cmk[at]outlook[dot]com +# URL : https://thl-cmk.hopto.org +# Date : 2024-04-21 +# File : checks/check_radius +# + + +def check_radius_arguments(params): + args = [] + + if server := params.get('server'): + args.extend(['-H', server]) + else: + args.append('-H $HOSTADDRESS$') + + if auth_port := params.get("auth_port"): + args.extend(['--authport', auth_port]) + + if secret := params.get("secret"): + args.extend(["--secret", passwordstore_get_cmdline("%s", secret)]) + + if user_name := params.get("user_name"): + args.extend([f'--username', user_name]) + + if user_password := params.get("user_password"): + args.extend(["--password", passwordstore_get_cmdline("%s", user_password)]) + + if timeout := params.get('timeout'): + args.extend(['-timeout', timeout]) + + return args + + +def _check_description(params): + if 'description' in params: + return f'RADIUS server {params["description"]}' + + return 'RADIUS server' + + +active_check_info['radius'] = { + 'command_line': 'check_radius $ARG1$', + 'argument_function': check_radius_arguments, + 'service_description': _check_description, + 'has_perfdata': True, +} diff --git a/source/gui/metrics/check_radius.py b/source/gui/metrics/check_radius.py new file mode 100644 index 0000000..5c8cff2 --- /dev/null +++ b/source/gui/metrics/check_radius.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# License: GNU General Public License v2 +# +# Author: thl-cmk[at]outlook[dot]com +# URL : https://thl-cmk.hopto.org +# Date : 2024-04-21 +# File : metrics/check_radius.py +# +# + +from cmk.gui.i18n import _ + +from cmk.gui.plugins.metrics.utils import ( + metric_info, + graph_info, + perfometer_info +) + +metric_info['radius_request_time'] = { + 'title': _('Request time'), + 'unit': 's', + 'color': '#9a52bf', +} + +graph_info['check_radius_time'] = { + 'title': _('RADIUS request time'), + 'metrics': [ + ('radius_request_time', 'area'), + ], + 'scalars': [ + ('radius_request_time:crit', _('Crit')), + ('radius_request_time:warn', _('Warn')), + ], +} + +perfometer_info.append({ + 'type': 'logarithmic', + 'metric': 'radius_request_time', + 'half_value': 1.0, + 'exponent': 10.0, +}) diff --git a/source/gui/wato/check_parameters/check_radius.py b/source/gui/wato/check_parameters/check_radius.py new file mode 100644 index 0000000..d38398d --- /dev/null +++ b/source/gui/wato/check_parameters/check_radius.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# License: GNU General Public License v2 +# +# +# Author: thl-cmk[at]outlook[dot]com +# URL : https://thl-cmk.hopto.org +# Date : 2022-10-04 +# File : wato/active_checks_radius.py +# +# 2024-01-01: modified for cmk 2.2.x + +from cmk.gui.i18n import _ +from cmk.gui.valuespec import ( + Dictionary, + Integer, + TextAscii, + Transform, +) + +from cmk.gui.plugins.wato.active_checks.common import RulespecGroupActiveChecks +from cmk.gui.plugins.wato.utils import HostRulespec, rulespec_registry, IndividualOrStoredPassword + + +def _valuespec_active_checks_radius(): + return Transform( + Dictionary( + title=_('Check RADIUS service'), + help=_(''), + elements=[ + ('description', + TextAscii( + title=_('Service description'), + help=_( + 'Must be unique for every host. The service description starts always with \"RADIUS server\".'), + size=50, + placeholder='Item name for the service', + allow_empty=False, + )), + ('server', + TextAscii( + title=_('Server IP-address or name'), + help=_( + 'Hostname or IP-address to monitor. Default is the host name/IP-Address of the monitored host.' + ), + size=50, + allow_empty=False, + )), + ('auth_port', + Integer( + title=_('RADIUS authentication port'), + help=_('The RADIUS port to use for authentication. Default is 1812.'), + # size=5, + default_value=1812, + minvalue=1, + maxvalue=65535, + )), + ('secret', + IndividualOrStoredPassword( + title=_('Server secret'), + help=_('The RADIUS secret.'), + # size=50, + allow_empty=False, + )), + ('timeout', + Integer( + title=_('Server timeout'), + help=_('The user password.'), + default_value=2, + minvalue=1, + maxvalue=30, + )), + ('user_name', + TextAscii( + title=_('User name'), + help=_('The user name to use in the request.'), + size=50, + placeholder='user name to use in the request', + allow_empty=False, + )), + ('user_password', + IndividualOrStoredPassword( + title=_('User password'), + help=_('The user password.'), + # size=50, + allow_empty=False + )), + ], + required_keys=['secret'] + ), + ) + + +rulespec_registry.register( + HostRulespec( + group=RulespecGroupActiveChecks, + match_type='all', + name='active_checks:radius', + valuespec=_valuespec_active_checks_radius, + ) +) diff --git a/source/lib/nagios/plugins/check_radius b/source/lib/nagios/plugins/check_radius new file mode 100755 index 0000000..4680980 --- /dev/null +++ b/source/lib/nagios/plugins/check_radius @@ -0,0 +1,142 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# License: GNU General Public License v2 +# +# +# Author: thl-cmk[at]outlook[dot]com +# URL : https://thl-cmk.hopto.org +# Date : 2024-04-21 +# File : active_checks_radius.py +# +# Active check to monitor radius servers. +# +# https://github.com/pyradius/pyrad +# +import socket + +from typing import Sequence +import sys +from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter, Namespace, ArgumentTypeError +from time import time_ns +from os import environ + +import cmk.utils.password_store + +no_radiuslib = False +try: + from pyrad.client import Client as rad_client + from pyrad.dictionary import Dictionary as rad_dictionary + import pyrad.packet +except ModuleNotFoundError: + no_radiuslib = True + + +def parse_arguments(argv: Sequence[str]) -> Namespace: + parser = ArgumentParser( + formatter_class=ArgumentDefaultsHelpFormatter, + epilog='' + ) + parser.add_argument( + '-H', '--host', required=True, + help='Host/IP-Address of RADIUS server to query (required)') + parser.add_argument( + '--secret', required=True, + help='secret RADIUS key') + parser.add_argument( + '--username', default='dummyuser', + help='user name to test with') + parser.add_argument( + '--password', default='dummyuser', + help='user password to test with') + parser.add_argument( + '--authport', type=int, default=1812, + help='RADIUS authentication port to use.') + parser.add_argument( + '--timeout', type=int, default=1, + help='RADIUS server timeout.') + + args = parser.parse_args(argv) + args.host = args.host.strip(' ') + return args + + +def main(args=None): + if args is None: + args = sys.argv[1:] # without the path/plugin itself + + args = parse_arguments(args) + + if no_radiuslib: + sys.stdout.write( + 'To use this check plugin you need to install the python pyrad lib in your CMK python environment.\n' + ) + sys.exit(3) + + omd_root = environ["OMD_ROOT"] + info_text = '' + long_output = '' + perf_data = '' + status = 0 + + rad_server = rad_client( + server=args.host, + authport=args.authport, + secret=args.secret.encode('utf-8'), + dict=rad_dictionary(f'{omd_root}/local/lib/nagios/plugins/dictionary'), + timeout=args.timeout, + ) + + rad_req = rad_server.CreateAuthPacket( + code=pyrad.packet.AccessRequest, + User_Name=args.username, + NAS_Identifier=args.host, + ) + rad_req["User-Password"] = rad_req.PwCrypt(args.password) + before_request_time = time_ns() + try: + response = rad_server.SendPacket(rad_req) + except pyrad.client.Timeout as e: + status = 2 + info_text = 'Radius request timeout' + long_output += f'\nRadius request timeout.\n{e}' + except socket.error as e: + status = 2 + info_text = 'Network error' + long_output += f'\nNetwork error\n{e}' + else: + request_time = (time_ns() - before_request_time) / 1000 / 1000 / 1000 # -> ns to seconds + match response.code: + case pyrad.packet.AccessAccept: + info_text += 'Response: access accept' + long_output += '\nResponse: access accept' + long_output += f'\nResponse code: {response.code}' + if response.has_key: + long_output += f'\nNumber of attributes in response: {len(response.keys())}' + long_output += f'\n\nResponse attributes:' + for key in response.keys(): + long_output += f'\n{key}: {response.get(key)}' + else: + long_output += f'\nNo attributes in response: {len(response.keys())}' + case pyrad.packet.AccessReject: + info_text += 'Response: access reject' + long_output += '\nResponse: access reject' + long_output += f'\nResponse code: {response.code}' + case _: + info_text += f'Response: code unknown' + long_output += f'\nResponse: code unknown' + long_output += f'\nResponse code: {response.code}' + status = 3 + + perf_data += f'radius_request_time={request_time}' + + info_text = info_text.strip(',').strip(' ') + sys.stdout.write(f'{info_text}\n{long_output} | {perf_data}\n') + + return status + + +if __name__ == '__main__': + cmk.utils.password_store.replace_passwords() + exitcode = main() + sys.exit(exitcode) diff --git a/source/lib/nagios/plugins/dictionary b/source/lib/nagios/plugins/dictionary new file mode 100644 index 0000000..30fb528 --- /dev/null +++ b/source/lib/nagios/plugins/dictionary @@ -0,0 +1,446 @@ +# +# Version $Id: dictionary,v 1.1.1.1 2002/10/11 12:25:39 wichert Exp $ +# +# for free radius dictionaries see: /usr/share/freeradius +# +# This file contains dictionary translations for parsing +# requests and generating responses. All transactions are +# composed of Attribute/Value Pairs. The value of each attribute +# is specified as one of 4 data types. Valid data types are: +# +# string - 0-253 octets +# ipaddr - 4 octets in network byte order +# integer - 32 bit value in big endian order (high byte first) +# date - 32 bit value in big endian order - seconds since +# 00:00:00 GMT, Jan. 1, 1970 +# +# FreeRADIUS includes extended data types which are not defined +# in RFC 2865 or RFC 2866. These data types are: +# +# abinary - Ascend's binary filter format. +# octets - raw octets, printed and input as hex strings. +# e.g.: 0x123456789abcdef +# +# +# Enumerated values are stored in the user file with dictionary +# VALUE translations for easy administration. +# +# Example: +# +# ATTRIBUTE VALUE +# --------------- ----- +# Framed-Protocol = PPP +# 7 = 1 (integer encoding) +# + +# +# Include compatibility dictionary for older users file. Move this +# directive to the end of the file if you want to see the old names +# in the logfiles too. +# +#$INCLUDE dictionary.compat # compability issues +#$INCLUDE dictionary.acc +#$INCLUDE dictionary.ascend +#$INCLUDE dictionary.bay +#$INCLUDE dictionary.cisco +#$INCLUDE dictionary.livingston +#$INCLUDE dictionary.microsoft +#$INCLUDE dictionary.quintum +#$INCLUDE dictionary.redback +#$INCLUDE dictionary.shasta +#$INCLUDE dictionary.shiva +#$INCLUDE dictionary.tunnel +#$INCLUDE dictionary.usr +#$INCLUDE dictionary.versanet +#$INCLUDE dictionary.erx +$INCLUDE dictionary.freeradius +#$INCLUDE dictionary.alcatel + +# +# Following are the proper new names. Use these. +# +ATTRIBUTE User-Name 1 string +ATTRIBUTE User-Password 2 string +ATTRIBUTE CHAP-Password 3 octets +ATTRIBUTE NAS-IP-Address 4 ipaddr +ATTRIBUTE NAS-Port 5 integer +ATTRIBUTE Service-Type 6 integer +ATTRIBUTE Framed-Protocol 7 integer +ATTRIBUTE Framed-IP-Address 8 ipaddr +ATTRIBUTE Framed-IP-Netmask 9 ipaddr +ATTRIBUTE Framed-Routing 10 integer +ATTRIBUTE Filter-Id 11 string +ATTRIBUTE Framed-MTU 12 integer +ATTRIBUTE Framed-Compression 13 integer +ATTRIBUTE Login-IP-Host 14 ipaddr +ATTRIBUTE Login-Service 15 integer +ATTRIBUTE Login-TCP-Port 16 integer +ATTRIBUTE Reply-Message 18 string +ATTRIBUTE Callback-Number 19 string +ATTRIBUTE Callback-Id 20 string +ATTRIBUTE Framed-Route 22 string +ATTRIBUTE Framed-IPX-Network 23 ipaddr +ATTRIBUTE State 24 octets +ATTRIBUTE Class 25 octets +ATTRIBUTE Vendor-Specific 26 octets +ATTRIBUTE Session-Timeout 27 integer +ATTRIBUTE Idle-Timeout 28 integer +ATTRIBUTE Termination-Action 29 integer +ATTRIBUTE Called-Station-Id 30 string +ATTRIBUTE Calling-Station-Id 31 string +ATTRIBUTE NAS-Identifier 32 string +ATTRIBUTE Proxy-State 33 octets +ATTRIBUTE Login-LAT-Service 34 string +ATTRIBUTE Login-LAT-Node 35 string +ATTRIBUTE Login-LAT-Group 36 octets +ATTRIBUTE Framed-AppleTalk-Link 37 integer +ATTRIBUTE Framed-AppleTalk-Network 38 integer +ATTRIBUTE Framed-AppleTalk-Zone 39 string + +ATTRIBUTE Acct-Status-Type 40 integer +ATTRIBUTE Acct-Delay-Time 41 integer +ATTRIBUTE Acct-Input-Octets 42 integer +ATTRIBUTE Acct-Output-Octets 43 integer +ATTRIBUTE Acct-Session-Id 44 string +ATTRIBUTE Acct-Authentic 45 integer +ATTRIBUTE Acct-Session-Time 46 integer +ATTRIBUTE Acct-Input-Packets 47 integer +ATTRIBUTE Acct-Output-Packets 48 integer +ATTRIBUTE Acct-Terminate-Cause 49 integer +ATTRIBUTE Acct-Multi-Session-Id 50 string +ATTRIBUTE Acct-Link-Count 51 integer +ATTRIBUTE Acct-Input-Gigawords 52 integer +ATTRIBUTE Acct-Output-Gigawords 53 integer +ATTRIBUTE Event-Timestamp 55 date + +ATTRIBUTE CHAP-Challenge 60 string +ATTRIBUTE NAS-Port-Type 61 integer +ATTRIBUTE Port-Limit 62 integer +ATTRIBUTE Login-LAT-Port 63 integer +ATTRIBUTE Tunnel-Type 64 integer +ATTRIBUTE Tunnel-Medium-Type 65 integer +ATTRIBUTE Tunnel-Client-Endpoint 66 string +ATTRIBUTE Tunnel-Server-Endpoint 67 string +ATTRIBUTE Acct-Tunnel-Connection 68 string +ATTRIBUTE Tunnel-Password 69 string + +ATTRIBUTE ARAP-Password 70 string +ATTRIBUTE ARAP-Features 71 string +ATTRIBUTE ARAP-Zone-Access 72 integer +ATTRIBUTE ARAP-Security 73 integer +ATTRIBUTE ARAP-Security-Data 74 string +ATTRIBUTE Password-Retry 75 integer +ATTRIBUTE Prompt 76 integer +ATTRIBUTE Connect-Info 77 string +ATTRIBUTE Configuration-Token 78 string +ATTRIBUTE EAP-Message 79 string +ATTRIBUTE Message-Authenticator 80 octets +ATTRIBUTE Tunnel-Private-Group-Id 81 string +ATTRIBUTE Tunnel-Assignment-Id 82 string +ATTRIBUTE Tunnel-Preference 83 integer +ATTRIBUTE ARAP-Challenge-Response 84 string # 10 octets +ATTRIBUTE Acct-Interim-Interval 85 integer +ATTRIBUTE NAS-Port-Id 87 string +ATTRIBUTE Framed-Pool 88 string +ATTRIBUTE NAS-IPv6-Address 95 octets # really IPv6 +ATTRIBUTE Framed-Interface-Id 96 octets # 8 octets +ATTRIBUTE Framed-IPv6-Prefix 97 ipv6prefix # stupid format +ATTRIBUTE Login-IPv6-Host 98 octets # really IPv6 +ATTRIBUTE Framed-IPv6-Route 99 string +ATTRIBUTE Framed-IPv6-Pool 100 string +ATTRIBUTE Delegated-IPv6-Prefix 123 ipv6prefix + + +ATTRIBUTE Digest-Response 206 string +ATTRIBUTE Digest-Attributes 207 octets # stupid format + +# +# Experimental Non Protocol Attributes used by Cistron-Radiusd +# + +# These attributes CAN go in the reply item list. +ATTRIBUTE Fall-Through 500 integer +ATTRIBUTE Exec-Program 502 string +ATTRIBUTE Exec-Program-Wait 503 string + +# These attributes CANNOT go in the reply item list. +ATTRIBUTE User-Category 1029 string +ATTRIBUTE Group-Name 1030 string +ATTRIBUTE Huntgroup-Name 1031 string +ATTRIBUTE Simultaneous-Use 1034 integer +ATTRIBUTE Strip-User-Name 1035 integer +ATTRIBUTE Hint 1040 string +ATTRIBUTE Pam-Auth 1041 string +ATTRIBUTE Login-Time 1042 string +ATTRIBUTE Stripped-User-Name 1043 string +ATTRIBUTE Current-Time 1044 string +ATTRIBUTE Realm 1045 string +ATTRIBUTE No-Such-Attribute 1046 string +ATTRIBUTE Packet-Type 1047 integer +ATTRIBUTE Proxy-To-Realm 1048 string +ATTRIBUTE Replicate-To-Realm 1049 string +ATTRIBUTE Acct-Session-Start-Time 1050 date +ATTRIBUTE Acct-Unique-Session-Id 1051 string +ATTRIBUTE Client-IP-Address 1052 ipaddr +ATTRIBUTE Ldap-UserDn 1053 string +ATTRIBUTE NS-MTA-MD5-Password 1054 string +ATTRIBUTE SQL-User-Name 1055 string +ATTRIBUTE LM-Password 1057 octets +ATTRIBUTE NT-Password 1058 octets +ATTRIBUTE SMB-Account-CTRL 1059 integer +ATTRIBUTE SMB-Account-CTRL-TEXT 1061 string +ATTRIBUTE User-Profile 1062 string +ATTRIBUTE Digest-Realm 1063 string +ATTRIBUTE Digest-Nonce 1064 string +ATTRIBUTE Digest-Method 1065 string +ATTRIBUTE Digest-URI 1066 string +ATTRIBUTE Digest-QOP 1067 string +ATTRIBUTE Digest-Algorithm 1068 string +ATTRIBUTE Digest-Body-Digest 1069 string +ATTRIBUTE Digest-CNonce 1070 string +ATTRIBUTE Digest-Nonce-Count 1071 string +ATTRIBUTE Digest-User-Name 1072 string +ATTRIBUTE Pool-Name 1073 string +ATTRIBUTE Ldap-Group 1074 string +ATTRIBUTE Module-Success-Message 1075 string +ATTRIBUTE Module-Failure-Message 1076 string +# X99-Fast 1077 integer + +# +# Non-Protocol Attributes +# These attributes are used internally by the server +# +ATTRIBUTE Auth-Type 1000 integer +ATTRIBUTE Menu 1001 string +ATTRIBUTE Termination-Menu 1002 string +ATTRIBUTE Prefix 1003 string +ATTRIBUTE Suffix 1004 string +ATTRIBUTE Group 1005 string +ATTRIBUTE Crypt-Password 1006 string +ATTRIBUTE Connect-Rate 1007 integer +ATTRIBUTE Add-Prefix 1008 string +ATTRIBUTE Add-Suffix 1009 string +ATTRIBUTE Expiration 1010 date +ATTRIBUTE Autz-Type 1011 integer + +# +# Integer Translations +# + +# User Types + +VALUE Service-Type Login-User 1 +VALUE Service-Type Framed-User 2 +VALUE Service-Type Callback-Login-User 3 +VALUE Service-Type Callback-Framed-User 4 +VALUE Service-Type Outbound-User 5 +VALUE Service-Type Administrative-User 6 +VALUE Service-Type NAS-Prompt-User 7 +VALUE Service-Type Authenticate-Only 8 +VALUE Service-Type Callback-NAS-Prompt 9 +VALUE Service-Type Call-Check 10 +VALUE Service-Type Callback-Administrative 11 + +# Framed Protocols + +VALUE Framed-Protocol PPP 1 +VALUE Framed-Protocol SLIP 2 +VALUE Framed-Protocol ARAP 3 +VALUE Framed-Protocol Gandalf-SLML 4 +VALUE Framed-Protocol Xylogics-IPX-SLIP 5 +VALUE Framed-Protocol X.75-Synchronous 6 + +# Framed Routing Values + +VALUE Framed-Routing None 0 +VALUE Framed-Routing Broadcast 1 +VALUE Framed-Routing Listen 2 +VALUE Framed-Routing Broadcast-Listen 3 + +# Framed Compression Types + +VALUE Framed-Compression None 0 +VALUE Framed-Compression Van-Jacobson-TCP-IP 1 +VALUE Framed-Compression IPX-Header-Compression 2 +VALUE Framed-Compression Stac-LZS 3 + +# Login Services + +VALUE Login-Service Telnet 0 +VALUE Login-Service Rlogin 1 +VALUE Login-Service TCP-Clear 2 +VALUE Login-Service PortMaster 3 +VALUE Login-Service LAT 4 +VALUE Login-Service X25-PAD 5 +VALUE Login-Service X25-T3POS 6 +VALUE Login-Service TCP-Clear-Quiet 8 + +# Login-TCP-Port (see /etc/services for more examples) + +VALUE Login-TCP-Port Telnet 23 +VALUE Login-TCP-Port Rlogin 513 +VALUE Login-TCP-Port Rsh 514 + +# Status Types + +VALUE Acct-Status-Type Start 1 +VALUE Acct-Status-Type Stop 2 +VALUE Acct-Status-Type Interim-Update 3 +VALUE Acct-Status-Type Alive 3 +VALUE Acct-Status-Type Accounting-On 7 +VALUE Acct-Status-Type Accounting-Off 8 +# RFC 2867 Additional Status-Type Values +VALUE Acct-Status-Type Tunnel-Start 9 +VALUE Acct-Status-Type Tunnel-Stop 10 +VALUE Acct-Status-Type Tunnel-Reject 11 +VALUE Acct-Status-Type Tunnel-Link-Start 12 +VALUE Acct-Status-Type Tunnel-Link-Stop 13 +VALUE Acct-Status-Type Tunnel-Link-Reject 14 + +# Authentication Types + +VALUE Acct-Authentic RADIUS 1 +VALUE Acct-Authentic Local 2 + +# Termination Options + +VALUE Termination-Action Default 0 +VALUE Termination-Action RADIUS-Request 1 + +# NAS Port Types + +VALUE NAS-Port-Type Async 0 +VALUE NAS-Port-Type Sync 1 +VALUE NAS-Port-Type ISDN 2 +VALUE NAS-Port-Type ISDN-V120 3 +VALUE NAS-Port-Type ISDN-V110 4 +VALUE NAS-Port-Type Virtual 5 +VALUE NAS-Port-Type PIAFS 6 +VALUE NAS-Port-Type HDLC-Clear-Channel 7 +VALUE NAS-Port-Type X.25 8 +VALUE NAS-Port-Type X.75 9 +VALUE NAS-Port-Type G.3-Fax 10 +VALUE NAS-Port-Type SDSL 11 +VALUE NAS-Port-Type ADSL-CAP 12 +VALUE NAS-Port-Type ADSL-DMT 13 +VALUE NAS-Port-Type IDSL 14 +VALUE NAS-Port-Type Ethernet 15 +VALUE NAS-Port-Type xDSL 16 +VALUE NAS-Port-Type Cable 17 +VALUE NAS-Port-Type Wireless-Other 18 +VALUE NAS-Port-Type Wireless-802.11 19 + +# Acct Terminate Causes, available in 3.3.2 and later + +VALUE Acct-Terminate-Cause User-Request 1 +VALUE Acct-Terminate-Cause Lost-Carrier 2 +VALUE Acct-Terminate-Cause Lost-Service 3 +VALUE Acct-Terminate-Cause Idle-Timeout 4 +VALUE Acct-Terminate-Cause Session-Timeout 5 +VALUE Acct-Terminate-Cause Admin-Reset 6 +VALUE Acct-Terminate-Cause Admin-Reboot 7 +VALUE Acct-Terminate-Cause Port-Error 8 +VALUE Acct-Terminate-Cause NAS-Error 9 +VALUE Acct-Terminate-Cause NAS-Request 10 +VALUE Acct-Terminate-Cause NAS-Reboot 11 +VALUE Acct-Terminate-Cause Port-Unneeded 12 +VALUE Acct-Terminate-Cause Port-Preempted 13 +VALUE Acct-Terminate-Cause Port-Suspended 14 +VALUE Acct-Terminate-Cause Service-Unavailable 15 +VALUE Acct-Terminate-Cause Callback 16 +VALUE Acct-Terminate-Cause User-Error 17 +VALUE Acct-Terminate-Cause Host-Request 18 + +#VALUE Tunnel-Type L2TP 3 +#VALUE Tunnel-Medium-Type IP 1 + +VALUE Prompt No-Echo 0 +VALUE Prompt Echo 1 + +# +# Non-Protocol Integer Translations +# + +VALUE Auth-Type Local 0 +VALUE Auth-Type System 1 +VALUE Auth-Type SecurID 2 +VALUE Auth-Type Crypt-Local 3 +VALUE Auth-Type Reject 4 +VALUE Auth-Type ActivCard 5 +VALUE Auth-Type EAP 6 +VALUE Auth-Type ARAP 7 + +# +# Cistron extensions +# +VALUE Auth-Type Ldap 252 +VALUE Auth-Type Pam 253 +VALUE Auth-Type Accept 254 + +VALUE Auth-Type PAP 1024 +VALUE Auth-Type CHAP 1025 +VALUE Auth-Type LDAP 1026 +VALUE Auth-Type PAM 1027 +VALUE Auth-Type MS-CHAP 1028 +VALUE Auth-Type Kerberos 1029 +VALUE Auth-Type CRAM 1030 +VALUE Auth-Type NS-MTA-MD5 1031 +VALUE Auth-Type CRAM 1032 +VALUE Auth-Type SMB 1033 + +# +# Authorization type, too. +# +VALUE Autz-Type Local 0 + +# +# Experimental Non-Protocol Integer Translations for Cistron-Radiusd +# +VALUE Fall-Through No 0 +VALUE Fall-Through Yes 1 + +VALUE Packet-Type Access-Request 1 +VALUE Packet-Type Access-Accept 2 +VALUE Packet-Type Access-Reject 3 +VALUE Packet-Type Accounting-Request 4 +VALUE Packet-Type Accounting-Response 5 +VALUE Packet-Type Accounting-Status 6 +VALUE Packet-Type Password-Request 7 +VALUE Packet-Type Password-Accept 8 +VALUE Packet-Type Password-Reject 9 +VALUE Packet-Type Accounting-Message 10 +VALUE Packet-Type Access-Challenge 11 +VALUE Packet-Type Status-Server 12 +VALUE Packet-Type Status-Client 13 + +# Tunnel Type +VALUE Tunnel-Type PPTP 1 +VALUE Tunnel-Type L2F 2 +VALUE Tunnel-Type L2TP 3 +VALUE Tunnel-Type ATMP 4 +VALUE Tunnel-Type VTP 5 +VALUE Tunnel-Type AH 6 +VALUE Tunnel-Type IP 7 +VALUE Tunnel-Type MIN-IP 8 +VALUE Tunnel-Type ESP 9 +VALUE Tunnel-Type GRE 10 +VALUE Tunnel-Type DVS 11 +VALUE Tunnel-Type IP-in-IP 12 + +# Tunnel Medium Type +VALUE Tunnel-Medium-Type IP 1 +VALUE Tunnel-Medium-Type IPv4 1 +VALUE Tunnel-Medium-Type IPv6 2 +VALUE Tunnel-Medium-Type NSAP 3 +VALUE Tunnel-Medium-Type HDLC 4 +VALUE Tunnel-Medium-Type BBN-1822 5 +VALUE Tunnel-Medium-Type IEEE-802 6 +VALUE Tunnel-Medium-Type E.163 7 +VALUE Tunnel-Medium-Type E.164 8 +VALUE Tunnel-Medium-Type F.69 9 +VALUE Tunnel-Medium-Type X.121 10 +VALUE Tunnel-Medium-Type IPX 11 +VALUE Tunnel-Medium-Type Appletalk 12 +VALUE Tunnel-Medium-Type DecNet-IV 13 +VALUE Tunnel-Medium-Type Banyan-Vines 14 +VALUE Tunnel-Medium-Type E.164-NSAP 15 diff --git a/source/lib/nagios/plugins/dictionary.freeradius b/source/lib/nagios/plugins/dictionary.freeradius new file mode 100644 index 0000000..dc9fb22 --- /dev/null +++ b/source/lib/nagios/plugins/dictionary.freeradius @@ -0,0 +1,91 @@ +# -*- text -*- +# Copyright (C) 2015 The FreeRADIUS Server project and contributors +# +# The FreeRADIUS Vendor-Specific dictionary. +# +# Version: $Id: ea468da88509aeff96b6f0d38ebc97411b9775b3 $ +# +# For a complete list of Private Enterprise Codes, see: +# +# http://www.isi.edu/in-notes/iana/assignments/enterprise-numbers +# + +VENDOR FreeRADIUS 11344 + +BEGIN-VENDOR FreeRADIUS + +# +# This attribute is really a bitmask. +# +ATTRIBUTE FreeRADIUS-Statistics-Type 127 integer + +VALUE FreeRADIUS-Statistics-Type None 0 +VALUE FreeRADIUS-Statistics-Type Authentication 1 +VALUE FreeRADIUS-Statistics-Type Accounting 2 +VALUE FreeRADIUS-Statistics-Type Proxy-Authentication 4 +VALUE FreeRADIUS-Statistics-Type Proxy-Accounting 8 +VALUE FreeRADIUS-Statistics-Type Internal 0x10 +VALUE FreeRADIUS-Statistics-Type Client 0x20 +VALUE FreeRADIUS-Statistics-Type Server 0x40 +VALUE FreeRADIUS-Statistics-Type Home-Server 0x80 + +VALUE FreeRADIUS-Statistics-Type Auth-Acct 0x03 +VALUE FreeRADIUS-Statistics-Type Proxy-Auth-Acct 0x0c + +VALUE FreeRADIUS-Statistics-Type All 0x1f + +# +# FreeRADIUS statistic result attributes +# +ATTRIBUTE FreeRADIUS-Total-Access-Requests 128 integer +ATTRIBUTE FreeRADIUS-Total-Access-Accepts 129 integer +ATTRIBUTE FreeRADIUS-Total-Access-Rejects 130 integer +ATTRIBUTE FreeRADIUS-Total-Access-Challenges 131 integer +ATTRIBUTE FreeRADIUS-Total-Auth-Responses 132 integer +ATTRIBUTE FreeRADIUS-Total-Auth-Duplicate-Requests 133 integer +ATTRIBUTE FreeRADIUS-Total-Auth-Malformed-Requests 134 integer +ATTRIBUTE FreeRADIUS-Total-Auth-Invalid-Requests 135 integer +ATTRIBUTE FreeRADIUS-Total-Auth-Dropped-Requests 136 integer +ATTRIBUTE FreeRADIUS-Total-Auth-Unknown-Types 137 integer + +ATTRIBUTE FreeRADIUS-Total-Proxy-Access-Requests 138 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Access-Accepts 139 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Access-Rejects 140 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Access-Challenges 141 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Responses 142 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Duplicate-Requests 143 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Malformed-Requests 144 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Invalid-Requests 145 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Dropped-Requests 146 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Auth-Unknown-Types 147 integer + +ATTRIBUTE FreeRADIUS-Total-Accounting-Requests 148 integer +ATTRIBUTE FreeRADIUS-Total-Accounting-Responses 149 integer +ATTRIBUTE FreeRADIUS-Total-Acct-Duplicate-Requests 150 integer +ATTRIBUTE FreeRADIUS-Total-Acct-Malformed-Requests 151 integer +ATTRIBUTE FreeRADIUS-Total-Acct-Invalid-Requests 152 integer +ATTRIBUTE FreeRADIUS-Total-Acct-Dropped-Requests 153 integer +ATTRIBUTE FreeRADIUS-Total-Acct-Unknown-Types 154 integer + +ATTRIBUTE FreeRADIUS-Total-Proxy-Accounting-Requests 155 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Accounting-Responses 156 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Acct-Duplicate-Requests 157 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Acct-Malformed-Requests 158 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Acct-Invalid-Requests 159 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Acct-Dropped-Requests 160 integer +ATTRIBUTE FreeRADIUS-Total-Proxy-Acct-Unknown-Types 161 integer + +ATTRIBUTE FreeRADIUS-Queue-Len-Internal 162 integer +ATTRIBUTE FreeRADIUS-Queue-Len-Proxy 163 integer +ATTRIBUTE FreeRADIUS-Queue-Len-Auth 164 integer +ATTRIBUTE FreeRADIUS-Queue-Len-Acct 165 integer +ATTRIBUTE FreeRADIUS-Queue-Len-Detail 166 integer + +ATTRIBUTE FreeRADIUS-Stats-Start-Time 176 date +ATTRIBUTE FreeRADIUS-Stats-HUP-Time 177 date + +ATTRIBUTE FreeRADIUS-Queue-PPS-In 181 integer +ATTRIBUTE FreeRADIUS-Queue-PPS-In 182 integer + + +END-VENDOR FreeRADIUS \ No newline at end of file diff --git a/source/packages/check_radius b/source/packages/check_radius new file mode 100644 index 0000000..b14b394 --- /dev/null +++ b/source/packages/check_radius @@ -0,0 +1,15 @@ +{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', + 'description': 'active RADIUS check\n', + 'download_url': 'https://thl-cmk.hopto.org', + 'files': {'checks': ['check_radius'], + 'gui': ['metrics/check_radius.py', + 'wato/check_parameters/check_radius.py'], + 'lib': ['nagios/plugins/check_radius', + 'nagios/plugins/dictionary', + 'nagios/plugins/dictionary.freeradius']}, + 'name': 'check_radius', + 'title': 'Check RADIUS', + 'version': '0.0.1-20240421', + 'version.min_required': '2.2.0b1', + 'version.packaged': '2.2.0p24', + 'version.usable_until': None} -- GitLab