From 814e2395a7b3b4ecacfcbf0c13940571f942884a Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Tue, 21 May 2024 22:50:14 +0200
Subject: [PATCH] update project

---
 README.md                            |   2 +-
 mkp/unbound-1.2.3-20240521.mkp       | Bin 0 -> 6171 bytes
 source/agent_based/unbound_status.py | 136 +++++++++++++++++++++++++++
 source/agents/plugins/unbound        |   3 +
 source/packages/unbound              |   4 +-
 5 files changed, 142 insertions(+), 3 deletions(-)
 create mode 100644 mkp/unbound-1.2.3-20240521.mkp
 create mode 100644 source/agent_based/unbound_status.py

diff --git a/README.md b/README.md
index ebc2514..3b26bb4 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[PACKAGE]: ../../raw/master/mkp/unbound-1.2.2-20240521.mkp "unbound-1.2.2-20240521.mkp"
+[PACKAGE]: ../../raw/master/mkp/unbound-1.2.3-20240521.mkp "unbound-1.2.3-20240521.mkp"
 # unbound
 
 This agent plugin cheks the state of the unbound dns daemon. For more information about unbound see: https://nlnetlabs.nl/projects/unbound/about/
diff --git a/mkp/unbound-1.2.3-20240521.mkp b/mkp/unbound-1.2.3-20240521.mkp
new file mode 100644
index 0000000000000000000000000000000000000000..f3c0581a6f57039e9de08884ec61a10714828a09
GIT binary patch
literal 6171
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
H=xF}~N8}`d

literal 0
HcmV?d00001

diff --git a/source/agent_based/unbound_status.py b/source/agent_based/unbound_status.py
new file mode 100644
index 0000000..7ced922
--- /dev/null
+++ b/source/agent_based/unbound_status.py
@@ -0,0 +1,136 @@
+#!/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-05-21
+# File  : unbound_status.py
+
+from dataclasses import dataclass
+
+from typing import (
+    Any,
+    Mapping,
+    Sequence
+)
+
+from cmk.utils import debug
+from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
+    CheckResult,
+    DiscoveryResult,
+    StringTable,
+)
+
+from cmk.base.plugins.agent_based.agent_based_api.v1 import (
+    Service,
+    check_levels,
+    register,
+    render,
+    Result,
+    State,
+)
+
+
+@dataclass(frozen=True)
+class UnboundStatus:
+    version: str
+    verbosity: int
+    threads: int
+    modules: Sequence[str]
+    uptime: int
+    options: Sequence[str]
+    status: str
+    pid: int
+
+    @classmethod
+    def parse(cls, string_table: StringTable):
+        for line in string_table:
+            key, value = line[0].split(' ', 1)
+            key = key.rstrip(':')
+            match key:
+                case 'version':
+                    version = str(value)
+                case 'verbosity':
+                    verbosity = int(value)
+                case 'threads':
+                    threads = int(value)
+                case 'modules':
+                    # 3 [ subnet validator iterator ]
+                    modules = value.split(' [ ')[-1].strip(']').strip(' ').split(' ')
+                case 'uptime':
+                    # 577 seconds
+                    uptime = int(value.split(' ')[0])
+                case 'options':
+                    # reuseport control(ssl)
+                    options = value.split(' ')
+                case 'unbound':
+                    # (pid 520) is running...
+                    pid = int(value.split(') ')[0].replace('(pid ', ''))
+                    status = value.split(') ', -1)[-1].strip('.')
+                case _:
+                    pass
+
+        try:
+            return cls(
+                version=version,
+                verbosity=verbosity,
+                threads=threads,
+                modules=modules,
+                uptime=uptime,
+                options=options,
+                pid=pid,
+                status=status,
+            )
+        except NameError as e:
+            if debug.enabled:
+                print(f'name error {e}')
+            return
+
+
+def parse_unbound_status(string_table: StringTable) -> UnboundStatus | None:
+    return UnboundStatus.parse(string_table)
+
+
+register.agent_section(
+    name="unbound_status",
+    parse_function=parse_unbound_status,
+)
+
+
+def discover_unbound_status(section: UnboundStatus) -> DiscoveryResult:
+    yield Service()
+
+
+# UnboundStatus(
+#     version='1.13.1',
+#     verbosity=0,
+#     threads=1,
+#     modules=['subnet', 'validator', 'iterator'],
+#     uptime=1759,
+#     options=['reuseport', 'control(ssl)'],
+#     status='(pid 520) is running',
+#     pid=520
+# )
+def check_unbound_status(params: Mapping[str, Any], section: UnboundStatus, ) -> CheckResult:
+    yield Result(state=State.OK, summary=f'Status: {section.status}')
+    yield from check_levels(
+        value=section.uptime,
+        label='Uptime',
+        metric_name='uptime',
+        render_func=render.timespan
+    )
+    yield Result(state=State.OK, summary=f'Version: {section.version}')
+
+
+register.check_plugin(
+    name="unbound_status",
+    service_name="Unbound",
+    discovery_function=discover_unbound_status,
+    check_function=check_unbound_status,
+    check_default_parameters={},
+    check_ruleset_name="unbound_status",
+)
+
+
diff --git a/source/agents/plugins/unbound b/source/agents/plugins/unbound
index 0d77bf1..badb21e 100755
--- a/source/agents/plugins/unbound
+++ b/source/agents/plugins/unbound
@@ -13,4 +13,7 @@ if [ -f "$(which unbound-control)" ]; then
   echo '<<<unbound:sep(61)>>>'
   unbound-control stats_noreset -c $UNBOUND_CFG
   echo '<<<>>>'
+  echo '<<<unbound_status:sep(0)>>>'
+  unbound-control status -c $UNBOUND_CFG
+  echo '<<<>>>'
 fi
diff --git a/source/packages/unbound b/source/packages/unbound
index 087be7f..457cef7 100644
--- a/source/packages/unbound
+++ b/source/packages/unbound
@@ -7,7 +7,7 @@
                 '  server:\n'
                 '      extended-statistics: yes\n',
  'download_url': 'https://github.com/PLUTEX/checkmk-unbound/',
- 'files': {'agent_based': ['unbound.py'],
+ 'files': {'agent_based': ['unbound.py', 'unbound_status.py'],
            'agents': ['plugins/unbound'],
            'gui': ['metrics/unbound.py',
                    'wato/check_parameters/unbound.py',
@@ -15,7 +15,7 @@
            'lib': ['python3/cmk/base/cee/plugins/bakery/unbound.py']},
  'name': 'unbound',
  'title': 'Unbound',
- 'version': '1.2.2-20240521',
+ 'version': '1.2.3-20240521',
  'version.min_required': '2.2.0b1',
  'version.packaged': '2.2.0p24',
  'version.usable_until': None}
-- 
GitLab