Changeset 1eef1ee in nscp
- Timestamp:
- 03/20/05 20:54:25 (8 years ago)
- Branches:
- master, 0.4.0, 0.4.1, 0.4.2, stable
- Children:
- c6e008c
- Parents:
- 2a94f3f
- Files:
-
- 20 edited
-
NSCPlugin.cpp (modified) (1 diff)
-
NSCPlugin.h (modified) (2 diffs)
-
NSClient++.cpp (modified) (6 diffs)
-
NSClient++.h (modified) (2 diffs)
-
changelog (modified) (1 diff)
-
include/NSCAPI.h (modified) (1 diff)
-
include/NSCHelper.cpp (modified) (18 diffs)
-
include/NSCHelper.h (modified) (9 diffs)
-
modules/CheckDisk/CheckDisk.cpp (modified) (5 diffs)
-
modules/CheckDisk/CheckDisk.h (modified) (1 diff)
-
modules/CheckEventLog/CheckEventLog.cpp (modified) (3 diffs)
-
modules/CheckEventLog/CheckEventLog.h (modified) (1 diff)
-
modules/NRPEListener/NRPEListener.cpp (modified) (2 diffs)
-
modules/NRPEListener/NRPEListener.h (modified) (2 diffs)
-
modules/NRPEListener/NRPEListener.vcproj (modified) (2 diffs)
-
modules/NRPEListener/NRPESocket.cpp (modified) (2 diffs)
-
modules/NRPEListener/NRPESocket.h (modified) (2 diffs)
-
modules/NSClientCompat/NSClientCompat.cpp (modified) (2 diffs)
-
modules/NSClientCompat/NSClientCompat.h (modified) (1 diff)
-
modules/NSClientListener/NSClientSocket.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
NSCPlugin.cpp
r36c340d r1eef1ee 114 114 * @todo Implement return status as an enum to make it simpler for clients to see potential return stats? 115 115 */ 116 int NSCPlugin::handleCommand(const char *command, const unsigned int argLen, char **arguments, char* returnBuffer, unsigned int returnBufferLen) {116 NSCAPI::nagiosReturn NSCPlugin::handleCommand(const char *command, const unsigned int argLen, char **arguments, char* returnMessageBuffer, unsigned int returnMessageBufferLen, char* returnPerfBuffer, unsigned int returnPerfBufferLen) { 117 117 if (!isLoaded()) 118 118 throw NSPluginException(file_, "Library is not loaded"); 119 return fHandleCommand(command, argLen, arguments, return Buffer, returnBufferLen);119 return fHandleCommand(command, argLen, arguments, returnMessageBuffer, returnMessageBufferLen, returnPerfBuffer, returnPerfBufferLen); 120 120 } 121 121 /** -
NSCPlugin.h
r36c340d r1eef1ee 93 93 typedef INT (*lpHasCommandHandler)(); 94 94 typedef INT (*lpHasMessageHandler)(); 95 typedef INT (*lpHandleCommand)(const char*, const unsigned int, char**,char*,unsigned int);95 typedef NSCAPI::nagiosReturn (*lpHandleCommand)(const char*,const unsigned int, char**,char*,unsigned int,char *,unsigned int); 96 96 typedef INT (*lpHandleMessage)(int,const char*,const int,const char*); 97 97 typedef int (*lpUnLoadModule)(); … … 115 115 bool hasCommandHandler(void); 116 116 bool hasMessageHandler(void); 117 int handleCommand(const char *command, const unsigned int, char **arguments, char* returnBuffer, unsigned int returnBufferLen);117 NSCAPI::nagiosReturn handleCommand(const char *command, const unsigned int argLen, char **arguments, char* returnMessageBuffer, unsigned int returnMessageBufferLen, char* returnPerfBuffer, unsigned int returnPerfBufferLen); 118 118 void handleMessage(int msgType, const char* file, const int line, const char *message); 119 119 void unload(void); -
NSClient++.cpp
r2a94f3f r1eef1ee 220 220 * @return The result, empty string if no result 221 221 */ 222 int NSClientT::injectRAW(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen) {222 NSCAPI::nagiosReturn NSClientT::injectRAW(const char* command, const unsigned int argLen, char **argument, char *returnMessageBuffer, unsigned int returnMessageBufferLen, char *returnPerfBuffer, unsigned int returnPerfBufferLen) { 223 223 MutexLock lock(pluginMutex); 224 224 … … 228 228 for (plit = commandHandlers_.begin(); plit != commandHandlers_.end(); ++plit) { 229 229 try { 230 int c = (*plit)->handleCommand(command, argLen, argument, returnBuffer, returnBufferLen); 231 if (c == NSCAPI::handled) { // module handled the message "we are done..." 232 LOG_DEBUG_STD("Injected Result: " +(std::string) returnBuffer); 233 return c; 234 } else if (c == NSCAPI::isfalse) { // Module ignored the message 235 LOG_DEBUG("A module ignored this message"); 236 } else if (c == NSCAPI::invalidBufferLen) { // Buffer is to small 237 LOG_ERROR("Return buffer to small to handle this command."); 238 return c; 239 } else if (c == NSCAPI::isError) { // Error 240 LOG_ERROR("An error occured while handling this command."); 241 return c; 242 } else { // Something else went wrong... 243 LOG_ERROR_STD("Unknown error from handleCommand: " + strEx::itos(c)); 244 return c; 230 NSCAPI::nagiosReturn c = (*plit)->handleCommand(command, argLen, argument, returnMessageBuffer, returnMessageBufferLen, returnPerfBuffer, returnPerfBufferLen); 231 switch (c) { 232 case NSCAPI::returnInvalidBufferLen: 233 LOG_ERROR("Return buffer to small to handle this command."); 234 return c; 235 case NSCAPI::returnIgnored: 236 LOG_DEBUG("A module ignored this message"); 237 break; 238 case NSCAPI::returnOK: 239 case NSCAPI::returnWARN: 240 case NSCAPI::returnCRIT: 241 case NSCAPI::returnUNKNOWN: 242 LOG_DEBUG_STD("Injected Result: " +(std::string) returnMessageBuffer); 243 LOG_DEBUG_STD("Injected Performance Result: " +(std::string) returnPerfBuffer); 244 return c; 245 default: 246 LOG_ERROR_STD("Unknown error from handleCommand: " + strEx::itos(c)); 247 return c; 245 248 } 246 249 } catch(const NSPluginException& e) { 247 250 LOG_ERROR_STD("Exception raised: " + e.error_ + " in module: " + e.file_); 248 return NSCAPI:: isError;251 return NSCAPI::returnCRIT; 249 252 } 250 253 } 251 254 LOG_MESSAGE_STD("No handler for command: " + command); 252 return NSCAPI:: isfalse;255 return NSCAPI::returnIgnored; 253 256 } 254 257 /** … … 271 274 * ie. pair<int,string> 272 275 */ 276 /* 273 277 std::string NSClientT::execute(std::string password, std::string cmd, std::list<std::string> args) { 274 278 MutexLock lock(pluginMutex); … … 312 316 return ret; 313 317 } 318 */ 314 319 /** 315 320 * Report a message to all logging enabled modules. … … 372 377 373 378 374 intNSAPIGetSettingsString(const char* section, const char* key, const char* defaultValue, char* buffer, unsigned int bufLen) {375 return NSCHelper::wrapReturnString(buffer, bufLen, Settings::getInstance()->getString(section, key, defaultValue) );379 NSCAPI::errorReturn NSAPIGetSettingsString(const char* section, const char* key, const char* defaultValue, char* buffer, unsigned int bufLen) { 380 return NSCHelper::wrapReturnString(buffer, bufLen, Settings::getInstance()->getString(section, key, defaultValue), NSCAPI::isSuccess); 376 381 } 377 382 int NSAPIGetSettingsInt(const char* section, const char* key, int defaultValue) { 378 383 return Settings::getInstance()->getInt(section, key, defaultValue); 379 384 } 380 intNSAPIGetBasePath(char*buffer, unsigned int bufLen) {381 return NSCHelper::wrapReturnString(buffer, bufLen, mainClient.getBasePath() );382 } 383 intNSAPIGetApplicationName(char*buffer, unsigned int bufLen) {384 return NSCHelper::wrapReturnString(buffer, bufLen, SZAPPNAME );385 } 386 intNSAPIGetApplicationVersionStr(char*buffer, unsigned int bufLen) {387 return NSCHelper::wrapReturnString(buffer, bufLen, SZVERSION );385 NSCAPI::errorReturn NSAPIGetBasePath(char*buffer, unsigned int bufLen) { 386 return NSCHelper::wrapReturnString(buffer, bufLen, mainClient.getBasePath(), NSCAPI::isSuccess); 387 } 388 NSCAPI::errorReturn NSAPIGetApplicationName(char*buffer, unsigned int bufLen) { 389 return NSCHelper::wrapReturnString(buffer, bufLen, SZAPPNAME, NSCAPI::isSuccess); 390 } 391 NSCAPI::errorReturn NSAPIGetApplicationVersionStr(char*buffer, unsigned int bufLen) { 392 return NSCHelper::wrapReturnString(buffer, bufLen, SZVERSION, NSCAPI::isSuccess); 388 393 } 389 394 void NSAPIMessage(int msgType, const char* file, const int line, const char* message) { … … 393 398 serviceControll::Stop(SZSERVICENAME); 394 399 } 395 int NSAPIInject(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen) {396 return mainClient.injectRAW(command, argLen, argument, return Buffer, returnBufferLen);400 NSCAPI::nagiosReturn NSAPIInject(const char* command, const unsigned int argLen, char **argument, char *returnMessageBuffer, unsigned int returnMessageBufferLen, char *returnPerfBuffer, unsigned int returnPerfBufferLen) { 401 return mainClient.injectRAW(command, argLen, argument, returnMessageBuffer, returnMessageBufferLen, returnPerfBuffer, returnPerfBufferLen); 397 402 } 398 403 -
NSClient++.h
r2a94f3f r1eef1ee 59 59 static std::string getPassword(void); 60 60 std::string getBasePath(void); 61 int injectRAW(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen);61 NSCAPI::nagiosReturn injectRAW(const char* command, const unsigned int argLen, char **argument, char *returnMessageBuffer, unsigned int returnMessageBufferLen, char *returnPerfBuffer, unsigned int returnPerfBufferLen); 62 62 // std::string inject(const std::string buffer); 63 63 std::string execute(std::string password, std::string cmd, std::list<std::string> args); … … 83 83 84 84 LPVOID NSAPILoader(char*buffer); 85 intNSAPIGetApplicationName(char*buffer, unsigned int bufLen);86 intNSAPIGetBasePath(char*buffer, unsigned int bufLen);87 intNSAPIGetApplicationVersionStr(char*buffer, unsigned int bufLen);88 intNSAPIGetSettingsString(const char* section, const char* key, const char* defaultValue, char* buffer, unsigned int bufLen);85 NSCAPI::errorReturn NSAPIGetApplicationName(char*buffer, unsigned int bufLen); 86 NSCAPI::errorReturn NSAPIGetBasePath(char*buffer, unsigned int bufLen); 87 NSCAPI::errorReturn NSAPIGetApplicationVersionStr(char*buffer, unsigned int bufLen); 88 NSCAPI::errorReturn NSAPIGetSettingsString(const char* section, const char* key, const char* defaultValue, char* buffer, unsigned int bufLen); 89 89 int NSAPIGetSettingsInt(const char* section, const char* key, int defaultValue); 90 90 void NSAPIMessage(int msgType, const char* file, const int line, const char* message); 91 91 void NSAPIStopServer(void); 92 int NSAPIInject(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen);92 NSCAPI::nagiosReturn NSAPIInject(const char* command, const unsigned int argLen, char **argument, char *returnMessageBuffer, unsigned int returnMessageBufferLen, char *returnPerfBuffer, unsigned int returnPerfBufferLen); 93 93 94 94 ////////////////////////////////////////////////////////////////////////// -
changelog
r2a94f3f r1eef1ee 1 2005-03-20 MickeM 2 * Fundamental API changes (due to NRPE compatibility) 3 - HandleCommand has changed 4 - Inject has changed 5 - Most API calls have new "return codes" (typedef:ed INT to allow for return code compiler checks) 6 - A lot of the old return codes have changed 7 * Preliminary NRPE support (can parse and execute incoming requests, cant return data yet, and no encryption) 8 * New SimpleSocket in include/ will be used as base class for Listeners 9 * A lot of rewrite to the NSC API 10 1 11 2005-03-19 MickeM 2 12 * Refactored out NSCLient Listener as a separate module -
include/NSCAPI.h
r2a94f3f r1eef1ee 3 3 namespace NSCAPI { 4 4 5 typedef enum { 6 returnCRIT = 2, 7 returnOK = 0, 8 returnWARN = 1, 9 returnUNKNOWN = 4, 10 returnInvalidBufferLen = -2, 11 returnIgnored = -1 12 } nagiosReturn; 13 14 typedef enum { 15 istrue = 1, 16 isfalse = 0 17 } boolReturn; 18 19 typedef enum { 20 isSuccess = 1, 21 hasFailed = 0, 22 isInvalidBufferLen = -2 23 } errorReturn; 24 25 26 5 27 // Various Nagios codes 28 /* 6 29 const int returnCRIT = 2; 7 30 const int returnOK = 0; 8 31 const int returnWARN = 1; 9 32 const int returnUNKNOWN = 4; 10 typedef int returnCodes; 33 */ 34 // Various NSCP extensions 11 35 12 // Various Return codes 13 const int success = 1; // Everything went fine 14 const int failed = 0; // EVerything went to hell :) 15 const int istrue = 1; // Should be interpreted as "true" 16 const int isfalse = 0; // Should be interpreted as "false" 17 const int isError = -1; // Should be interpreted as "ERROR" 18 const int handled = 2; // The command was handled by this module 19 const int invalidBufferLen = -2;// The return buffer was to small (might wanna call again with a larger one) 36 // const int returnInvalidBufferLen = -2; // The return buffer was to small (might wanna call again with a larger one) 37 38 39 // typedef int returnCodes; 40 41 // Various function Return codes 42 // const int isSuccess = 1; // Everything went fine 43 // const int hasFailed = 0; // EVerything went to hell :) 44 // const int isTrue = 1; // Should be interpreted as "true" 45 // const int isFalse = 0; // Should be interpreted as "false" 46 // const int isError = -1; // Should be interpreted as "ERROR" 47 // const int handled = 2; // The command was handled by this module 20 48 21 49 // Various message Types -
include/NSCHelper.cpp
r2a94f3f r1eef1ee 7 7 8 8 /** 9 * Wrap a return string. 10 * This function copies a string to a char buffer making sure the buffer has the correct length. 11 * 12 * @param *buffer Buffer to copy the string to. 13 * @param bufLen Length of the buffer 14 * @param str Th string to copy 15 * @return NSCAPI::success unless the buffer is to short then it will be NSCAPI::invalidBufferLen 16 */ 17 int NSCHelper::wrapReturnString(char *buffer, unsigned int bufLen, std::string str, int defaultReturnCode /* = NSCAPI::success */) { 9 * Wrap a return string. 10 * This function copies a string to a char buffer making sure the buffer has the correct length. 11 * 12 * @param *buffer Buffer to copy the string to. 13 * @param bufLen Length of the buffer 14 * @param str Th string to copy 15 * @return NSCAPI::success unless the buffer is to short then it will be NSCAPI::invalidBufferLen 16 */ 17 /* 18 int NSCHelper::wrapReturnString(char *buffer, unsigned int bufLen, std::string str, int defaultReturnCode ) { 19 // @todo deprecate this 18 20 if (str.length() >= bufLen) 19 return NSCAPI::invalidBufferLen; 21 return -1; 22 strncpy(buffer, str.c_str(), bufLen); 23 return defaultReturnCode; 24 } 25 */ 26 NSCAPI::nagiosReturn NSCHelper::wrapReturnString(char *buffer, unsigned int bufLen, std::string str, NSCAPI::nagiosReturn defaultReturnCode /* = NSCAPI::success */) { 27 if (str.length() >= bufLen) 28 return NSCAPI::returnInvalidBufferLen; 29 strncpy(buffer, str.c_str(), bufLen); 30 return defaultReturnCode; 31 } 32 NSCAPI::errorReturn NSCHelper::wrapReturnString(char *buffer, unsigned int bufLen, std::string str, NSCAPI::errorReturn defaultReturnCode /* = NSCAPI::success */) { 33 if (str.length() >= bufLen) 34 return NSCAPI::isInvalidBufferLen; 20 35 strncpy(buffer, str.c_str(), bufLen); 21 36 return defaultReturnCode; … … 149 164 return "unknown"; 150 165 } 151 std::string NSCHelper::translateReturn(NSCAPI:: returnCodesreturnCode) {166 std::string NSCHelper::translateReturn(NSCAPI::nagiosReturn returnCode) { 152 167 if (returnCode == NSCAPI::returnOK) 153 168 return "OK"; … … 197 212 * @throws NSCMHExcpetion When core pointer set is unavailable or an unknown inject error occurs. 198 213 */ 199 intNSCModuleHelper::InjectCommandRAW(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen)214 NSCAPI::nagiosReturn NSCModuleHelper::InjectCommandRAW(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen) 200 215 { 201 216 if (!fNSAPIInject) … … 203 218 return fNSAPIInject(command, argLen, argument, returnBuffer, returnBufferLen); 204 219 } 205 std::string NSCModuleHelper::InjectCommand(const char* command, const unsigned int argLen, char **argument)220 NSCAPI::nagiosReturn NSCModuleHelper::InjectCommand(const char* command, const unsigned int argLen, char **argument, std::string & message, std::string & perf) 206 221 { 207 222 if (!fNSAPIInject) … … 209 224 char *buffer = new char[BUFF_LEN+1]; 210 225 buffer[0] = 0; 211 std::string ret; 212 int err; 213 if ((err = InjectCommandRAW(command, argLen, argument, buffer, BUFF_LEN)) != NSCAPI::handled) { 214 if (err == NSCAPI::invalidBufferLen) 226 // @todo message here ! 227 NSCAPI::nagiosReturn retC = InjectCommandRAW(command, argLen, argument, buffer, BUFF_LEN); 228 switch (retC) { 229 case NSCAPI::returnIgnored: 230 NSC_LOG_MESSAGE("No handler for this message."); 231 break; 232 case NSCAPI::returnInvalidBufferLen: 215 233 NSC_LOG_ERROR("Inject command resulted in an invalid buffer size."); 216 else if (err == NSCAPI::isfalse) 217 NSC_LOG_MESSAGE("No handler for this message."); 218 else 234 break; 235 case NSCAPI::returnOK: 236 case NSCAPI::returnCRIT: 237 case NSCAPI::returnWARN: 238 case NSCAPI::returnUNKNOWN: 239 message = buffer; 240 // @todo perf data 241 break; 242 default: 219 243 throw NSCMHExcpetion("Unknown inject error."); 220 } else {221 ret = buffer;222 244 } 223 245 delete [] buffer; 224 return ret ;246 return retC; 225 247 } 226 248 /** … … 233 255 * @return The result of the command 234 256 */ 235 std::string NSCModuleHelper::InjectSplitAndCommand(const char* command, char* buffer, char splitChar)257 NSCAPI::nagiosReturn NSCModuleHelper::InjectSplitAndCommand(const char* command, char* buffer, char splitChar, std::string & message, std::string & perf) 236 258 { 237 259 if (!fNSAPIInject) … … 243 265 else 244 266 aBuffer= NSCHelper::createEmptyArrayBuffer(argLen); 245 std::string s = InjectCommand(command, argLen, aBuffer);267 NSCAPI::nagiosReturn ret = InjectCommand(command, argLen, aBuffer, message, perf); 246 268 NSCHelper::destroyArrayBuffer(aBuffer, argLen); 247 return s;269 return ret; 248 270 } 249 271 /** … … 269 291 throw NSCMHExcpetion("NSCore has not been initiated..."); 270 292 char *buffer = new char[BUFF_LEN+1]; 271 if (fNSAPIGetSettingsString(section.c_str(), key.c_str(), defaultValue.c_str(), buffer, BUFF_LEN) != NSCAPI:: success) {293 if (fNSAPIGetSettingsString(section.c_str(), key.c_str(), defaultValue.c_str(), buffer, BUFF_LEN) != NSCAPI::isSuccess) { 272 294 delete [] buffer; 273 295 throw NSCMHExcpetion("Settings could not be retrieved."); … … 301 323 throw NSCMHExcpetion("NSCore has not been initiated..."); 302 324 char *buffer = new char[BUFF_LEN+1]; 303 if (fNSAPIGetApplicationName(buffer, BUFF_LEN) != NSCAPI:: success) {325 if (fNSAPIGetApplicationName(buffer, BUFF_LEN) != NSCAPI::isSuccess) { 304 326 delete [] buffer; 305 327 throw NSCMHExcpetion("Application name could not be retrieved"); … … 318 340 throw NSCMHExcpetion("NSCore has not been initiated..."); 319 341 char *buffer = new char[BUFF_LEN+1]; 320 if (fNSAPIGetBasePath(buffer, BUFF_LEN) != NSCAPI:: success) {342 if (fNSAPIGetBasePath(buffer, BUFF_LEN) != NSCAPI::isSuccess) { 321 343 delete [] buffer; 322 344 throw NSCMHExcpetion("Base path could not be retrieved"); … … 390 412 NSCModuleHelper::fNSAPIInject = (NSCModuleHelper::lpNSAPIInject)f("NSAPIInject"); 391 413 NSCModuleHelper::fNSAPIGetBasePath = (NSCModuleHelper::lpNSAPIGetBasePath)f("NSAPIGetBasePath"); 392 return NSCAPI:: success;414 return NSCAPI::isSuccess; 393 415 } 394 416 /** … … 399 421 * @return buffer copy status 400 422 */ 401 intNSCModuleWrapper::wrapGetModuleName(char* buf, unsigned int bufLen, std::string str) {402 return NSCHelper::wrapReturnString(buf, bufLen, str );423 NSCAPI::errorReturn NSCModuleWrapper::wrapGetModuleName(char* buf, unsigned int bufLen, std::string str) { 424 return NSCHelper::wrapReturnString(buf, bufLen, str, NSCAPI::isSuccess); 403 425 } 404 426 /** … … 410 432 * @return NSCAPI::success 411 433 */ 412 intNSCModuleWrapper::wrapGetModuleVersion(int *major, int *minor, int *revision, module_version version) {434 NSCAPI::errorReturn NSCModuleWrapper::wrapGetModuleVersion(int *major, int *minor, int *revision, module_version version) { 413 435 *major = version.major; 414 436 *minor = version.minor; 415 437 *revision = version.revision; 416 return NSCAPI:: success;438 return NSCAPI::isSuccess; 417 439 } 418 440 /** … … 421 443 * @return NSCAPI::istrue or NSCAPI::isfalse 422 444 */ 423 intNSCModuleWrapper::wrapHasCommandHandler(bool has) {445 NSCAPI::boolReturn NSCModuleWrapper::wrapHasCommandHandler(bool has) { 424 446 if (has) 425 447 return NSCAPI::istrue; … … 431 453 * @return NSCAPI::istrue or NSCAPI::isfalse 432 454 */ 433 intNSCModuleWrapper::wrapHasMessageHandler(bool has) {455 NSCAPI::boolReturn NSCModuleWrapper::wrapHasMessageHandler(bool has) { 434 456 if (has) 435 457 return NSCAPI::istrue; … … 443 465 * @return copy status or NSCAPI::isfalse if retStr is empty 444 466 */ 445 int NSCModuleWrapper::wrapHandleCommand(const std::string retStr, char *returnBuffer, unsigned int returnBufferLen) { 446 if (retStr.empty()) 447 return NSCAPI::isfalse; 448 return NSCHelper::wrapReturnString(returnBuffer, returnBufferLen, retStr, NSCAPI::handled); 467 NSCAPI::nagiosReturn NSCModuleWrapper::wrapHandleCommand(NSCAPI::nagiosReturn retResult, const std::string retMessage, const std::string retPerformance, char *returnBufferMessage, unsigned int returnBufferMessageLen, char *returnBufferPerf, unsigned int returnBufferPerfLen) { 468 if (retMessage.empty()) 469 return NSCAPI::returnIgnored; 470 NSCAPI::nagiosReturn ret = NSCHelper::wrapReturnString(returnBufferMessage, returnBufferMessageLen, retMessage, retResult); 471 return NSCHelper::wrapReturnString(returnBufferPerf, returnBufferPerfLen, retPerformance, ret); 449 472 } 450 473 /** … … 455 478 int NSCModuleWrapper::wrapLoadModule(bool success) { 456 479 if (success) 457 return NSCAPI:: success;458 return NSCAPI:: failed;480 return NSCAPI::isSuccess; 481 return NSCAPI::hasFailed; 459 482 } 460 483 /** … … 465 488 int NSCModuleWrapper::wrapUnloadModule(bool success) { 466 489 if (success) 467 return NSCAPI:: success;468 return NSCAPI:: failed;469 } 470 471 472 490 return NSCAPI::isSuccess; 491 return NSCAPI::hasFailed; 492 } 493 494 495 -
include/NSCHelper.h
r2a94f3f r1eef1ee 9 9 namespace NSCHelper 10 10 { 11 int wrapReturnString(char *buffer, unsigned int bufLen, std::string str, int defaultReturnCode = NSCAPI::success); 11 // int wrapReturnString(char *buffer, unsigned int bufLen, std::string str, int defaultReturnCode); 12 NSCAPI::nagiosReturn wrapReturnString(char *buffer, unsigned int bufLen, std::string str, NSCAPI::nagiosReturn defaultReturnCode); 13 NSCAPI::errorReturn wrapReturnString(char *buffer, unsigned int bufLen, std::string str, NSCAPI::errorReturn defaultReturnCode); 12 14 13 15 std::list<std::string> arrayBuffer2list(const unsigned int argLen, char **argument); … … 19 21 20 22 std::string translateMessageType(NSCAPI::messageTypes msgType); 21 std::string translateReturn(NSCAPI::returnCodes returnCode); 22 inline std::string returnNSCP(NSCAPI::returnCodes returnCode, std::string str) { 23 return translateReturn(returnCode) + "&" + str; 24 } 23 std::string translateReturn(NSCAPI::nagiosReturn returnCode); 25 24 26 25 /* … … 53 52 54 53 55 inline void escalteReturnCode(NSCAPI:: returnCodes ¤tReturnCode, NSCAPI::returnCodesnewReturnCode) {54 inline void escalteReturnCode(NSCAPI::nagiosReturn ¤tReturnCode, NSCAPI::nagiosReturn newReturnCode) { 56 55 if (newReturnCode == NSCAPI::returnCRIT) 57 56 currentReturnCode = NSCAPI::returnCRIT; … … 63 62 currentReturnCode = NSCAPI::returnUNKNOWN; 64 63 } 65 inline void escalteReturnCodeToCRIT(NSCAPI:: returnCodes¤tReturnCode) {64 inline void escalteReturnCodeToCRIT(NSCAPI::nagiosReturn ¤tReturnCode) { 66 65 currentReturnCode = NSCAPI::returnCRIT; 67 66 } 68 inline void escalteReturnCodeToWARN(NSCAPI:: returnCodes¤tReturnCode) {67 inline void escalteReturnCodeToWARN(NSCAPI::nagiosReturn ¤tReturnCode) { 69 68 if (currentReturnCode != NSCAPI::returnCRIT) 70 69 currentReturnCode = NSCAPI::returnWARN; … … 81 80 }; 82 81 // Types for the Callbacks into the main program 83 typedef int(*lpNSAPIGetBasePath)(char*,unsigned int);84 typedef int(*lpNSAPIGetApplicationName)(char*,unsigned int);85 typedef int(*lpNSAPIGetApplicationVersionStr)(char*,unsigned int);86 typedef int(*lpNSAPIGetSettingsString)(const char*,const char*,const char*,char*,unsigned int);87 typedef int(*lpNSAPIGetSettingsInt)(const char*, const char*, int);82 typedef NSCAPI::errorReturn (*lpNSAPIGetBasePath)(char*,unsigned int); 83 typedef NSCAPI::errorReturn (*lpNSAPIGetApplicationName)(char*,unsigned int); 84 typedef NSCAPI::errorReturn (*lpNSAPIGetApplicationVersionStr)(char*,unsigned int); 85 typedef NSCAPI::errorReturn (*lpNSAPIGetSettingsString)(const char*,const char*,const char*,char*,unsigned int); 86 typedef NSCAPI::errorReturn (*lpNSAPIGetSettingsInt)(const char*, const char*, int); 88 87 typedef void (*lpNSAPIMessage)(int, const char*, const int, const char*); 89 typedef int(*lpNSAPIStopServer)(void);90 typedef int(*lpNSAPIInject)(const char*, const unsigned int, char **, char *, unsigned int );88 typedef NSCAPI::errorReturn (*lpNSAPIStopServer)(void); 89 typedef NSCAPI::nagiosReturn (*lpNSAPIInject)(const char*, const unsigned int, char **, char *, unsigned int ); 91 90 typedef LPVOID (*lpNSAPILoader)(char*); 92 91 … … 97 96 int getSettingsInt(std::string section, std::string key, int defaultValue); 98 97 void Message(int msgType, std::string file, int line, std::string message); 99 intInjectCommandRAW(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen);100 std::string InjectCommand(const char* command, const unsigned int argLen, char **argument);101 std::string InjectSplitAndCommand(const char* command, char* buffer, char splitChar = '&');98 NSCAPI::nagiosReturn InjectCommandRAW(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen); 99 NSCAPI::nagiosReturn InjectCommand(const char* command, const unsigned int argLen, char **argument, std::string & message, std::string & perf); 100 NSCAPI::nagiosReturn InjectSplitAndCommand(const char* command, char* buffer, char splitChar, std::string & message, std::string & perf); 102 101 void StopService(void); 103 102 std::string getBasePath(); … … 115 114 116 115 int wrapModuleHelperInit(NSCModuleHelper::lpNSAPILoader f);; 117 intwrapGetModuleName(char* buf, unsigned int buflen, std::string str);116 NSCAPI::errorReturn wrapGetModuleName(char* buf, unsigned int buflen, std::string str); 118 117 int wrapLoadModule(bool success); 119 intwrapGetModuleVersion(int *major, int *minor, int *revision, module_version version);120 intwrapHasCommandHandler(bool has);121 intwrapHasMessageHandler(bool has);118 NSCAPI::errorReturn wrapGetModuleVersion(int *major, int *minor, int *revision, module_version version); 119 NSCAPI::boolReturn wrapHasCommandHandler(bool has); 120 NSCAPI::boolReturn wrapHasMessageHandler(bool has); 122 121 int wrapUnloadModule(bool success); 123 int wrapHandleCommand(const std::string retStr, char *returnBuffer, unsigned int returnBufferLen);122 NSCAPI::nagiosReturn wrapHandleCommand(NSCAPI::nagiosReturn retResult, const std::string retMessage, const std::string retPerformance, char *returnBufferMessage, unsigned int returnBufferMessageLen, char *returnBufferPerf, unsigned int returnBufferPerfLen); 124 123 } 125 124 … … 131 130 extern int NSGetModuleName(char* buf, int buflen); \ 132 131 extern int NSGetModuleVersion(int *major, int *minor, int *revision); \ 133 extern intNSHasCommandHandler(); \134 extern intNSHasMessageHandler(); \132 extern NSCAPI::boolReturn NSHasCommandHandler(); \ 133 extern NSCAPI::boolReturn NSHasMessageHandler(); \ 135 134 extern void NSHandleMessage(int msgType, char* file, int line, char* message); \ 136 extern int NSHandleCommand(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen); \ 135 extern NSCAPI::nagiosReturn NSHandleCommand(const char* IN_cmd, const unsigned int IN_argsLen, char **IN_args, \ 136 char *OUT_retBufMessage, unsigned int IN_retBufMessageLen, char *OUT_retBufPerf, unsigned int IN_retBufPerfLen); \ 137 137 extern int NSUnloadModule(); 138 138 … … 178 178 toObject.handleMessage(msgType, file, line, message); \ 179 179 } \ 180 extern intNSHasMessageHandler() { \180 extern NSCAPI::boolReturn NSHasMessageHandler() { \ 181 181 return NSCModuleWrapper::wrapHasMessageHandler(toObject.hasMessageHandler()); \ 182 182 } 183 183 #define NSC_WRAPPERS_IGNORE_MSG_DEF() \ 184 184 extern void NSHandleMessage(int msgType, char* file, int line, char* message) {} \ 185 extern intNSHasMessageHandler() { return NSCAPI::isfalse; }185 extern NSCAPI::boolReturn NSHasMessageHandler() { return NSCAPI::isfalse; } 186 186 #define NSC_WRAPPERS_HANDLE_CMD_DEF(toObject) \ 187 extern int NSHandleCommand(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen) { \ 188 return NSCModuleWrapper::wrapHandleCommand(toObject.handleCommand(command, argLen, argument), returnBuffer, returnBufferLen); \ 189 } \ 190 extern int NSHasCommandHandler() { \ 187 extern NSCAPI::nagiosReturn NSHandleCommand(const char* IN_cmd, const unsigned int IN_argsLen, char **IN_args, \ 188 char *OUT_retBufMessage, unsigned int IN_retBufMessageLen, char *OUT_retBufPerf, unsigned int IN_retBufPerfLen) \ 189 { \ 190 std::string message, perf; \ 191 NSCAPI::nagiosReturn retCode = toObject.handleCommand(IN_cmd, IN_argsLen, IN_args, message, perf); \ 192 return NSCModuleWrapper::wrapHandleCommand(retCode, message, perf, OUT_retBufMessage, IN_retBufMessageLen, OUT_retBufPerf, IN_retBufPerfLen); \ 193 } \ 194 extern NSCAPI::boolReturn NSHasCommandHandler() { \ 191 195 return NSCModuleWrapper::wrapHasCommandHandler(toObject.hasCommandHandler()); \ 192 196 } 193 197 #define NSC_WRAPPERS_IGNORE_CMD_DEF() \ 194 extern int NSHandleCommand(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen) { \ 195 return NSCAPI::failed; \ 196 } \ 197 extern int NSHasCommandHandler() { return NSCAPI::isfalse; } 198 extern NSCAPI::nagiosReturn NSHandleCommand(const char* IN_cmd, const unsigned int IN_argsLen, char **IN_args, \ 199 char *OUT_retBufMessage, unsigned int IN_retBufMessageLen, char *OUT_retBufPerf, unsigned int IN_retBufPerfLen) { \ 200 return NSCAPI::returnIgnored; \ 201 } \ 202 extern NSCAPI::boolReturn NSHasCommandHandler() { return NSCAPI::isfalse; } -
modules/CheckDisk/CheckDisk.cpp
r8223547 r1eef1ee 82 82 } 83 83 84 std::string CheckDisk::CheckFileSize(const unsigned int argLen, char **char_args) {84 NSCAPI::nagiosReturn CheckDisk::CheckFileSize(const unsigned int argLen, char **char_args, std::string &message, std::string &perf) { 85 85 // CheckFileSize 86 86 // request: CheckFileSize&<option>&<option>... … … 108 108 // WIN: 1G (2110962363B)|WIN:2110962363:1073741824:4294967296 109 109 NSC_DEBUG_MSG("CheckFileSize"); 110 std::string perfData; 111 std::string ret; 112 NSCAPI::returnCodes returnCode = NSCAPI::returnOK; 110 NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 113 111 std::list<std::string> args = NSCHelper::arrayBuffer2list(argLen, char_args); 114 if (args.empty()) 115 return "Missing argument(s)."; 112 if (args.empty()) { 113 message = "Missing argument(s)."; 114 return NSCAPI::returnCRIT; 115 } 116 116 long long maxWarn = 0; 117 117 long long maxCrit = 0; … … 142 142 paths.push_back(std::pair<std::string,std::string>(p2.second,p.second)); 143 143 } else { 144 return "Unknown command: " + p.first; 144 message = "Unknown command: " + p.first; 145 return NSCAPI::returnCRIT; 145 146 } 146 147 } else { 147 return "Unknown command: " + p.first; 148 message = "Unknown command: " + p.first; 149 return NSCAPI::returnCRIT; 148 150 } 149 151 } … … 177 179 } 178 180 if (!(*pit).first.empty()) 179 perf Data+= (*pit).first + "=" + strEx::itos(sizeFinder.getSize()) + ";" + strEx::itos(maxWarn) + ";" + strEx::itos(maxCrit) + " ";180 if (! ret.empty() && !tstr.empty())181 ret+= ", ";181 perf += (*pit).first + "=" + strEx::itos(sizeFinder.getSize()) + ";" + strEx::itos(maxWarn) + ";" + strEx::itos(maxCrit) + " "; 182 if (!message.empty() && !tstr.empty()) 183 message += ", "; 182 184 if (!tstr.empty()) 183 ret += tstr; 184 } 185 if (ret.empty()) 186 ret = "OK all file sizes are within bounds."; 187 if (!perfData.empty()) 188 ret += "|" + perfData; 189 return NSCHelper::returnNSCP(returnCode, ret); 185 message += tstr; 186 } 187 if (message.empty()) 188 message = "OK all file sizes are within bounds."; 189 return returnCode; 190 190 } 191 191 … … 193 193 #define BUFFER_SIZE 1024*64 194 194 195 std::string CheckDisk::handleCommand(const std::string command, const unsigned int argLen, char **char_args) {195 NSCAPI::nagiosReturn CheckDisk::handleCommand(const std::string command, const unsigned int argLen, char **char_args, std::string &msg, std::string &perf) { 196 196 if (command == "CheckFileSize") { 197 return CheckFileSize(argLen, char_args );197 return CheckFileSize(argLen, char_args, msg, perf); 198 198 // } else if (command == "CheckFileDate") { 199 199 } 200 return "";200 return NSCAPI::returnIgnored; 201 201 } 202 202 -
modules/CheckDisk/CheckDisk.h
r36c340d r1eef1ee 14 14 bool hasCommandHandler(); 15 15 bool hasMessageHandler(); 16 std::string handleCommand(const std::string command, const unsigned int argLen, char **args);16 NSCAPI::nagiosReturn handleCommand(const std::string command, const unsigned int argLen, char **char_args, std::string &message, std::string &perf); 17 17 18 18 // Check commands 19 std::string CheckFileSize(const unsigned int argLen, char **char_args);19 NSCAPI::nagiosReturn CheckFileSize(const unsigned int argLen, char **char_args, std::string &message, std::string &perf); 20 20 }; -
modules/CheckEventLog/CheckEventLog.cpp
r8223547 r1eef1ee 296 296 #define BUFFER_SIZE 1024*64 297 297 298 std::string CheckEventLog::handleCommand(const std::string command, const unsigned int argLen, char **char_args) {298 NSCAPI::nagiosReturn CheckEventLog::handleCommand(const std::string command, const unsigned int argLen, char **char_args, std::string &message, std::string &perf) { 299 299 if (command != "CheckEventLog") 300 return "";301 NSCAPI:: returnCodesrCode = NSCAPI::returnOK;300 return NSCAPI::returnIgnored; 301 NSCAPI::nagiosReturn rCode = NSCAPI::returnOK; 302 302 std::list<std::string> args = NSCHelper::arrayBuffer2list(argLen, char_args); 303 if (args.size() < 2) 304 return "Missing argument"; 303 if (args.size() < 2) { 304 message = "Missing argument"; 305 return NSCAPI::returnCRIT; 306 } 305 307 std::string ret; 306 308 bool critical = false; … … 310 312 buildQury(query, args); 311 313 } catch (std::string s) { 312 return NSCHelper::returnNSCP(NSCAPI::returnUNKNOWN, s); 314 message = s; 315 return NSCAPI::returnCRIT; 313 316 } 314 317 NSC_DEBUG_MSG_STD("Base query: " + query.toString()); 315 318 316 319 HANDLE hLog = OpenEventLog(NULL, logFile.c_str()); 317 if (hLog == NULL) 318 return NSCHelper::returnNSCP(NSCAPI::returnUNKNOWN, "Could not open the Application event log."); 320 if (hLog == NULL) { 321 message = "Could not open the Application event log."; 322 return NSCAPI::returnUNKNOWN; 323 } 319 324 320 325 DWORD dwThisRecord, dwRead, dwNeeded; … … 403 408 if (query.truncate != 0) 404 409 ret = ret.substr(0, query.truncate); 405 return NSCHelper::returnNSCP(rCode, ret); 410 message = ret; 411 return rCode; 406 412 } 407 413 -
modules/CheckEventLog/CheckEventLog.h
ra0528c4 r1eef1ee 14 14 bool hasCommandHandler(); 15 15 bool hasMessageHandler(); 16 std::string handleCommand(const std::string command, const unsigned int argLen, char **args);16 NSCAPI::nagiosReturn handleCommand(const std::string command, const unsigned int argLen, char **char_args, std::string &message, std::string &perf); 17 17 }; -
modules/NRPEListener/NRPEListener.cpp
r2a94f3f r1eef1ee 22 22 23 23 bool NRPEListener::loadModule() { 24 socketThreadManager.createThread(NULL); 24 25 return true; 25 26 } 26 27 bool NRPEListener::unloadModule() { 28 socketThreadManager.exitThread(); 27 29 return true; 28 30 } … … 44 46 45 47 46 std::string NRPEListener::handleCommand(const std::string command, const unsigned int argLen, char **char_args) {47 return "";48 NSCAPI::nagiosReturn NRPEListener::handleCommand(const std::string command, const unsigned int argLen, char **char_args, std::string &message, std::string &perf) { 49 return NSCAPI::returnIgnored; 48 50 } 49 51 -
modules/NRPEListener/NRPEListener.h
r2a94f3f r1eef1ee 1 1 NSC_WRAPPERS_MAIN(); 2 3 4 #include "NRPESocket.h" 5 #include <Socket.h> 2 6 3 7 class NRPEListener { 4 8 private: 9 NRPESocketThread socketThreadManager; 5 10 6 11 public: … … 14 19 bool hasCommandHandler(); 15 20 bool hasMessageHandler(); 16 std::string handleCommand(const std::string command, const unsigned int argLen, char **args);21 NSCAPI::nagiosReturn handleCommand(const std::string command, const unsigned int argLen, char **char_args, std::string &message, std::string &perf); 17 22 }; 23 -
modules/NRPEListener/NRPEListener.vcproj
r2a94f3f r1eef1ee 134 134 </File> 135 135 <File 136 RelativePath="..\..\include\Socket.cpp"> 137 </File> 138 <File 136 139 RelativePath=".\stdafx.cpp"> 137 140 <FileConfiguration … … 166 169 </File> 167 170 <File 171 RelativePath="..\..\include\Socket.h"> 172 </File> 173 <File 168 174 RelativePath=".\stdafx.h"> 169 175 </File> -
modules/NRPEListener/NRPESocket.cpp
r2a94f3f r1eef1ee 6 6 * Default c-tor 7 7 */ 8 NRPESocket::NRPESocket(): hStopEvent(NULL) {8 NRPESocket::NRPESocket(): SimpleSocketListsner(DEFAULT_NRPE_PORT) { 9 9 } 10 10 … … 12 12 } 13 13 14 typedef short int16_t; 15 typedef unsigned long u_int32_t; 14 16 15 /** 16 * Thread procedure for the socket listener 17 * @param lpParameter Potential argument to the thread proc. 18 * @return thread exit status 19 * @todo This needs to be reworked, possibly completely redone ? 20 */ 21 DWORD NRPESocket::threadProc(LPVOID lpParameter) 22 { 23 hStopEvent = CreateEvent(NULL, TRUE, FALSE, NULL); 24 if (!hStopEvent) { 25 NSC_LOG_ERROR_STD("Create StopEvent failed: " + strEx::itos(GetLastError())); 26 return 0; 27 } 17 typedef struct packet_struct{ 18 int16_t packet_version; 19 int16_t packet_type; 20 u_int32_t crc32_value; 21 int16_t result_code; 22 char buffer[1024]; 23 }packet; 28 24 29 WSADATA wsaData; 30 sockaddr_in local; 31 int wsaret=WSAStartup(0x101,&wsaData); 32 if(wsaret!=0) { 33 NSC_LOG_ERROR_STD("WSA Startup failed: " + strEx::itos(wsaret)); 34 return 0; 35 } 25 void NRPESocket::onAccept(SOCKET client) { 26 NSC_DEBUG_MSG("Accepting connection from remote host"); 36 27 37 local.sin_family=AF_INET; 38 local.sin_addr.s_addr=INADDR_ANY; 39 local.sin_port=htons(static_cast<u_short>(NSCModuleHelper::getSettingsInt("NRPE", "port", DEFAULT_NRPE_PORT))); 40 server=socket(AF_INET,SOCK_STREAM,0); 41 if(server==INVALID_SOCKET) { 42 WSACleanup(); 43 NSC_LOG_ERROR_STD("Could not create listening socket: " + strEx::itos(GetLastError())); 44 return 0; 45 } 28 SimpleSocketListsner::readAllDataBlock block = SimpleSocketListsner::readAll(client); 29 packet *p = reinterpret_cast<packet*>(block.first); 30 /* 31 char* foo = new char[1024]; 32 sprintf(foo, "packet_version = %d, packet_type = %d, crc32 = %d, result_code = %d", 33 ntohs(p->packet_version), ntohs(p->packet_type), ntohl(p->crc32_value), ntohs(p->result_code)); 46 34 47 if(bind(server,(sockaddr*)&local,sizeof(local))!=0) { 48 closesocket(server); 49 WSACleanup(); 50 NSC_LOG_ERROR_STD("Could not bind socket: " + strEx::itos(GetLastError())); 51 return 0; 52 } 35 NSC_DEBUG_MSG_STD("Incoming header: " + foo); 36 */ 37 // @todo Verify versions and stuff, and ofcource add SSL (but thats in the future :) 38 NSC_DEBUG_MSG_STD("Incoming data: " + p->buffer); 53 39 54 if(listen(server,10)!=0) { 55 closesocket(server); 56 WSACleanup(); 57 NSC_LOG_ERROR_STD("Could not open socket: " + strEx::itos(GetLastError())); 58 return 0; 59 } 40 charEx::token cmd = charEx::getToken(p->buffer, '!'); 41 std::string msg, perf; 42 NSCModuleHelper::InjectSplitAndCommand(cmd.first.c_str(), cmd.second, '!', msg, perf); 60 43 61 SOCKET client; 62 sockaddr_in from; 63 int fromlen=sizeof(from); 64 #define RECV_BUFFER_LEN 1024 65 while (!(WaitForSingleObject(hStopEvent, 100) == WAIT_OBJECT_0)) { 66 client=accept(server, (struct sockaddr*)&from,&fromlen); 67 if (client != INVALID_SOCKET) { 68 char *buff = new char[RECV_BUFFER_LEN+1]; 69 int n=recv(client,buff,RECV_BUFFER_LEN,0); 70 if ((n!=SOCKET_ERROR )&&(n > 0)&&(n < RECV_BUFFER_LEN)) { 71 buff[n] = '\0'; 72 NSC_DEBUG_MSG("Incoming data: "); 73 NSC_DEBUG_MSG(buff); 74 std::string ret = "fool"; //parseCommand(buff); 75 NSC_DEBUG_MSG("Outgoing data: "); 76 NSC_DEBUG_MSG(ret.c_str()); 77 send(client, ret.c_str(), ret.length(), 0); 78 } else { 79 std::string str = "ERROR: Unknown socket error"; 80 send(client,str.c_str(),str.length(),0); 81 } 82 delete [] buff; 83 closesocket(client); 84 } 85 } 86 closesocket(server); 87 WSACleanup(); 88 NSC_DEBUG_MSG("Socket closed!"); 89 return 0; 44 delete [] block.first; 45 closesocket(client); 90 46 } 91 47 92 /**93 * Exit thread callback proc.94 * This is called by the thread manager when the thread should initiate a shutdown procedure.95 * The thread manager is responsible for waiting for the actual termination of the thread.96 */97 void NRPESocket::exitThread(void) {98 NSC_DEBUG_MSG("Requesting shutdown!");99 if (!SetEvent(hStopEvent)) {100 NSC_LOG_ERROR_STD("SetStopEvent failed");101 }102 } -
modules/NRPEListener/NRPESocket.h
r2a94f3f r1eef1ee 4 4 #include <Mutex.h> 5 5 #include <WinSock2.h> 6 #include <Socket.h> 6 7 /** 7 8 * @ingroup NSClient++ … … 28 29 * 29 30 */ 30 class NRPESocket { 31 32 #define DEFAULT_NRPE_PORT 5666 33 34 35 class NRPESocket : public SimpleSocketListsner { 31 36 private: 32 MutexHandler mutexHandler;33 SOCKET server;34 HANDLE hStopEvent;35 37 36 38 public: 37 39 NRPESocket(); 38 40 virtual ~NRPESocket(); 39 DWORD threadProc(LPVOID lpParameter);40 void exitThread(void);41 41 42 42 private: 43 bool isRunning(void); 44 void stopRunning(void); 45 void startRunning(void); 46 std::list<std::string> split(char* buffer); 47 std::string parseCommand(char* request); 43 virtual void onAccept(SOCKET client); 48 44 }; 49 #define DEFAULT_NRPE_PORT 566650 51 45 52 46 -
modules/NSClientCompat/NSClientCompat.cpp
r8223547 r1eef1ee 107 107 * @return 108 108 */ 109 std::string NSClientCompat::handleCommand(const std::string command, const unsigned int argLen, char **args) {109 NSCAPI::nagiosReturn NSClientCompat::handleCommand(const std::string command, const unsigned int argLen, char **char_args, std::string &msg, std::string &perf) { 110 110 std::list<std::string> stl_args; 111 111 int id = atoi(command.c_str()); 112 112 if (id == 0) 113 return "";113 return NSCAPI::returnIgnored; 114 114 switch (id) { 115 115 case REQ_CLIENTVERSION: 116 116 { 117 std::string version= NSCModuleHelper::getSettingsString("nsclient compat", "version", "modern");118 if ( version== "modern")119 returnNSCModuleHelper::getApplicationName() + " " + NSCModuleHelper::getApplicationVersionString();120 return version;117 std::string msg = NSCModuleHelper::getSettingsString("nsclient compat", "version", "modern"); 118 if (msg == "modern") 119 msg = NSCModuleHelper::getApplicationName() + " " + NSCModuleHelper::getApplicationVersionString(); 120 return NSCAPI::returnOK; 121 121 } 122 122 case REQ_UPTIME: 123 return strEx::itos(pdhCollector->getUptime()); 123 msg= strEx::itos(pdhCollector->getUptime()); 124 return NSCAPI::returnOK; 124 125 125 126 case REQ_CPULOAD: 126 127 { 127 stl_args = NSCHelper::arrayBuffer2list(argLen, args); 128 if (stl_args.empty()) 129 return "ERROR: Missing argument exception."; 130 std::string ret; 128 stl_args = NSCHelper::arrayBuffer2list(argLen, char_args); 129 if (stl_args.empty()) { 130 msg = "ERROR: Missing argument exception."; 131 return NSCAPI::returnCRIT; 132 } 131 133 while (!stl_args.empty()) { 132 134 std::string s = stl_args.front(); stl_args.pop_front(); 133 135 int v = pdhCollector->getCPUAvrage(strEx::stoi(s)*(60/CHECK_INTERVAL)); 134 if (v == -1) 135 return ret; 136 if (!ret.empty()) 137 ret += "&"; 138 ret += strEx::itos(v); 136 if (v == -1) { 137 return NSCAPI::returnOK; 138 } 139 if (!msg.empty()) 140 msg += "&"; 141 msg += strEx::itos(v); 139 142 } 140 return ret;143 return NSCAPI::returnOK; 141 144 } 145 /* 142 146 case REQ_SERVICESTATE: 143 147 return NSCommands::serviceState(NSCHelper::arrayBuffer2list(argLen, args)); … … 152 156 case REQ_USEDDISKSPACE: 153 157 return NSCommands::usedDiskSpace(NSCHelper::arrayBuffer2list(argLen, args)); 158 */ 154 159 } 155 return "";160 return NSCAPI::returnIgnored; 156 161 } 157 162 -
modules/NSClientCompat/NSClientCompat.h
ra0528c4 r1eef1ee 18 18 bool hasCommandHandler(); 19 19 bool hasMessageHandler(); 20 std::string handleCommand(const std::string command, const unsigned int argLen, char **args);20 NSCAPI::nagiosReturn handleCommand(const std::string command, const unsigned int argLen, char **char_args, std::string &msg, std::string &perf); 21 21 }; -
modules/NSClientListener/NSClientSocket.cpp
r2a94f3f r1eef1ee 83 83 charEx::token cmd = charEx::getToken(pwd.second, '&'); 84 84 NSC_DEBUG_MSG("Command: " + cmd.first); 85 return NSCModuleHelper::InjectSplitAndCommand(cmd.first.c_str(), cmd.second, '&'); 85 std::string message, perf; 86 NSCAPI::nagiosReturn ret = NSCModuleHelper::InjectSplitAndCommand(cmd.first.c_str(), cmd.second, '&', message, perf); 87 // @todo fix some way to interpret return code 88 return message; 86 89 } 87 90
Note: See TracChangeset
for help on using the changeset viewer.








