Subversion Repositories vnag

Rev

Rev 55 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 55 Rev 59
Line 1... Line 1...
1
<?php /* <ViaThinkSoftSignature>
1
<?php /* <ViaThinkSoftSignature>
2
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
23
Q==
23
Q==
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 2022-06-06
38
      Revision 2022-12-18
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 = '2022-06-06';
350
        /*public*/ const VNAG_VERSION = '2022-12-18';
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 1306... Line 1306...
1306
                        } else {
1306
                        } else {
1307
                                // $this->addVerboseMessage($exception->getTraceAsString(), VNag::VERBOSITY_SUMMARY);
1307
                                // $this->addVerboseMessage($exception->getTraceAsString(), VNag::VERBOSITY_SUMMARY);
1308
                        }
1308
                        }
1309
                }
1309
                }
1310
        }
1310
        }
-
 
1311
 
-
 
1312
        // This is not used by the framework itself, but can be useful for plugins
-
 
1313
        // Note: For icinga2, the path is /var/lib/nagios/.vnag/cache/
-
 
1314
        protected function get_cache_dir() {
-
 
1315
                $homedir = @getenv('HOME');
-
 
1316
                if ($homedir && is_dir($homedir)) {
-
 
1317
                        $try = "${homedir}/.vnag/cache";
-
 
1318
                        if (is_dir($try)) return $try;
-
 
1319
                        if (@mkdir($try,0777,true)) return $try;
-
 
1320
                }
-
 
1321
 
-
 
1322
                $user = posix_getpwuid(posix_geteuid());
-
 
1323
                if (isset($user['dir']) && is_dir($user['dir'])) {
-
 
1324
                        $homedir = $user['dir'];
-
 
1325
                        $try = "${homedir}/.vnag/cache";
-
 
1326
                        if (is_dir($try)) return $try;
-
 
1327
                        if (@mkdir($try,0777,true)) return $try;
-
 
1328
                }
-
 
1329
 
-
 
1330
                if (isset($user['name']) && is_dir($user['name'])) {
-
 
1331
                        $username = $user['name'];
-
 
1332
                        $try = "/tmp/vnag/cache";
-
 
1333
                        if (is_dir($try)) return $try;
-
 
1334
                        if (@mkdir($try,0777,true)) return $try;
-
 
1335
                }
-
 
1336
 
-
 
1337
                throw new VNagException("Cannot get cache dir"); // TODO: translate and own exception type
-
 
1338
        }
1311
}
1339
}
1312
 
1340
 
1313
 
1341
 
1314
class VNagException extends Exception {
1342
class VNagException extends Exception {
1315
        public function getStatus() {
1343
        public function getStatus() {