From b8069d08a3d3a1ad930634264476a8ff837e9253 Mon Sep 17 00:00:00 2001 From: Michael Medin Date: Fri, 15 May 2026 14:10:08 +0200 Subject: [PATCH 1/5] Fixed typo --- docs/docs/setup/securing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/setup/securing.md b/docs/docs/setup/securing.md index 212cd7c75..8ef8f6437 100644 --- a/docs/docs/setup/securing.md +++ b/docs/docs/setup/securing.md @@ -70,7 +70,7 @@ token = $CRED$ After editing, apply with: ```commandline -$ nscp settings --update +$ nscp service --restart ``` If you want to verify a target before relying on it, submit a synthetic passive result with: @@ -221,7 +221,7 @@ use credential manager = true And then save the config. ```commandline -nscp settings --update +nscp service --restart ``` Now here is the first catch, credential manager is per account so likely you are not running NSClient++ as the same user From a93beb4c53cce769aa9d3aad3e6741ff660d8d23 Mon Sep 17 00:00:00 2001 From: Michael Medin Date: Fri, 15 May 2026 14:10:20 +0200 Subject: [PATCH 2/5] Exploring better hand protection for msi test --- tests/msi/helpers.py | 76 +++++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/tests/msi/helpers.py b/tests/msi/helpers.py index 4f790f6e2..994b3a58b 100644 --- a/tests/msi/helpers.py +++ b/tests/msi/helpers.py @@ -1,5 +1,5 @@ from difflib import unified_diff -from subprocess import run, CalledProcessError, CREATE_NEW_PROCESS_GROUP +from subprocess import Popen, CalledProcessError, TimeoutExpired, PIPE from os import path, makedirs from shutil import rmtree from configparser import ConfigParser @@ -7,40 +7,58 @@ from winreg import HKEY_LOCAL_MACHINE, OpenKey, DeleteKey, KEY_ALL_ACCESS, EnumKey -def run_with_timeout(command): +def run_with_timeout(command, timeout=120): """ - Executes a command using subprocess, preventing hangs by handling stdout and stderr and timeout. + Executes a command using subprocess, preventing hangs by enforcing a real timeout. + + On Windows, subprocess.run(..., timeout=...) with shell=True + capture_output + leaves the grandchild (e.g. msiexec) alive on timeout and then blocks in + communicate() waiting for its pipes to close — effectively turning the + "timeout" into an infinite wait when msiexec is wedged on the _MSIExecute + mutex. We avoid this by using Popen without a shell and killing the whole + process tree via taskkill /T on timeout. """ print(f" .. Executing: {' '.join(command)}", flush=True) + proc = Popen( + command, + stdout=PIPE, + stderr=PIPE, + text=True, + encoding='utf-8', + errors='ignore', + ) try: - result = run( - command, - shell=True, - check=True, - capture_output=True, - creationflags=CREATE_NEW_PROCESS_GROUP, - text=True, - encoding='utf-8', - errors='ignore', - timeout=120 - ) - if result.stdout: - print(f" .. STDOUT: {result.stdout.strip()}", flush=True) - if result.stderr: - print(f" .. STDERR: {result.stderr.strip()}", flush=True) - - return result.returncode - - except CalledProcessError as e: - print(f"! Command failed with exit code {e.returncode}", flush=True) - if e.stdout: - print(f"! STDOUT: {e.stdout.strip()}", flush=True) - if e.stderr: - print(f"! STDERR: {e.stderr.strip()}", flush=True) - if e.returncode == 1605: - return e.returncode + stdout, stderr = proc.communicate(timeout=timeout) + except TimeoutExpired: + print(f"! Command timed out after {timeout}s; killing process tree (pid={proc.pid}).", flush=True) + try: + Popen(["taskkill", "/F", "/T", "/PID", str(proc.pid)]).wait(timeout=30) + except Exception as kill_err: + print(f"! taskkill failed: {kill_err}", flush=True) + proc.kill() + try: + stdout, stderr = proc.communicate(timeout=30) + except TimeoutExpired: + stdout, stderr = "", "" + if stdout: + print(f"! STDOUT (partial): {stdout.strip()}", flush=True) + if stderr: + print(f"! STDERR (partial): {stderr.strip()}", flush=True) raise + if stdout: + print(f" .. STDOUT: {stdout.strip()}", flush=True) + if stderr: + print(f" .. STDERR: {stderr.strip()}", flush=True) + + rc = proc.returncode + if rc != 0: + # Preserve prior semantics: 1605 (no installation found) is not an error. + if rc == 1605: + return rc + raise CalledProcessError(rc, command, output=stdout, stderr=stderr) + return rc + def delete_registry_tree(root, subkey): try: From 3ff1fa4bc4f1d81118b15f554a7eaeb454ebc545 Mon Sep 17 00:00:00 2001 From: Michael Medin Date: Fri, 15 May 2026 14:36:16 +0200 Subject: [PATCH 3/5] Update README.md to enhance documentation structure and content --- README.md | 212 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 168 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 73a59960d..8c1ee1ca5 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,146 @@ -# NSClient++ (nscp) +# NSClient++ -[![Build release](https://github.com/mickem/nscp/actions/workflows/build-main.yml/badge.svg)](https://github.com/mickem/nscp/actions/workflows/build-main.yml) +[![Documentation](https://img.shields.io/badge/docs-docs.nsclient.org-blue)](https://docs.nsclient.org) +[![Latest release](https://img.shields.io/github/v/release/mickem/nscp?include_prereleases&label=release)](https://github.com/mickem/nscp/releases) +[![License](https://img.shields.io/badge/license-GPLv2-green.svg)](COPYING) +[![Platforms](https://img.shields.io/badge/platforms-Windows%20%7C%20Linux-lightgrey)](#supported-platforms) +> A simple, powerful, and secure monitoring agent for Windows and Linux. -NSClient++ (nscp) aims to be a simple yet powerful and secure monitoring daemon. -It was built for Nagios/Icinga, but nothing in the daemon is Nagios/Icinga specific and it can be used in many other scenarios where you want to receive/distribute check metrics. +NSClient++ (`nsclient`) is the monitoring agent that runs on the machines you want +to monitor. It exposes the system to your monitoring server (Nagios, Icinga, +Naemon, Op5 Monitor, Checkmk, Prometheus, Zabbix-via-NRPE, …) over whichever +protocol that server speaks. It can also push results, expose a REST API, +scrape Windows performance counters, run external scripts, and be extended +with Lua, Python, or native plugins. -The daemon has 3 main functions: +- **Website:** +- **Documentation:** +- **Issues / discussions:** -* Allow a remote machine (monitoring server) to request commands to be run on this machine (the monitored machine) which return the status of the machine. -* Submit the same results to a remote (monitoring server). -* Take action and perform tasks. +--- -NSClient++ can be found at: http://nsclient.org +## Table of contents -Documentation can be found at: http://docs.nsclient.org +- [Quick start](#quick-start) +- [What it does](#what-it-does) +- [Supported protocols](#supported-protocols) +- [Common monitoring scenarios](#common-monitoring-scenarios) +- [Extending NSClient++](#extending-nsclient) +- [Supported platforms](#supported-platforms) +- [Which package to download](#which-package-to-download) +- [Building from source](#building-from-source) +- [Documentation map](#documentation-map) +- [Contributing](#contributing) +- [License](#license) -## Extending NSClient++ +--- + +## Quick start + +The fastest path from zero to a working check is the +**[Quick Start guide](https://docs.nsclient.org/quick-start/)** — it gets you +installed and running your first check in about 10 minutes. + +For more depth: + +- [Installing NSClient++](https://docs.nsclient.org/setup/installing/) — interactive MSI walkthrough, silent install, MSI properties, remote config. +- [Web interface](https://docs.nsclient.org/setup/web-interface/) — manage and query the agent from a browser. +- [Securing NSClient++](https://docs.nsclient.org/setup/securing/) — TLS, two-way certificate authentication, per-protocol hardening. +- [How it works (concepts)](https://docs.nsclient.org/concepts/) — modules, commands, the filter/threshold engine shared by every check. +- [FAQ](https://docs.nsclient.org/faq/) — timeouts, allowed-hosts, NRPE insecure mode, performance counter pitfalls, escaping. + +--- + +## What it does + +NSClient++ has three core jobs: + +1. **Answer queries** — let a monitoring server ask "is this machine healthy?" and return a Nagios-style status + perfdata. +2. **Submit results** — push the same kind of results to a monitoring server on a schedule. +3. **Act on events** — run actions (scripts, custom modules, REST calls) when something changes. + +Every check shares the same filter/threshold/perf-config engine, so the same +expressions work across CPU, disk, services, event logs, counters, and custom +scripts. See [Checks in depth](https://docs.nsclient.org/concepts/checks/). -NSClient++ is designed to be open ended and allow you to customize it in any way you design thus extensibility is a core feature. +--- - * ExternalScripts responds to queries and are executed by the operating system and the results are returned as-is. - This is generally the simplest way to extend NSClient++ as you can utilize whatever infrastructure or skill set you already have. - * LuaScripts are internal scripts which runs inside NSClient++ and performs various tasks and/or responds to queries. - This is the best option if you want to allow the script to run on any platform with as little infrastructure as possible. - * PythonScripts are internal scripts which runs inside NSClient++ and performs various tasks and/or responds to queries. - Python is an easy and powerful language but it requires you to also install python which is often not possible on server hardware. - * .Net modules similar to Native modules below but written on the dot-net platform. - This allows you to write components on top of the large dot-net ecosystem. - * Modules are native plugins which can extend NSClient++ in pretty much any way possible. - This is probably the most complicated way but gives you the most power and control. +## Supported protocols -## Talking to NSClient++ +NSClient++ deliberately speaks many protocols so it can plug into whatever +monitoring stack you already have. -Since NSClient++ is meaningless by itself it also supports a lot of protocols to allow it to be used by a lot of monitoring solutions. +| Protocol | Direction | Use it for | Guide | +|------------------|------------------|-------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| +| **NRPE** | Active (pull) | Nagios / Icinga / Naemon polling the agent — the most widely supported pattern. | [Active monitoring with NRPE](https://docs.nsclient.org/scenarios/nrpe/) | +| **NSCA** | Passive (push) | Legacy Nagios passive submissions. | [Passive monitoring (NSCA/NRDP)](https://docs.nsclient.org/scenarios/passive-monitoring-nsca/) | +| **NSCA-NG** | Passive (push) | TLS-PSK successor to NSCA — modern crypto, same passive pattern. | [Passive monitoring (NSCA-NG)](https://docs.nsclient.org/scenarios/passive-monitoring-nsca-ng/) | +| **NRDP** | Passive (push) | HTTP-based modern replacement for NSCA. | [NRDP (in the NSCA scenario)](https://docs.nsclient.org/scenarios/passive-monitoring-nsca/#using-nrdp-instead-of-nsca) | +| **Icinga 2 API** | Passive (push) | Submit scheduled check results directly to the Icinga 2 REST API. | [Passive monitoring (Icinga 2)](https://docs.nsclient.org/scenarios/passive-monitoring-icinga/) | +| **Checkmk** | Active (pull) | Serve a Checkmk-compatible agent dump on TCP/6556. | [Checkmk agent integration](https://docs.nsclient.org/scenarios/check-mk/) | +| **Prometheus** | Active (scrape) | Expose OpenMetrics on `/api/v2/openmetrics` for Prometheus to scrape. | [Prometheus scraping](https://docs.nsclient.org/scenarios/prometheus/) | +| **Graphite** | Passive (push) | Stream performance data to a Graphite / Carbon backend for graphing. | [`GraphiteClient` reference](https://docs.nsclient.org/reference/client/GraphiteClient/) | +| **Syslog** | Passive (push) | Forward results as syslog records. | [`SyslogClient` reference](https://docs.nsclient.org/reference/client/SyslogClient/) | +| **SMTP** | Passive (push) | Email notifications from check results. | [`SMTPClient` reference](https://docs.nsclient.org/reference/client/SMTPClient/) | +| **REST API** | Active (pull) | Custom integrations, scripts, dashboards, and the built-in web UI. | [REST API reference](https://docs.nsclient.org/api/rest/) | - * NRPE (Nagios Remote plugin Executor) is a Nagios centric protocol to collect remote metrics. - * NSCA (Nagios Service Check Acceptor) is a Nagios centric protocol for submitting results. - * NSCP is the native NSClient++ protocol (still under development) - * dNSCP is a high performance distributed version of NSCP for high volume traffic. - * NRDP is a replacement for NSCA. - * check_mk is a protocol utilized by the check_mk monitoring system. - * Syslog is a protocol primarily designed for submitting log records. - * Graphite allows you do real-time graphing. - * SMTP is more of a toy currently. +--- -## Supported OS/Platform +## Common monitoring scenarios -NSClient++ should run on the following operating systems: - * Windows: In theory from Windows XP with lots of service back (verified Windows 2008 R2 and later) - * Linux: Debian, Centos and Ubuntu (and possibly others as well) +End-to-end guides — each one has the minimal config, the command to run, and +example output. Full list: [docs.nsclient.org/scenarios](https://docs.nsclient.org/scenarios/). + +**System health** + +- [Windows server health](https://docs.nsclient.org/scenarios/windows-server-health/) — CPU, memory, disk, uptime as a baseline +- [Disk space alerting](https://docs.nsclient.org/scenarios/disk-space/) +- [Service & process monitoring](https://docs.nsclient.org/scenarios/service-monitoring/) +- [Event log monitoring](https://docs.nsclient.org/scenarios/event-log/) +- [Performance counter (PDH) monitoring](https://docs.nsclient.org/scenarios/counters/) + +**Network** + +- [Network checks](https://docs.nsclient.org/scenarios/network-checks/) — ping, TCP port, HTTP, DNS + +**Extensibility** + +- [External scripts](https://docs.nsclient.org/scenarios/external-scripts/) — wrap PowerShell, batch, or VBScript checks + +--- + +## Extending NSClient++ + +NSClient++ is designed to be open-ended. Pick the extension model that fits +your environment: + +| Option | Best for | +|---------------------|--------------------------------------------------------------------------------------------------------------------------| +| **ExternalScripts** | Reuse PowerShell, batch, shell, or any existing tooling. Simplest path. [Guide](https://docs.nsclient.org/scenarios/external-scripts/) | +| **LuaScripts** | In-process scripts with no extra runtime to install — runs anywhere NSClient++ does. | +| **PythonScripts** | Full Python inside the agent; great power, but you need Python installed on the host. [Guide](https://docs.nsclient.org/extending/python/) | +| **Native modules** | C++ plugins using the [plugin API](https://docs.nsclient.org/extending/plugin-api/) — maximum control, maximum effort. | +| **Zip modules** | Bundle scripts + config as a redistributable add-on. [Guide](https://docs.nsclient.org/extending/zip-modules/) | + +See the [Extending NSClient++](https://docs.nsclient.org/extending/) section +for the full picture. + +--- + +## Supported platforms + +- **Windows**: Windows 10 / 11 and Windows Server 2016 / 2019 / 2022 / 2025 + on x64, x86, and ARM64. A legacy build covers Windows XP / Server 2003 + through Server 2012 R2. +- **Linux**: Ubuntu 24.04 LTS and Rocky / RHEL / AlmaLinux 9 and 10 on x86_64 + and aarch64. Other glibc-compatible distributions usually work too. Some + modules are Windows-only (event log, PDH, WMI, service control). ### Which package to download -The following packages are produced by the official build pipelines. Pick the one that matches your operating system and architecture: +The following packages are produced by the official build pipelines. Pick the +one that matches your operating system and architecture: | Operating system | Version | Architecture | Package / artifact name | Notes | |--------------------------------|---------------------------------------------------|------------------|--------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------| @@ -68,15 +155,52 @@ The following packages are produced by the official build pipelines. Pick the on | Rocky Linux / RHEL / AlmaLinux | 10 | x64 (x86_64) | `NSCP--rocky-10-x86_64.rpm` | Compatible with RHEL 10 and other RHEL 10 rebuilds. | | Rocky Linux / RHEL / AlmaLinux | 10 | ARM64 (aarch64) | `NSCP--rocky-10-aarch64.rpm` | 64-bit ARM build for RHEL 10-family distributions. | -In addition, a stand-alone `check_nsclient` binary is published alongside each Linux package for use as a Nagios/Icinga check plugin. +In addition, a stand-alone `check_nsclient` binary is published alongside each +Linux package for use as a Nagios/Icinga check plugin. + +> On unsupported distributions you can build from source — see [build.md](build.md). + +--- + +## Building from source -> Note: On unsupported distributions you can build from source — see [build.md](build.md). +NSClient++ is built with CMake. On Windows it uses Visual Studio 2022; on +Linux it uses GCC or Clang. See [build.md](build.md) for the full step-by-step +build instructions, dependencies, and tips. -## Building NSClient++ +--- -NSClient++ is built using CMake and Visual Studio 2022. -You can find detailed instructions for building locally in the [build.md](build.md) file. +## Documentation map + +The [full documentation](https://docs.nsclient.org) is organised as: + +- **[Quick Start](https://docs.nsclient.org/quick-start/)** — your first 10 minutes +- **[Setup](https://docs.nsclient.org/setup/installing/)** — installing, web UI, hardening +- **[Concepts](https://docs.nsclient.org/concepts/)** — how modules, commands, checks, permissions, and settings fit together +- **[Scenarios](https://docs.nsclient.org/scenarios/)** — end-to-end recipes +- **[Reference](https://docs.nsclient.org/reference/)** — every module, command, and setting +- **[Extending](https://docs.nsclient.org/extending/)** — Python, Lua, native plugins, zip modules +- **[REST API](https://docs.nsclient.org/api/rest/)** — programmatic access +- **[FAQ](https://docs.nsclient.org/faq/)** — operational gotchas + +--- + +## Contributing + +Contributions are welcome — bug reports, fixes, new checks, doc improvements, +and platform packaging help. + +- File issues and feature requests at . +- Pull requests should target `main`. CI builds Windows and Linux packages on + every PR; please make sure the build is green before requesting review. +- Documentation lives under [`docs`](docs) and is published to + . +- For non-trivial changes, open an issue first to discuss the approach. + +## License + +NSClient++ is licensed under the **GNU General Public License v2.0** — see +[COPYING](COPYING). ### Powered by [![JetBrains logo.](https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg)](https://jb.gg/OpenSource) - From 916d2de0e4a70918f8d4b0253aac30eca7f07686 Mon Sep 17 00:00:00 2001 From: Michael Medin Date: Fri, 15 May 2026 14:37:44 +0200 Subject: [PATCH 4/5] Removed dead files --- .gitmodules | 0 changelog | 3453 -------------------------- nscp.spec.in | 81 - vagrant/debian/jessie/Vagrantfile | 35 - vagrant/debian/wheezy-64/Vagrantfile | 30 - vagrant/files/CPackRPM.cmake | 278 --- vagrant/files/build-cryptopp.sh | 7 - vagrant/files/build-debian.sh | 16 - vagrant/files/build-protobuf.sh | 11 - vagrant/files/deb-puppet.sh | 2 - vagrant/files/plugin_pb2.py | 159 -- vagrant/ubuntu/precise32/Vagrantfile | 31 - vagrant/ubuntu/precise64/Vagrantfile | 38 - vagrant/ubuntu/trusty32/Vagrantfile | 33 - vagrant/ubuntu/trusty64/Vagrantfile | 37 - 15 files changed, 4211 deletions(-) delete mode 100644 .gitmodules delete mode 100644 changelog delete mode 100644 nscp.spec.in delete mode 100644 vagrant/debian/jessie/Vagrantfile delete mode 100644 vagrant/debian/wheezy-64/Vagrantfile delete mode 100644 vagrant/files/CPackRPM.cmake delete mode 100755 vagrant/files/build-cryptopp.sh delete mode 100755 vagrant/files/build-debian.sh delete mode 100755 vagrant/files/build-protobuf.sh delete mode 100755 vagrant/files/deb-puppet.sh delete mode 100644 vagrant/files/plugin_pb2.py delete mode 100644 vagrant/ubuntu/precise32/Vagrantfile delete mode 100644 vagrant/ubuntu/precise64/Vagrantfile delete mode 100644 vagrant/ubuntu/trusty32/Vagrantfile delete mode 100644 vagrant/ubuntu/trusty64/Vagrantfile diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e69de29bb..000000000 diff --git a/changelog b/changelog deleted file mode 100644 index ae8171d8d..000000000 --- a/changelog +++ /dev/null @@ -1,3453 +0,0 @@ -Hence forth change log can be found on github: https://github.com/mickem/nscp/releases - -* check_uptime: configurable timezone for boot rendering. Each module caches - the value from `/settings/default/timezone` in its `loadModuleEx` (no - settings-core persistence). Default is now `local` instead of UTC; users - who relied on UTC should set `timezone = utc` under `/settings/default`. - The default syntax now uses `${tz}` instead of a hard-coded `(UTC)` label, - and a new `${uptime_d}` placeholder forces day-bounded granularity (#365, - #590). -* check_uptime: align Windows and Unix `parse_time` so unit-suffixed - thresholds like `uptime < 30m` work consistently on both platforms (#452). -* check_uptime (Unix): return UNKNOWN when `/proc/uptime` cannot be read, - instead of silently reporting an uptime of 0. - -2023-07-30 Michael Medin - * Added first version of github action build pipeline - -2018-02-03 Michael Medin - * Updated documentation (#513) - * eventlog: Fixed issue where real-time eventlog message return duplicate results if same log with different case was added - * NSCA Client: Fixed #511 nsca status can be set with a number from command line - * filters: show-all will not change if the list is already present: fixes #528 - * Added dockerfiles for debian #537 - * Some linux build fixes - * Fixed 401 issue with Op5Client - * corrected spelling - -2018-01-18 Michael Medin - * Fixed some Op5Client issues - -2018-01-17 Philipp - * Fix syntax error for PowerShell wrapper - - 2018-01-15 Michael Medin - * Added hidden to check_tasksched to allow checking of hidden tasks - * Added tracing and fixed some issues to op5 client - * Fixed #525 json spirit should be an optional dependency (though a lot of things break without it) - -2018-01-08 Michael Medin - * Possibly fixed #525 json-spirit should not be a required dependancy - * Fixed #527 infinite recursion with malformed config file - * Fixed #518 silent installer not applying cli values - * Fixed so OP5_SERVER et.al. are applied correctly to the installer - * Added new OP5Client - * optimized the markdown a bit - * started to fix debian builds - * Added http client for mongoose wrapper - * moved moongose impl behind the c++ wrappers - * add centreon plugins to docs: ref #512 - -2017-11-19 Michael Medin - * REST: Added crude settings API (needs more work before making official) - * Fixed #435 added support for overriding http verb with X-HTTP-Method-Override - * Improved error message for 404:s - * Fixed some issues with enumerating settings keys - * Removed query from settings protobuf api as it was never used - * CORE: Fixed listing unloaded modules by name - * REST: Added POST of modules to upload them - * REST: Fixed execute_nagios support for plain text output and fixed return code - * REST: Fixed segv when parsing privileges - * WEBServer: Fixed output from nscp web install - * zip-modules: fixed loading zip-modules without extensions - * REST: GET ...queries/ actually lists scripts not queries - * REST: Added putting log messages via REST API. - * Spellchecked some docs a bit - -2017-11-16 Michael Medin - * Added more python API documentation - * Fixed #499 Added details about adding performance data to documentation about checks - * Fixed #502 removed pointless log message about logger - * REST: Fixed #485 check_nscp_web is now supported again, sorry for the delay.... - -2017-11-15 Michael Medin - * Added command line commands to nscp web for adding users and roles: nscp web --help - * REST: Added support for python runtime - -2017-11-14 Michael Medin - * REST: Added support for loading zip modules - * REST: Fixed fetching single plugin and plugin load status updates - * REST: fixed segv when fetching log records - * REST: Added links to modules controller - * Fixed python script CLI for loading scripts - * Added some more python API docs - * Removed erroneous error message bout web password - * Added compatibility matrices to documentation (Fixing #482 ) - -2017-11-12 Michael Medin - * check_process: Fixed #494 empty status message - * Events: Added proper event names - * CheckEventLog added support for fetching xml - * REST: added privileges to query controller - * Fixed rendering issue in api docs - -2017-11-11 Michael Medin - * Added skeleton docs for the Python API - * Improved the markdown docs for the plugin API - * Various minor rest api fixes (pagination, and links) - * Fixed python script issues - -2017-11-09 Michael Medin - * Fixed accidental renaming of module in ext-scr install command - * Fixed so clients (test/web) can show multiple lines in output - -2017-11-08 Michael Medin - * Added info API to get version - -2017-11-06 Michael Medin - * Regression fixes for external scripts - * Fixed some python script refactoring regression issues - -2017-11-05 Michael Medin - * check_eventlog: Added support for audit success/failure keyword filtering Fixed #488 - * zip modules: added support for python script one-liners - * PythonScripts: Made python scripts compatible with external scripts cli as well as code refactoring - * check_pdh: Added ignore-errors to make counters return 0 instead of errors: #454 - * Split external script up into chunks - -2017-10-31 Michael Medin - * ZIP modules: Added modules and on_start to zip modules to load modules and run commands on start - -2017-10-28 Michael Medin - * Implemented script support for zip plugins - -2017-10-28 Michael Medin - * CheckExternalScripts added support for not writing the configuration when adding script (--no-config) - * Added ZIP plugins - -2017-10-18 Thomas Rohlajz - * Remove duplicity in tutorial documentation - -2017-10-25 Michael Medin - * REST: added log api - * core: Refactoring - -2017-10-17 Michael Medin - * Fixed #472 Added sample exclude versus filter - * Fixed #471 added sample command with perf-config to check_memory - -2017-10-16 Michael Medin - * Fixed #413 check_network returning the wrong values - * Added example real-time eventlog command to docs - -2017-10-15 Michael Medin - * Major overhaul of the documentation making the generated bits easier to read... - -2017-10-11 Michael Kraus - * Add link and information about check_nsc_web - -2017-10-11 Michael Medin - * Added documentation for REST API and added privs and fixed some issues - -2017-10-10 Michael Medin - * Updated the API documentation - * Added /api and /api/v1 endpoints to provide information about API - * Added API documentation for scripts - * Added configuration for grants and roles #448 #449 - * Added privilege system for API #448 and #449 - * Added support for basic auth (#448) - -2017-10-05 Michael Medin - * Fixed installer issue - * Renamed the moongose lib so it wont clash with other thing on linux - -2017-10-01 Michael Medin - * implemented DELETE for /api/v1/scripts/ext/scripts to delete commands and scripts. - * Added delete to CHeckExternalScritpts to delete scripts: nscp ext delete --script will delete the alias and nscp ext delete --script