Changeset 55b33c1 in nscp


Ignore:
Timestamp:
03/21/05 08:55:37 (8 years ago)
Author:
Michael Medin <michael@…>
Children:
5d8cb39
Parents:
6db9fb2
Message:

Fixed bug in INject (now things should work, but far from stable)

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/changelog

    rc515660 r55b33c1  
     12005-03-21 MickeM 
     2 * Fixed BUG in inject command (now things should "work" again, but far from stable) 
     3 
    142005-03-20 MickeM 
    25 * Fundamental API changes (due to NRPE compatibility) 
  • trunk/include/NSCAPI.h

    rc515660 r55b33c1  
    33namespace NSCAPI { 
    44 
     5#ifdef DEBUG 
    56  typedef enum { 
    67    returnCRIT = 2, 
     
    1112    returnIgnored = -1 
    1213  } nagiosReturn; 
    13  
    1414  typedef enum { 
    1515    istrue = 1,  
    1616    isfalse = 0 
    1717  } boolReturn; 
    18  
    1918  typedef enum { 
    2019    isSuccess = 1,  
     
    2221    isInvalidBufferLen = -2 
    2322  } errorReturn; 
    24  
    25  
    26  
    27   // Various Nagios codes 
    28   /* 
     23#else 
    2924  const int returnCRIT = 2; 
    3025  const int returnOK = 0; 
    3126  const int returnWARN = 1; 
    3227  const int returnUNKNOWN = 4; 
    33   */ 
    34   // Various NSCP extensions 
     28  const int returnInvalidBufferLen = -2; 
     29  const int returnIgnored = -1; 
     30  const int istrue = 1;  
     31  const int isfalse = 0; 
     32  const int isSuccess = 1;  
     33  const int hasFailed = 0; 
     34  const int isInvalidBufferLen = -2; 
     35  typedef int nagiosReturn; 
     36  typedef int boolReturn; 
     37  typedef int errorReturn; 
     38#endif 
    3539 
    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 
    4840 
    4941  // Various message Types 
  • trunk/include/NSCHelper.cpp

    rc515660 r55b33c1  
    1515* @return NSCAPI::success unless the buffer is to short then it will be NSCAPI::invalidBufferLen 
    1616*/ 
    17 /* 
     17#ifdef DEBUG 
     18NSCAPI::nagiosReturn NSCHelper::wrapReturnString(char *buffer, unsigned int bufLen, std::string str, NSCAPI::nagiosReturn defaultReturnCode /* = NSCAPI::success */) { 
     19  if (str.length() >= bufLen) 
     20    return NSCAPI::returnInvalidBufferLen; 
     21  strncpy(buffer, str.c_str(), bufLen); 
     22  return defaultReturnCode; 
     23} 
     24NSCAPI::errorReturn NSCHelper::wrapReturnString(char *buffer, unsigned int bufLen, std::string str, NSCAPI::errorReturn defaultReturnCode /* = NSCAPI::success */) { 
     25  if (str.length() >= bufLen) 
     26    return NSCAPI::isInvalidBufferLen; 
     27  strncpy(buffer, str.c_str(), bufLen); 
     28  return defaultReturnCode; 
     29} 
     30#else 
    1831int NSCHelper::wrapReturnString(char *buffer, unsigned int bufLen, std::string str, int defaultReturnCode ) { 
    1932  // @todo deprecate this 
     
    2336  return defaultReturnCode; 
    2437} 
    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; 
    35   strncpy(buffer, str.c_str(), bufLen); 
    36   return defaultReturnCode; 
    37 } 
     38#endif 
    3839/** 
    3940 * Make a list out of a array of char arrays (arguments type) 
     
    119120  for (unsigned int i=0;i<argLen;i++) { 
    120121    char *q = strchr(p, (i<argLen-1)?splitChar:0); 
    121     unsigned int len = q-p; 
     122    unsigned int len = static_cast<int>(q-p); 
    122123    arrayBuffer[i] = new char[len+1]; 
    123124    strncpy(arrayBuffer[i], p, len); 
     
    212213 * @throws NSCMHExcpetion When core pointer set is unavailable or an unknown inject error occurs. 
    213214 */ 
    214 NSCAPI::nagiosReturn NSCModuleHelper::InjectCommandRAW(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen)  
     215NSCAPI::nagiosReturn NSCModuleHelper::InjectCommandRAW(const char* command, const unsigned int argLen, char **argument, char *returnMessageBuffer, unsigned int returnMessageBufferLen, char *returnPerfBuffer, unsigned int returnPerfBufferLen)  
    215216{ 
    216217  if (!fNSAPIInject) 
    217218    throw NSCMHExcpetion("NSCore has not been initiated..."); 
    218   return fNSAPIInject(command, argLen, argument, returnBuffer, returnBufferLen); 
     219  return fNSAPIInject(command, argLen, argument, returnMessageBuffer, returnMessageBufferLen, returnPerfBuffer, returnPerfBufferLen); 
    219220} 
    220221NSCAPI::nagiosReturn NSCModuleHelper::InjectCommand(const char* command, const unsigned int argLen, char **argument, std::string & message, std::string & perf)  
     
    222223  if (!fNSAPIInject) 
    223224    throw NSCMHExcpetion("NSCore has not been initiated..."); 
    224   char *buffer = new char[BUFF_LEN+1]; 
    225   buffer[0] = 0; 
     225  char *msgBuffer = new char[BUFF_LEN+1]; 
     226  char *perfBuffer = new char[BUFF_LEN+1]; 
     227  msgBuffer[0] = 0; 
     228  perfBuffer[0] = 0; 
    226229  // @todo message here ! 
    227   NSCAPI::nagiosReturn retC = InjectCommandRAW(command, argLen, argument, buffer, BUFF_LEN); 
     230  NSCAPI::nagiosReturn retC = InjectCommandRAW(command, argLen, argument, msgBuffer, BUFF_LEN, perfBuffer, BUFF_LEN); 
    228231  switch (retC) { 
    229232    case NSCAPI::returnIgnored: 
     
    237240    case NSCAPI::returnWARN: 
    238241    case NSCAPI::returnUNKNOWN: 
    239       message = buffer; 
    240       // @todo perf data  
     242      message = msgBuffer; 
     243      perf = perfBuffer; 
    241244      break; 
    242245    default: 
    243246      throw NSCMHExcpetion("Unknown inject error."); 
    244247  } 
    245   delete [] buffer; 
     248  delete [] msgBuffer; 
     249  delete [] perfBuffer; 
    246250  return retC; 
    247251} 
  • trunk/include/NSCHelper.h

    rc515660 r55b33c1  
    99namespace NSCHelper 
    1010{ 
    11 //  int wrapReturnString(char *buffer, unsigned int bufLen, std::string str, int defaultReturnCode); 
     11#ifdef DEBUG 
    1212  NSCAPI::nagiosReturn wrapReturnString(char *buffer, unsigned int bufLen, std::string str, NSCAPI::nagiosReturn defaultReturnCode); 
    1313  NSCAPI::errorReturn wrapReturnString(char *buffer, unsigned int bufLen, std::string str, NSCAPI::errorReturn defaultReturnCode); 
     14#else 
     15  int wrapReturnString(char *buffer, unsigned int bufLen, std::string str, int defaultReturnCode); 
     16#endif 
    1417 
    1518  std::list<std::string> arrayBuffer2list(const unsigned int argLen, char **argument); 
     
    8790  typedef void (*lpNSAPIMessage)(int, const char*, const int, const char*); 
    8891  typedef NSCAPI::errorReturn (*lpNSAPIStopServer)(void); 
    89   typedef NSCAPI::nagiosReturn (*lpNSAPIInject)(const char*, const unsigned int, char **, char *, unsigned int ); 
     92  typedef NSCAPI::nagiosReturn (*lpNSAPIInject)(const char*, const unsigned int, char **, char *, unsigned int, char *, unsigned int); 
    9093  typedef LPVOID (*lpNSAPILoader)(char*); 
    9194 
     
    9699  int getSettingsInt(std::string section, std::string key, int defaultValue); 
    97100  void Message(int msgType, std::string file, int line, std::string message); 
    98   NSCAPI::nagiosReturn InjectCommandRAW(const char* command, const unsigned int argLen, char **argument, char *returnBuffer, unsigned int returnBufferLen); 
     101  NSCAPI::nagiosReturn InjectCommandRAW(const char* command, const unsigned int argLen, char **argument, char *returnMessageBuffer, unsigned int returnMessageBufferLen, char *returnPerfBuffer, unsigned int returnPerfBufferLen); 
    99102  NSCAPI::nagiosReturn InjectCommand(const char* command, const unsigned int argLen, char **argument, std::string & message, std::string & perf); 
    100103  NSCAPI::nagiosReturn InjectSplitAndCommand(const char* command, char* buffer, char splitChar, std::string & message, std::string & perf); 
  • trunk/modules/NSClientListener/NSClientSocket.cpp

    rc515660 r55b33c1  
    8585  std::string message, perf; 
    8686  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; 
     87  return NSCHelper::translateReturn(ret) + "&" + message + "|" + perf; 
    8988} 
    9089 
     
    9897    std::string response = parseRequest(buff);   
    9998    NSC_DEBUG_MSG("Outgoing data: " + response); 
    100     send(client, response.c_str(), response.length(), 0); 
     99    send(client, response.c_str(), static_cast<int>(response.length()), 0); 
    101100  } else { 
    102101    std::string str = "ERROR: Unknown socket error"; 
    103     send(client,str.c_str(),str.length(),0); 
     102    send(client,str.c_str(),static_cast<int>(str.length()),0); 
    104103  } 
    105104  delete [] buff; 
Note: See TracChangeset for help on using the changeset viewer.