Rev 29 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 29 | Rev 31 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | <?php /* <ViaThinkSoftSignature> |
1 | <?php /* <ViaThinkSoftSignature> |
2 | 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 |
23 | A== |
23 | A== |
24 | </ViaThinkSoftSignature> */ ?> |
24 | </ViaThinkSoftSignature> */ ?> |
25 | <?php |
25 | <?php |
26 | 26 | ||
27 | /* |
27 | /* |
Line 33... | Line 33... | ||
33 | \ V / | | (_| || | | | | | | | | | < ___) | (_) | _| |_ |
33 | \ V / | | (_| || | | | | | | | | | < ___) | (_) | _| |_ |
34 | \_/ |_|\__,_||_| |_| |_|_|_| |_|_|\_\|____/ \___/|_| \__| |
34 | \_/ |_|\__,_||_| |_| |_|_|_| |_|_|\_\|____/ \___/|_| \__| |
35 | 35 | ||
36 | Developed by Daniel Marschall www.viathinksoft.com |
36 | Developed by Daniel Marschall www.viathinksoft.com |
37 | Licensed under the terms of the Apache 2.0 license |
37 | Licensed under the terms of the Apache 2.0 license |
38 | Revision 2021-05-21 |
38 | Revision 2021-06-24 |
39 | 39 | ||
40 | */ |
40 | */ |
41 | 41 | ||
42 | /**************************************************************************************************** |
42 | /**************************************************************************************************** |
43 | 43 | ||
Line 345... | Line 345... | ||
345 | // Returns true for '' or null. Does not return true for value 0 or '0' (like empty() does) |
345 | // Returns true for '' or null. Does not return true for value 0 or '0' (like empty() does) |
346 | return trim($x) == ''; |
346 | return trim($x) == ''; |
347 | } |
347 | } |
348 | 348 | ||
349 | abstract class VNag { |
349 | abstract class VNag { |
350 | /*public*/ const VNAG_VERSION = '2021-05-21'; |
350 | /*public*/ const VNAG_VERSION = '2021-06-24'; |
351 | 351 | ||
352 | // Status 0..3 for STATUSMODEL_SERVICE (the default status model): |
352 | // Status 0..3 for STATUSMODEL_SERVICE (the default status model): |
353 | # The guideline states: "Higher-level errors (such as name resolution errors, socket timeouts, etc) are outside of the control of plugins and should generally NOT be reported as UNKNOWN states." |
353 | # The guideline states: "Higher-level errors (such as name resolution errors, socket timeouts, etc) are outside of the control of plugins and should generally NOT be reported as UNKNOWN states." |
354 | # We choose 4 as exitcode. The plugin developer is free to return any other status. |
354 | # We choose 4 as exitcode. The plugin developer is free to return any other status. |
355 | /*public*/ const STATUS_OK = 0; |
355 | /*public*/ const STATUS_OK = 0; |
Line 1902... | Line 1902... | ||
1902 | } |
1902 | } |
1903 | 1903 | ||
1904 | public static function isKnownUOM(string $uom) { |
1904 | public static function isKnownUOM(string $uom) { |
1905 | // see https://nagios-plugins.org/doc/guidelines.html#AEN200 |
1905 | // see https://nagios-plugins.org/doc/guidelines.html#AEN200 |
1906 | // 10. UOM (unit of measurement) is one of: |
1906 | // 10. UOM (unit of measurement) is one of: |
1907 | return ( |
1907 | |
1908 | // no unit specified - assume a number (int or float) of things (eg, users, processes, load averages) |
1908 | // no unit specified - assume a number (int or float) of things (eg, users, processes, load averages) |
1909 | ($uom === '') || |
1909 | $no_unit = ($uom === ''); |
1910 | // s - seconds (also us, ms) |
1910 | // s - seconds (also us, ms) |
1911 | ($uom === 's') || ($uom === 'ms') || ($uom === 'us') || |
1911 | $seconds = ($uom === 's') || ($uom === 'ms') || ($uom === 'us'); |
1912 | // % - percentage |
1912 | // % - percentage |
1913 | ($uom === '%') || |
1913 | $percentage = ($uom === '%'); |
1914 | // B - bytes (also KB, MB, TB) |
1914 | // B - bytes (also KB, MB, TB) |
1915 | ($uom === 'B') || ($uom === 'KB') || ($uom === 'MB') || ($uom === 'GB') || ($uom === 'TB') || // NOTE: GB is not in the official development guidelines,probably due to an error, so I've added them anyway |
1915 | // NOTE: GB is not in the official development guidelines,probably due to an error, so I've added them anyway |
- | 1916 | $bytes = ($uom === 'B') || ($uom === 'KB') || ($uom === 'MB') || ($uom === 'GB') || ($uom === 'TB'); |
|
1916 | // c - a continous counter (such as bytes transmitted on an interface) |
1917 | // c - a continous counter (such as bytes transmitted on an interface) |
1917 | ($uom === 'c') |
1918 | $counter = ($uom === 'c'); |
1918 | ); |
1919 | |
- | 1920 | return ($no_unit || $seconds || $percentage || $bytes || $counter); |
|
1919 | } |
1921 | } |
1920 | 1922 | ||
1921 | public function normalize($target=null) { |
1923 | public function normalize($target=null) { |
1922 | $res = clone $this; |
1924 | $res = clone $this; |
1923 | 1925 |