Changeset 3136203 in nscp
- Timestamp:
- 01/03/11 08:16:46 (2 years ago)
- Branches:
- stable
- Children:
- 349a44a
- Parents:
- aab5b07
- Files:
-
- 12 edited
-
AutoBuild.h (modified) (1 diff)
-
NSC.dist (modified) (1 diff)
-
changelog (modified) (1 diff)
-
include/arrayBuffer.cpp (modified) (13 diffs)
-
include/arrayBuffer.h (modified) (3 diffs)
-
include/pdh/collectors.hpp (modified) (10 diffs)
-
include/pdh/counters.hpp (modified) (2 diffs)
-
include/pdh/query.hpp (modified) (2 diffs)
-
modules/CheckEventLog/CheckEventLog.cpp (modified) (4 diffs)
-
modules/CheckEventLog/CheckEventLog.h (modified) (1 diff)
-
modules/CheckExternalScripts/CheckExternalScripts.cpp (modified) (3 diffs)
-
modules/CheckHelpers/CheckHelpers.cpp (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
AutoBuild.h
r41ca52e r3136203 3 3 // change the FALSE to TRUE for autoincrement of build number 4 4 #define INCREMENT_VERSION TRUE 5 #define FILEVER 0,3,9,22 26 #define PRODUCTVER 0,3,9,22 27 #define STRFILEVER _T("0.3.9.22 2")8 #define STRPRODUCTVER _T("0.3.9.22 2")9 #define STRPRODUCTDATE _T("2010-12- 26")5 #define FILEVER 0,3,9,227 6 #define PRODUCTVER 0,3,9,227 7 #define STRFILEVER _T("0.3.9.227") 8 #define STRPRODUCTVER _T("0.3.9.227") 9 #define STRPRODUCTDATE _T("2010-12-31") 10 10 #endif // AUTOBUILD_H -
NSC.dist
r41ca52e r3136203 17 17 ;CheckHelpers.dll 18 18 ;CheckWMI.dll 19 ;CheckNSCP.dll 19 20 ; 20 21 ; Script to check external scripts and/or internal aliases. -
changelog
r41ca52e r3136203 14 14 * General improvments to the crash helper. 15 15 * Added check_nscp which is a basic command to check the internal health of NSClient++ 16 * Added check_files (script) submitted by 16 17 17 18 2010-12-25 MickeM -
include/arrayBuffer.cpp
r1d6bb09 r3136203 28 28 * @return Argument wrapped as a list 29 29 */ 30 arrayBuffer::arrayList arrayBuffer::arrayBuffer2list(const unsigned int argLen, TCHAR*argument[]) {30 arrayBuffer::arrayList arrayBuffer::arrayBuffer2list(const unsigned int argLen, wchar_t *argument[]) { 31 31 arrayList ret; 32 32 int i=0; … … 43 43 * @return Argument wrapped as a list 44 44 */ 45 arrayBuffer::arrayVector arrayBuffer::arrayBuffer2vector(const unsigned int argLen, TCHAR*argument[]) {45 arrayBuffer::arrayVector arrayBuffer::arrayBuffer2vector(const unsigned int argLen, wchar_t *argument[]) { 46 46 arrayVector ret; 47 47 int i=0; … … 68 68 for (i=0;it!=lst.end();++it,i++) { 69 69 std::wstring::size_type alen = (*it).size(); 70 arrayBuffer[i] = new TCHAR[alen+2];70 arrayBuffer[i] = new wchar_t[alen+2]; 71 71 wcsncpy_s(arrayBuffer[i], alen+2, (*it).c_str(), alen+1); 72 72 } … … 122 122 * @return The arrayBuffer 123 123 */ 124 arrayBuffer::arrayBuffer arrayBuffer::split2arrayBuffer(const TCHAR* buffer, TCHARsplitChar, unsigned int &argLen) {124 arrayBuffer::arrayBuffer arrayBuffer::split2arrayBuffer(const wchar_t* buffer, wchar_t splitChar, unsigned int &argLen) { 125 125 if (!buffer) 126 126 throw ArrayBufferException(_T("Invalid buffer specified!")); 127 127 argLen = 0; 128 const TCHAR*p = buffer;128 const wchar_t *p = buffer; 129 129 if (!p[0]) { 130 130 return createEmptyArrayBuffer(argLen); … … 136 136 } 137 137 argLen++; 138 TCHAR **arrayBuffer = new TCHAR*[argLen];138 wchar_t **arrayBuffer = new wchar_t*[argLen]; 139 139 p = buffer; 140 140 for (unsigned int i=0;i<argLen;i++) { 141 const TCHAR*q = wcschr(p, (i<argLen-1)?splitChar:0);141 const wchar_t *q = wcschr(p, (i<argLen-1)?splitChar:0); 142 142 unsigned int len = static_cast<int>(q-p); 143 arrayBuffer[i] = new TCHAR[len+1];143 arrayBuffer[i] = new wchar_t[len+1]; 144 144 wcsncpy_s(arrayBuffer[i], len+1, p, len); 145 145 arrayBuffer[i][len] = 0; … … 155 155 delete [] arrayBuffer[position]; 156 156 size_t len = argument.length(); 157 arrayBuffer[position] = new TCHAR[len+2];157 arrayBuffer[position] = new wchar_t[len+2]; 158 158 wcsncpy_s(arrayBuffer[position], len+1, argument.c_str(), len); 159 159 arrayBuffer[position][len] = 0; … … 168 168 * @return The arrayBuffer 169 169 */ 170 arrayBuffer::arrayBuffer arrayBuffer::split2arrayBuffer(const std::wstring inBuf, TCHARsplitChar, unsigned int &argLen, bool escape) {170 arrayBuffer::arrayBuffer arrayBuffer::split2arrayBuffer(const std::wstring inBuf, wchar_t splitChar, unsigned int &argLen, bool escape) { 171 171 if (inBuf.empty()) 172 172 return createEmptyArrayBuffer(argLen); … … 191 191 // p1 = start of "this token" 192 192 // p2 = end of "this token" (next split char) 193 //std::wcout << _T("found token: ") << p1 << _T(":") << p2;194 193 195 194 if (p2<=p1) … … 201 200 token = token.substr(0, token.size()-1); 202 201 203 //std::wcout << _T(" -- ") << token << std::endl;204 202 205 203 token_list.push_back(token); … … 214 212 for (std::list<std::wstring>::const_iterator cit=token_list.begin();cit!=token_list.end();++cit) { 215 213 size_t len = (*cit).size(); 216 TCHAR* token = new TCHAR[len+1];214 wchar_t* token = new wchar_t[len+1]; 217 215 wcsncpy_s(token, len+1, (*cit).c_str(), len); 218 216 arrayBuffer[argLen++] = token; … … 306 304 std::wcout << "arrayBuffer::test_createEmptyArrayBuffer() : "; 307 305 unsigned int argLen; 308 TCHAR** c = createEmptyArrayBuffer(argLen);306 wchar_t ** c = createEmptyArrayBuffer(argLen); 309 307 if ((c) && (argLen == 0)) 310 308 std::wcout << "Succeeded" << std::endl; … … 319 317 * @param OUT_argLen 320 318 */ 321 void arrayBuffer::test_split2arrayBuffer_str(std::wstring buffer, TCHARsplitter, int OUT_argLen) {319 void arrayBuffer::test_split2arrayBuffer_str(std::wstring buffer, wchar_t splitter, int OUT_argLen) { 322 320 std::wcout << _T("arrayBuffer::test_split2arrayBuffer(") << buffer << _T(", ...) : "); 323 321 unsigned int argLen = 0; 324 TCHAR** c = split2arrayBuffer(buffer, splitter, argLen);322 wchar_t ** c = split2arrayBuffer(buffer, splitter, argLen); 325 323 if ((c) && (argLen == OUT_argLen)) 326 324 std::wcout << _T("Succeeded") << std::endl; … … 335 333 * @param OUT_argLen 336 334 */ 337 void arrayBuffer::test_split2arrayBuffer_char( TCHAR* buffer, TCHARsplitter, int OUT_argLen) {335 void arrayBuffer::test_split2arrayBuffer_char(wchar_t* buffer, wchar_t splitter, int OUT_argLen) { 338 336 std::wcout << _T("arrayBuffer::test_split2arrayBuffer(") << buffer << _T(", ...) : "); 339 337 unsigned int argLen = 0; 340 TCHAR** c = split2arrayBuffer(buffer, splitter, argLen);338 wchar_t ** c = split2arrayBuffer(buffer, splitter, argLen); 341 339 if ((c) && (argLen == OUT_argLen)) 342 340 std::wcout << _T("Succeeded") << std::endl; -
include/arrayBuffer.h
r1d6bb09 r3136203 55 55 ArrayBufferException(std::wstring error) {} 56 56 }; 57 typedef TCHAR* arrayBufferItem;57 typedef wchar_t* arrayBufferItem; 58 58 typedef arrayBufferItem* arrayBuffer; 59 59 typedef std::list<std::wstring> arrayList; 60 60 typedef std::vector<std::wstring> arrayVector; 61 61 void set(arrayBuffer arrayBuffer, const unsigned int argLen, const unsigned int position, std::wstring argument); 62 arrayList arrayBuffer2list(const unsigned int argLen, TCHAR**argument);62 arrayList arrayBuffer2list(const unsigned int argLen, wchar_t **argument); 63 63 arrayVector arrayBuffer2vector(const unsigned int argLen, TCHAR **argument); 64 64 arrayBuffer list2arrayBuffer(const arrayList lst, unsigned int &argLen); 65 arrayBuffer split2arrayBuffer(const TCHAR* buffer, TCHARsplitChar, unsigned int &argLen);66 arrayBuffer split2arrayBuffer(const std::wstring inBuf, TCHARsplitChar, unsigned int &argLen, bool escape = false);67 std::wstring arrayBuffer2string( TCHAR**argument, const unsigned int argLen, std::wstring join);65 arrayBuffer split2arrayBuffer(const wchar_t* buffer, wchar_t splitChar, unsigned int &argLen); 66 arrayBuffer split2arrayBuffer(const std::wstring inBuf, wchar_t splitChar, unsigned int &argLen, bool escape = false); 67 std::wstring arrayBuffer2string(wchar_t **argument, const unsigned int argLen, std::wstring join); 68 68 arrayBuffer createEmptyArrayBuffer(unsigned int &argLen); 69 69 arrayBuffer createArrayBuffer(unsigned int &argLen); … … 73 73 for (unsigned int i=0; i<argLen; i++) { 74 74 size_t s = wcslen(other[i]); 75 ret[i] = new TCHAR[s+2];75 ret[i] = new wchar_t[s+2]; 76 76 wcsncpy_s(ret[i], s+2, other[i], s); 77 77 } … … 81 81 #ifdef _DEBUG 82 82 void test_createEmptyArrayBuffer(); 83 void test_split2arrayBuffer_str(std::wstring buffer, TCHARsplitter, int OUT_argLen);84 void test_split2arrayBuffer_char( TCHAR* buffer, TCHARsplitter, int OUT_argLen);83 void test_split2arrayBuffer_str(std::wstring buffer, wchar_t splitter, int OUT_argLen); 84 void test_split2arrayBuffer_char(wchar_t* buffer, wchar_t splitter, int OUT_argLen); 85 85 void run_testArrayBuffer(); 86 86 #endif -
include/pdh/collectors.hpp
r41ca52e r3136203 113 113 }; 114 114 115 class PDHCollector : public PDH::PDHCounterListener{ 116 public: 117 virtual std::wstring get_string() = 0; 118 virtual double get_double() = 0; 119 virtual __int64 get_int64() = 0; 120 virtual double get_average(int backlog) = 0; 121 }; 122 123 115 124 template <class TType, int TCollectionFormat, class TMutextHandler = PDHCounterNoMutex> 116 125 class StaticPDHCounterListener { … … 118 127 119 128 template <class TType, class TMutextHandler> 120 class StaticPDHCounterListener<TType, format_double, TMutextHandler> : public PDH ::PDHCounterListener {129 class StaticPDHCounterListener<TType, format_double, TMutextHandler> : public PDHCollector { 121 130 TType value_; 122 131 TMutextHandler mutex_; … … 146 155 return format_double; 147 156 } 157 public: 158 inline std::wstring get_string() { 159 return strEx::itos(getValue()); 160 } 161 inline double get_double() { 162 return static_cast<double>(getValue()); 163 } 164 __int64 get_int64() { 165 return getValue(); 166 } 167 inline double get_average(int backlog) { 168 return static_cast<double>(getValue()); 169 } 148 170 private: 149 171 std::wstring get_name() const { … … 155 177 156 178 template <class TType, class TMutextHandler> 157 class StaticPDHCounterListener<TType, format_long, TMutextHandler> : public PDH ::PDHCounterListener {179 class StaticPDHCounterListener<TType, format_long, TMutextHandler> : public PDHCollector { 158 180 TType value_; 159 181 TMutextHandler mutex_; … … 181 203 DWORD getFormat() const { 182 204 return format_long; 205 } 206 inline std::wstring get_string() { 207 return strEx::itos(getValue()); 208 } 209 inline double get_double() { 210 return static_cast<double>(getValue()); 211 } 212 __int64 get_int64() { 213 return getValue(); 214 } 215 inline double get_average(int backlog) { 216 return static_cast<double>(getValue()); 183 217 } 184 218 private: … … 191 225 192 226 template <class TType, class TMutextHandler> 193 class StaticPDHCounterListener<TType, format_large, TMutextHandler> : public PDH ::PDHCounterListener {227 class StaticPDHCounterListener<TType, format_large, TMutextHandler> : public PDHCollector { 194 228 TMutextHandler mutex_; 195 229 TType value_; … … 217 251 DWORD getFormat() const { 218 252 return format_large; 253 } 254 inline std::wstring get_string() { 255 return strEx::itos(getValue()); 256 } 257 inline double get_double() { 258 return static_cast<double>(getValue()); 259 } 260 __int64 get_int64() { 261 return getValue(); 262 } 263 inline double get_average(int backlog) { 264 return static_cast<double>(getValue()); 219 265 } 220 266 private: … … 228 274 229 275 template <class TType, class TMutextHandler> 230 class RoundINTPDHBufferListenerImpl : public PDH ::PDHCounterListener {276 class RoundINTPDHBufferListenerImpl : public PDHCollector { 231 277 TMutextHandler mutex_; 232 278 unsigned int length; … … 238 284 RoundINTPDHBufferListenerImpl() : buffer(NULL), length(0), current(0), hasValue_(false), parent_(NULL) {} 239 285 RoundINTPDHBufferListenerImpl(int length_) : length(length_), current(0), hasValue_(false), parent_(NULL) { 240 PDHCounterMutexHandler mutex( mutex_);241 if (!mutex.hasLock()) 242 return; 243 buffer = new int[length];286 PDHCounterMutexHandler mutex(&mutex_); 287 if (!mutex.hasLock()) 288 return; 289 buffer = new TType[length]; 244 290 for (unsigned int i=0; i<length;i++) 245 291 buffer[i] = 0; … … 313 359 return (ret/backItems); 314 360 } 361 inline std::wstring get_string() { 362 return strEx::itos(getAvrage(length-1)); 363 } 364 inline double get_double() { 365 return getAvrage(length-1); 366 } 367 __int64 get_int64() { 368 return static_cast<__int64>(getAvrage(length-1)); 369 } 370 inline double get_average(int backlog) { 371 return getAvrage(backlog); 372 } 315 373 inline unsigned int getLength() const { 316 374 return length; -
include/pdh/counters.hpp
r42ff14d r3136203 44 44 std::wstring name_; 45 45 PDH_FMT_COUNTERVALUE data_; 46 PDHCounterListener *listener_; 46 typedef PDHCounterListener* listener_ptr; 47 listener_ptr listener_; 47 48 48 49 public: 49 50 50 PDHCounter(std::wstring name, PDHCounterListener *listener) : name_(name), listener_(listener), hCounter_(NULL){}51 PDHCounter(std::wstring name, listener_ptr listener) : name_(name), listener_(listener), hCounter_(NULL){} 51 52 PDHCounter(std::wstring name) : name_(name), listener_(NULL), hCounter_(NULL){} 52 53 virtual ~PDHCounter(void) { … … 55 56 } 56 57 57 void setListener( PDHCounterListener *listener) {58 void setListener(listener_ptr listener) { 58 59 listener_ = listener; 59 60 } -
include/pdh/query.hpp
r42ff14d r3136203 31 31 class PDHQuery : public PDH::PDHImplSubscriber { 32 32 private: 33 typedef std::list<PDHCounter*> CounterList; 33 typedef PDHCounter* counter_ptr; 34 typedef PDHCounterListener* listener_ptr; 35 typedef std::list<counter_ptr> CounterList; 34 36 CounterList counters_; 35 37 PDH::PDH_HQUERY hQuery_; … … 41 43 } 42 44 43 PDHCounter* addCounter(std::wstring name, PDHCounterListener *listener) {44 PDHCounter *counter = new PDHCounter(name, listener);45 counter_ptr addCounter(std::wstring name, listener_ptr listener) { 46 counter_ptr counter = new PDHCounter(name, listener); 45 47 counters_.push_back(counter); 46 48 return counter; 47 49 } 48 PDHCounter*addCounter(std::wstring name) {49 PDHCounter *counter = new PDHCounter(name);50 counter_ptr addCounter(std::wstring name) { 51 counter_ptr counter = new PDHCounter(name); 50 52 counters_.push_back(counter); 51 53 return counter; -
modules/CheckEventLog/CheckEventLog.cpp
r41ca52e r3136203 56 56 #include <parsers/ast.cpp> 57 57 58 59 bool CheckEventLog::loadModule() { 60 try { 61 NSCModuleHelper::registerCommand(_T("CheckEventLog"), _T("Check for errors in the event logger!")); 62 debug_ = NSCModuleHelper::getSettingsInt(EVENTLOG_SECTION_TITLE, EVENTLOG_DEBUG, EVENTLOG_DEBUG_DEFAULT)==1; 63 lookup_names_ = NSCModuleHelper::getSettingsInt(EVENTLOG_SECTION_TITLE, EVENTLOG_LOOKUP_NAMES, EVENTLOG_LOOKUP_NAMES_DEFAULT)==1; 64 syntax_ = NSCModuleHelper::getSettingsString(EVENTLOG_SECTION_TITLE, EVENTLOG_SYNTAX, EVENTLOG_SYNTAX_DEFAULT); 65 buffer_length_ = NSCModuleHelper::getSettingsInt(EVENTLOG_SECTION_TITLE, EVENTLOG_BUFFER, EVENTLOG_BUFFER_DEFAULT); 66 } catch (NSCModuleHelper::NSCMHExcpetion &e) { 67 NSC_LOG_ERROR_STD(_T("Failed to register command: ") + e.msg_); 68 return false; 69 } catch (...) { 70 NSC_LOG_ERROR_STD(_T("Failed to register command.")); 71 return false; 72 } 73 /* 74 parse(_T("321 = 123")); 75 parse(_T("123 = 123")); 76 parse(_T("id = 123")); 77 parse(_T("id = 321")); 78 79 parse(_T("id = '123'")); 80 parse(_T("id = '321'")); 81 82 parse(_T("id = convert(123)")); 83 parse(_T("id = convert(321)")); 84 85 parse(_T("id = 123 AND 123 = 123 AND id = 123x")); 86 parse(_T("id = 123 AND 123 = 321 OR 123 = 456 OR 123 = 123")); 87 88 parse(_T("foo")); 89 parse(_T("1")); 90 parse(_T("foo = ")); 91 parse(_T("foo = 1")); 92 parse(_T("'foo' = 1")); 93 parse(_T("foo = '1'")); 94 parse(_T("'hello'='world'")); 95 96 parse(_T("foo = bar")); 97 parse(_T("foo = bar AND bar = foo")); 98 parse(_T("foo = bar AND bar = 1")); 99 parse(_T("foo = bar AND bar = foo OR foo = bar")); 100 parse(_T("foo = bar AND bar = 1 OR foo = 1")); 101 parse(_T(" foo = bar AND ( test > 120 OR foo < 123) OR ugh IN (123, 456, 789)")); 102 103 parse(_T("aaa = 111 OR bbb = 222 OR ccc = 333")); 104 parse(_T("(aaa = 111) OR bbb = 222 OR ccc = 333")); 105 parse(_T("(aaa = 111 OR bbb = 222) OR ccc = 333")); 106 parse(_T("(aaa = 111 OR bbb = 222 OR ccc = 333)")); 107 parse(_T("aaa = 111 OR (bbb = 222 OR ccc = 333)")); 108 parse(_T("aaa = 111 OR bbb = 222 OR (ccc = 333)")); 109 parse(_T("ccc = -333")); 110 parse(_T("ccc = -333 AND ccc = to_date('AABBCC', 1234)")); 111 parse(_T("aaa = 111 OR bbb = 222 OR (ccc = -333)")); 112 parse(_T("ccc = -333 AND ccc = to_date('AABBCC', 1234) OR aaa = 123x")); 113 parse(_T("ccc = -333 AND ccc = to_date('AABBCC', 1234) OR aaa = 123x OR 123r = foo123")); 114 */ 115 return true; 116 } 117 bool CheckEventLog::unloadModule() { 118 return true; 119 } 120 121 bool CheckEventLog::hasCommandHandler() { 122 return true; 123 } 124 bool CheckEventLog::hasMessageHandler() { 125 return false; 126 } 58 127 namespace filter { 59 128 namespace where { … … 415 484 } 416 485 417 bool CheckEventLog::loadModule() {418 try {419 NSCModuleHelper::registerCommand(_T("CheckEventLog"), _T("Check for errors in the event logger!"));420 debug_ = NSCModuleHelper::getSettingsInt(EVENTLOG_SECTION_TITLE, EVENTLOG_DEBUG, EVENTLOG_DEBUG_DEFAULT)==1;421 lookup_names_ = NSCModuleHelper::getSettingsInt(EVENTLOG_SECTION_TITLE, EVENTLOG_LOOKUP_NAMES, EVENTLOG_LOOKUP_NAMES_DEFAULT)==1;422 syntax_ = NSCModuleHelper::getSettingsString(EVENTLOG_SECTION_TITLE, EVENTLOG_SYNTAX, EVENTLOG_SYNTAX_DEFAULT);423 buffer_length_ = NSCModuleHelper::getSettingsInt(EVENTLOG_SECTION_TITLE, EVENTLOG_BUFFER, EVENTLOG_BUFFER_DEFAULT);424 } catch (NSCModuleHelper::NSCMHExcpetion &e) {425 NSC_LOG_ERROR_STD(_T("Failed to register command: ") + e.msg_);426 } catch (...) {427 NSC_LOG_ERROR_STD(_T("Failed to register command."));428 }429 /*430 parse(_T("321 = 123"));431 parse(_T("123 = 123"));432 parse(_T("id = 123"));433 parse(_T("id = 321"));434 435 parse(_T("id = '123'"));436 parse(_T("id = '321'"));437 438 parse(_T("id = convert(123)"));439 parse(_T("id = convert(321)"));440 441 parse(_T("id = 123 AND 123 = 123 AND id = 123x"));442 parse(_T("id = 123 AND 123 = 321 OR 123 = 456 OR 123 = 123"));443 444 parse(_T("foo"));445 parse(_T("1"));446 parse(_T("foo = "));447 parse(_T("foo = 1"));448 parse(_T("'foo' = 1"));449 parse(_T("foo = '1'"));450 parse(_T("'hello'='world'"));451 452 parse(_T("foo = bar"));453 parse(_T("foo = bar AND bar = foo"));454 parse(_T("foo = bar AND bar = 1"));455 parse(_T("foo = bar AND bar = foo OR foo = bar"));456 parse(_T("foo = bar AND bar = 1 OR foo = 1"));457 parse(_T(" foo = bar AND ( test > 120 OR foo < 123) OR ugh IN (123, 456, 789)"));458 459 parse(_T("aaa = 111 OR bbb = 222 OR ccc = 333"));460 parse(_T("(aaa = 111) OR bbb = 222 OR ccc = 333"));461 parse(_T("(aaa = 111 OR bbb = 222) OR ccc = 333"));462 parse(_T("(aaa = 111 OR bbb = 222 OR ccc = 333)"));463 parse(_T("aaa = 111 OR (bbb = 222 OR ccc = 333)"));464 parse(_T("aaa = 111 OR bbb = 222 OR (ccc = 333)"));465 parse(_T("ccc = -333"));466 parse(_T("ccc = -333 AND ccc = to_date('AABBCC', 1234)"));467 parse(_T("aaa = 111 OR bbb = 222 OR (ccc = -333)"));468 parse(_T("ccc = -333 AND ccc = to_date('AABBCC', 1234) OR aaa = 123x"));469 parse(_T("ccc = -333 AND ccc = to_date('AABBCC', 1234) OR aaa = 123x OR 123r = foo123"));470 */471 return true;472 }473 bool CheckEventLog::unloadModule() {474 return true;475 }476 477 bool CheckEventLog::hasCommandHandler() {478 return true;479 }480 bool CheckEventLog::hasMessageHandler() {481 return false;482 }483 486 484 487 … … 562 565 563 566 NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 564 std::list<std::wstring> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args);567 std::list<std::wstring> arguments = arrayBuffer::arrayBuffer2list(argLen, char_args); 565 568 566 569 std::list<std::wstring> files; … … 588 591 589 592 try { 590 MAP_OPTIONS_BEGIN( stl_args)593 MAP_OPTIONS_BEGIN(arguments) 591 594 MAP_OPTIONS_NUMERIC_ALL(query1, _T("")) 592 595 MAP_OPTIONS_EXACT_NUMERIC_ALL(query2, _T("")) -
modules/CheckEventLog/CheckEventLog.h
rb6d6f90 r3136203 31 31 bool debug_; 32 32 std::wstring syntax_; 33 DWORDbuffer_length_;33 int buffer_length_; 34 34 bool lookup_names_; 35 35 -
modules/CheckExternalScripts/CheckExternalScripts.cpp
rf40d813 r3136203 44 44 if (!file_helpers::checks::exists(pattern.first)) 45 45 NSC_LOG_ERROR_STD(_T("Path was not found: ") + pattern.first); 46 /* TODO: do we need this? 47 std::wstring::size_type pos = path.find_last_of('*'); 48 if (pos == std::wstring::npos) { 49 path += _T("*.*"); 50 } 51 */ 46 52 47 WIN32_FIND_DATA wfd; 53 48 std::wstring real_path = file_helpers::patterns::combine_pattern(pattern); … … 84 79 85 80 bool CheckExternalScripts::loadModule() { 86 timeout = NSCModuleHelper::getSettingsInt(EXTSCRIPT_SECTION_TITLE, EXTSCRIPT_SETTINGS_TIMEOUT ,EXTSCRIPT_SETTINGS_TIMEOUT_DEFAULT); 87 scriptDirectory_ = NSCModuleHelper::getSettingsString(EXTSCRIPT_SECTION_TITLE, EXTSCRIPT_SETTINGS_SCRIPTDIR ,EXTSCRIPT_SETTINGS_SCRIPTDIR_DEFAULT); 88 std::list<std::wstring>::const_iterator it; 89 std::list<std::wstring> commands = NSCModuleHelper::getSettingsSection(EXTSCRIPT_SCRIPT_SECTION_TITLE); 90 for (it = commands.begin(); it != commands.end(); ++it) { 91 if ((*it).empty()) 92 continue; 93 std::wstring s = NSCModuleHelper::getSettingsString(EXTSCRIPT_SCRIPT_SECTION_TITLE, (*it), _T("")); 94 if (s.empty()) { 95 NSC_LOG_ERROR_STD(_T("Invalid command definition: ") + (*it)); 96 } else { 97 strEx::token tok = strEx::getToken(s, ' ', true); 98 addCommand((*it).c_str(), tok.first, tok.second); 99 } 100 } 101 102 commands = NSCModuleHelper::getSettingsSection(EXTSCRIPT_ALIAS_SECTION_TITLE); 103 for (it = commands.begin(); it != commands.end(); ++it) { 104 if ((*it).empty()) 105 continue; 106 std::wstring s = NSCModuleHelper::getSettingsString(EXTSCRIPT_ALIAS_SECTION_TITLE, (*it), _T("")); 107 if (s.empty()) { 108 NSC_LOG_ERROR_STD(_T("Invalid command definition: ") + (*it)); 109 } else { 110 strEx::token tok = strEx::getToken(s, ' ', true); 111 addAlias((*it).c_str(), tok.first, tok.second); 112 } 113 } 114 115 std::map<std::wstring,std::wstring> wrappers; 116 std::list<std::wstring> wrappings = NSCModuleHelper::getSettingsSection(EXTSCRIPT_WRAPPINGS_SECTION_TITLE); 117 for (it = wrappings.begin(); it != wrappings.end(); ++it) { 118 std::wstring val = NSCModuleHelper::getSettingsString(EXTSCRIPT_WRAPPINGS_SECTION_TITLE, *it, _T("")); 119 if (!(*it).empty() && !val.empty()) { 120 wrappers[(*it)] = val; 121 } 122 } 123 std::list<std::wstring> wscript = NSCModuleHelper::getSettingsSection(EXTSCRIPT_WRAPPED_SCRIPT_SECTION_TITLE); 124 for (it = wscript.begin(); it != wscript.end(); ++it) { 125 std::wstring val = NSCModuleHelper::getSettingsString(EXTSCRIPT_WRAPPED_SCRIPT_SECTION_TITLE, *it, _T("")); 126 if (!(*it).empty() && !val.empty()) { 127 std::wstring type = getWrapping(val); 128 std::map<std::wstring,std::wstring>::const_iterator cit = wrappers.find(type); 129 if (cit == wrappers.end()) { 130 NSC_LOG_ERROR_STD(_T("Failed to find wrappings for: ") + type + _T(" (" + (*it) + _T(")"))); 81 try { 82 timeout = NSCModuleHelper::getSettingsInt(EXTSCRIPT_SECTION_TITLE, EXTSCRIPT_SETTINGS_TIMEOUT ,EXTSCRIPT_SETTINGS_TIMEOUT_DEFAULT); 83 scriptDirectory_ = NSCModuleHelper::getSettingsString(EXTSCRIPT_SECTION_TITLE, EXTSCRIPT_SETTINGS_SCRIPTDIR ,EXTSCRIPT_SETTINGS_SCRIPTDIR_DEFAULT); 84 std::list<std::wstring>::const_iterator it; 85 std::list<std::wstring> commands = NSCModuleHelper::getSettingsSection(EXTSCRIPT_SCRIPT_SECTION_TITLE); 86 for (it = commands.begin(); it != commands.end(); ++it) { 87 if ((*it).empty()) 88 continue; 89 std::wstring s = NSCModuleHelper::getSettingsString(EXTSCRIPT_SCRIPT_SECTION_TITLE, (*it), _T("")); 90 if (s.empty()) { 91 NSC_LOG_ERROR_STD(_T("Invalid command definition: ") + (*it)); 131 92 } else { 132 addWrappedCommand((*it), (*cit).second, val); 133 } 134 } 135 } 136 137 if (!scriptDirectory_.empty()) { 138 addAllScriptsFrom(scriptDirectory_); 139 } 140 root_ = NSCModuleHelper::getBasePath(); 93 strEx::token tok = strEx::getToken(s, ' ', true); 94 addCommand((*it).c_str(), tok.first, tok.second); 95 } 96 } 97 98 commands = NSCModuleHelper::getSettingsSection(EXTSCRIPT_ALIAS_SECTION_TITLE); 99 for (it = commands.begin(); it != commands.end(); ++it) { 100 if ((*it).empty()) 101 continue; 102 std::wstring s = NSCModuleHelper::getSettingsString(EXTSCRIPT_ALIAS_SECTION_TITLE, (*it), _T("")); 103 if (s.empty()) { 104 NSC_LOG_ERROR_STD(_T("Invalid command definition: ") + (*it)); 105 } else { 106 strEx::token tok = strEx::getToken(s, ' ', true); 107 addAlias((*it).c_str(), tok.first, tok.second); 108 } 109 } 110 111 std::map<std::wstring,std::wstring> wrappers; 112 std::list<std::wstring> wrappings = NSCModuleHelper::getSettingsSection(EXTSCRIPT_WRAPPINGS_SECTION_TITLE); 113 for (it = wrappings.begin(); it != wrappings.end(); ++it) { 114 std::wstring val = NSCModuleHelper::getSettingsString(EXTSCRIPT_WRAPPINGS_SECTION_TITLE, *it, _T("")); 115 if (!(*it).empty() && !val.empty()) { 116 wrappers[(*it)] = val; 117 } 118 } 119 std::list<std::wstring> wscript = NSCModuleHelper::getSettingsSection(EXTSCRIPT_WRAPPED_SCRIPT_SECTION_TITLE); 120 for (it = wscript.begin(); it != wscript.end(); ++it) { 121 std::wstring val = NSCModuleHelper::getSettingsString(EXTSCRIPT_WRAPPED_SCRIPT_SECTION_TITLE, *it, _T("")); 122 if (!(*it).empty() && !val.empty()) { 123 std::wstring type = getWrapping(val); 124 std::map<std::wstring,std::wstring>::const_iterator cit = wrappers.find(type); 125 if (cit == wrappers.end()) { 126 NSC_LOG_ERROR_STD(_T("Failed to find wrappings for: ") + type + _T(" (" + (*it) + _T(")"))); 127 } else { 128 addWrappedCommand((*it), (*cit).second, val); 129 } 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 } 154 } 155 156 if (!scriptDirectory_.empty()) { 157 addAllScriptsFrom(scriptDirectory_); 158 159 160 161 162 } 163 root_ = NSCModuleHelper::getBasePath(); 164 } catch (...) { 165 return false; 166 } 141 167 return true; 142 168 } … … 190 216 } 191 217 return NSCHelper::int2nagios(result); 192 /*193 } else if (cd.type == script_dir) {194 std::wstring args = arrayBuffer::arrayBuffer2string(char_args, argLen, _T(" "));195 std::wstring cmd = scriptDirectory_ + command.c_str() + _T(" ") +args;196 return executeNRPECommand(cmd, message, perf);197 } else {198 NSC_LOG_ERROR_STD(_T("Unknown script type: ") + command.c_str());199 return NSCAPI::critical;200 */201 218 } 202 219 -
modules/CheckHelpers/CheckHelpers.cpp
r1d6bb09 r3136203 34 34 CheckHelpers gCheckHelpers; 35 35 36 BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)37 {38 NSCModuleWrapper::wrapDllMain(hModule, ul_reason_for_call);39 return TRUE;40 }41 42 36 CheckHelpers::CheckHelpers() { 43 37 } … … 75 69 return false; 76 70 } 77 NSCAPI::nagiosReturn CheckHelpers::checkSimpleStatus(NSCAPI::nagiosReturn status, const unsigned int argLen, TCHAR **char_args, std::wstring &m sg, std::wstring &perf)71 NSCAPI::nagiosReturn CheckHelpers::checkSimpleStatus(NSCAPI::nagiosReturn status, const unsigned int argLen, TCHAR **char_args, std::wstring &message, std::wstring &perf) 78 72 { 79 73 NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 80 std::list<std::wstring> arg s = arrayBuffer::arrayBuffer2list(argLen, char_args);81 if (arg s.empty()) {82 m sg= NSCHelper::translateReturn(status) + _T(": Lets pretend everything is going to be ok.");74 std::list<std::wstring> arguments = arrayBuffer::arrayBuffer2list(argLen, char_args); 75 if (arguments.empty()) { 76 message = NSCHelper::translateReturn(status) + _T(": Lets pretend everything is going to be ok."); 83 77 return status; 84 78 } 85 79 std::list<std::wstring>::const_iterator cit; 86 for (cit=arg s.begin();cit!=args.end();++cit)87 m sg+= *cit;80 for (cit=arguments.begin();cit!=arguments.end();++cit) 81 message += *cit; 88 82 return status; 89 83 } 90 84 91 NSCAPI::nagiosReturn CheckHelpers::handleCommand(const strEx::blindstr command, const unsigned int argLen, TCHAR **char_args, std::wstring &msg, std::wstring &perf) { 92 if (command == _T("CheckAlwaysOK")) { 85 NSCAPI::nagiosReturn CheckHelpers::handleCommand(const strEx::blindstr command, const unsigned int argLen, TCHAR **char_args, std::wstring &message, std::wstring &perf) { 86 if (command == _T("CheckVersion")) { 87 message = NSCModuleHelper::getApplicationVersionString(); 88 return NSCAPI::returnOK; 89 } else if (command == _T("CheckAlwaysOK")) { 93 90 if (argLen < 2) { 94 m sg= _T("ERROR: Missing arguments.");95 return NSCAPI::returnUNKNOWN; 96 } 97 NSCModuleHelper::InjectCommand(char_args[0], argLen-1, &char_args[1], m sg, perf);91 message = _T("ERROR: Missing arguments."); 92 return NSCAPI::returnUNKNOWN; 93 } 94 NSCModuleHelper::InjectCommand(char_args[0], argLen-1, &char_args[1], message, perf); 98 95 return NSCAPI::returnOK; 99 } else if (command == _T("CheckVersion")) {100 msg = NSCModuleHelper::getApplicationVersionString();101 return NSCAPI::returnOK;102 } else if (command == _T("CheckOK")) {103 return checkSimpleStatus(NSCAPI::returnOK, argLen, char_args, msg, perf);104 } else if (command == _T("CheckWARNING")) {105 return checkSimpleStatus(NSCAPI::returnWARN, argLen, char_args, msg, perf);106 } else if (command == _T("CheckCRITICAL")) {107 return checkSimpleStatus(NSCAPI::returnCRIT, argLen, char_args, msg, perf);108 96 } else if (command == _T("CheckAlwaysCRITICAL")) { 109 97 if (argLen < 2) { 110 m sg= _T("ERROR: Missing arguments.");111 return NSCAPI::returnUNKNOWN; 112 } 113 NSCModuleHelper::InjectCommand(char_args[0], argLen-1, &char_args[1], m sg, perf);98 message = _T("ERROR: Missing arguments."); 99 return NSCAPI::returnUNKNOWN; 100 } 101 NSCModuleHelper::InjectCommand(char_args[0], argLen-1, &char_args[1], message, perf); 114 102 return NSCAPI::returnCRIT; 115 103 } else if (command == _T("CheckAlwaysWARNING")) { 116 104 if (argLen < 2) { 117 m sg= _T("ERROR: Missing arguments.");118 return NSCAPI::returnUNKNOWN; 119 } 120 NSCModuleHelper::InjectCommand(char_args[0], argLen-1, &char_args[1], m sg, perf);105 message = _T("ERROR: Missing arguments."); 106 return NSCAPI::returnUNKNOWN; 107 } 108 NSCModuleHelper::InjectCommand(char_args[0], argLen-1, &char_args[1], message, perf); 121 109 return NSCAPI::returnWARN; 110 } else if (command == _T("CheckOK")) { 111 return checkSimpleStatus(NSCAPI::returnOK, argLen, char_args, message, perf); 112 } else if (command == _T("check_ok")) { 113 return checkSimpleStatus(NSCAPI::returnOK, argLen, char_args, message, perf); 114 } else if (command == _T("CheckWARNING")) { 115 return checkSimpleStatus(NSCAPI::returnWARN, argLen, char_args, message, perf); 116 } else if (command == _T("CheckCRITICAL")) { 117 return checkSimpleStatus(NSCAPI::returnCRIT, argLen, char_args, message, perf); 122 118 } else if (command == _T("CheckMultiple")) { 123 return checkMultiple(argLen, char_args, m sg, perf);119 return checkMultiple(argLen, char_args, message, perf); 124 120 } else if (command == _T("Negate")) { 125 return negate(argLen, char_args, m sg, perf);121 return negate(argLen, char_args, message, perf); 126 122 } else if (command == _T("Timeout")) { 127 return timeout(argLen, char_args, m sg, perf);123 return timeout(argLen, char_args, message, perf); 128 124 } 129 125 return NSCAPI::returnIgnored; 130 126 } 131 NSCAPI::nagiosReturn CheckHelpers::checkMultiple(const unsigned int argLen, TCHAR **char_args, std::wstring &m sg, std::wstring &perf)127 NSCAPI::nagiosReturn CheckHelpers::checkMultiple(const unsigned int argLen, TCHAR **char_args, std::wstring &message, std::wstring &perf) 132 128 { 133 129 NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 134 std::list<std::wstring> arg s = arrayBuffer::arrayBuffer2list(argLen, char_args);135 if (arg s.empty()) {136 m sg= _T("Missing argument(s).");130 std::list<std::wstring> arguments = arrayBuffer::arrayBuffer2list(argLen, char_args); 131 if (arguments.empty()) { 132 message = _T("Missing argument(s)."); 137 133 return NSCAPI::returnCRIT; 138 134 } … … 141 137 sub_command currentCommand; 142 138 std::list<std::wstring>::const_iterator cit; 143 for (cit=arg s.begin();cit!=args.end();++cit) {139 for (cit=arguments.begin();cit!=arguments.end();++cit) { 144 140 std::wstring arg = *cit; 145 141 std::pair<std::wstring,std::wstring> p = strEx::split(arg,_T("=")); … … 163 159 arrayBuffer::destroyArrayBuffer(args, length); 164 160 returnCode = NSCHelper::maxState(returnCode, tRet); 165 if (!m sg.empty())166 m sg+= _T(", ");167 m sg+= tMsg;161 if (!message.empty()) 162 message += _T(", "); 163 message += tMsg; 168 164 perf += tPerf; 169 165 } … … 174 170 { 175 171 NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 176 std::vector<std::wstring> arg s = arrayBuffer::arrayBuffer2vector(argLen, char_args);177 if (arg s.empty()) {172 std::vector<std::wstring> arguments = arrayBuffer::arrayBuffer2vector(argLen, char_args); 173 if (arguments.empty()) { 178 174 msg = _T("Missing argument(s)."); 179 175 return NSCAPI::returnCRIT; … … 210 206 211 207 boost::program_options::variables_map vm; 212 boost::program_options::store(boost::program_options::basic_command_line_parser<wchar_t>(arg s).options(desc).positional(p).run(), vm);208 boost::program_options::store(boost::program_options::basic_command_line_parser<wchar_t>(arguments).options(desc).positional(p).run(), vm); 213 209 boost::program_options::notify(vm); 214 210 … … 271 267 { 272 268 NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 273 std::vector<std::wstring> arg s = arrayBuffer::arrayBuffer2vector(argLen, char_args);274 if (arg s.empty()) {269 std::vector<std::wstring> arguments = arrayBuffer::arrayBuffer2vector(argLen, char_args); 270 if (arguments.empty()) { 275 271 msg = _T("Missing argument(s)."); 276 272 return NSCAPI::returnCRIT; … … 296 292 297 293 ("command,q", boost::program_options::wvalue<std::wstring>(&command), "Wrapped command to execute") 298 ("arguments,a", boost::program_options::wvalue<std::vector<std::wstring> >(& cmd_args), "List of arguments (for wrapped command)")294 ("arguments,a", boost::program_options::wvalue<std::vector<std::wstring> >(&arguments), "List of arguments (for wrapped command)") 299 295 ; 300 296 … … 344 340 } 345 341 342 NSC_WRAP_DLL(); 346 343 NSC_WRAPPERS_MAIN_DEF(gCheckHelpers); 347 344 NSC_WRAPPERS_IGNORE_MSG_DEF();
Note: See TracChangeset
for help on using the changeset viewer.








