Changeset 6b690bf in nscp for NSClient++.cpp


Ignore:
Timestamp:
02/03/08 17:15:14 (5 years ago)
Author:
Michael Medin <michael@…>
Branches:
master, 0.4.0, 0.4.1, 0.4.2, stable
Children:
b5ef837
Parents:
8b206ee
Message:

+ Added API for scripts to register commands

+ Added command descriptions (for some modules)

  • Fixed issue in NRPE that displayed a console window when running commands
  • New improved "inject" dialog from the system tray Lists avalible commands, and shows command descriptions and a lot of other improvments.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • NSClient++.cpp

    r5ca3931 r6b690bf  
    412412} 
    413413 
     414 
     415std::wstring NSClientT::describeCommand(std::wstring command) { 
     416  ReadLock readLock(&m_mutexRWcmdDescriptions, true, 5000); 
     417  if (!readLock.IsLocked()) { 
     418    LOG_ERROR(_T("FATAL ERROR: Could not get read-mutex when trying to get command list.")); 
     419    return _T("Failed to get mutex when describing command: ") + command; 
     420  } 
     421  cmdMap::const_iterator cit = cmdDescriptions_.find(command); 
     422  if (cit == cmdDescriptions_.end()) 
     423    return _T("Command not found: ") + command + _T(", maybe it has not been register?"); 
     424  return (*cit).second; 
     425} 
     426std::list<std::wstring> NSClientT::getAllCommandNames() { 
     427  std::list<std::wstring> lst; 
     428  ReadLock readLock(&m_mutexRWcmdDescriptions, true, 5000); 
     429  if (!readLock.IsLocked()) { 
     430    LOG_ERROR(_T("FATAL ERROR: Could not get read-mutex when trying to get command list.")); 
     431    return lst; 
     432  } 
     433  for (cmdMap::const_iterator cit = cmdDescriptions_.begin(); cit != cmdDescriptions_.end(); ++cit) { 
     434    lst.push_back((*cit).first); 
     435  } 
     436  return lst; 
     437} 
     438void NSClientT::registerCommand(std::wstring cmd, std::wstring desc) { 
     439  WriteLock writeLock(&m_mutexRWcmdDescriptions, true, 10000); 
     440  if (!writeLock.IsLocked()) { 
     441    LOG_ERROR_STD(_T("FATAL ERROR: Failed to describe command:") + cmd); 
     442    return; 
     443  } 
     444  cmdDescriptions_[cmd] = desc; 
     445} 
     446 
    414447NSCAPI::nagiosReturn NSClientT::inject(std::wstring command, std::wstring arguments, TCHAR splitter, bool escape, std::wstring &msg, std::wstring & perf) { 
    415448  unsigned int aLen = 0; 
     
    773806NSCAPI::errorReturn NSAPIRehash(int flag) { 
    774807  return NSCAPI::hasFailed; 
     808} 
     809NSCAPI::errorReturn NSAPIDescribeCommand(const TCHAR* command, TCHAR* buffer, unsigned int bufLen) { 
     810  return NSCHelper::wrapReturnString(buffer, bufLen, mainClient.describeCommand(command), NSCAPI::isSuccess); 
     811} 
     812NSCAPI::errorReturn NSAPIGetAllCommandNames(arrayBuffer::arrayBuffer* aBuffer, unsigned int *bufLen) { 
     813  unsigned int len = 0; 
     814  *aBuffer = arrayBuffer::list2arrayBuffer(mainClient.getAllCommandNames(), len); 
     815  *bufLen = len; 
     816  return NSCAPI::isSuccess; 
     817} 
     818NSCAPI::errorReturn NSAPIReleaseAllCommandNamessBuffer(TCHAR*** aBuffer, unsigned int * bufLen) { 
     819  arrayBuffer::destroyArrayBuffer(*aBuffer, *bufLen); 
     820  *bufLen = 0; 
     821  *aBuffer = NULL; 
     822  return NSCAPI::isSuccess; 
     823} 
     824NSCAPI::errorReturn NSAPIRegisterCommand(const TCHAR* cmd,const TCHAR* desc) { 
     825  mainClient.registerCommand(cmd, desc); 
     826  return NSCAPI::isSuccess; 
    775827} 
    776828 
     
    813865  if (_wcsicmp(buffer, _T("NSAPIRehash")) == 0) 
    814866    return &NSAPIRehash; 
     867  if (_wcsicmp(buffer, _T("NSAPIDescribeCommand")) == 0) 
     868    return &NSAPIDescribeCommand; 
     869  if (_wcsicmp(buffer, _T("NSAPIGetAllCommandNames")) == 0) 
     870    return &NSAPIGetAllCommandNames; 
     871  if (_wcsicmp(buffer, _T("NSAPIReleaseAllCommandNamessBuffer")) == 0) 
     872    return &NSAPIReleaseAllCommandNamessBuffer; 
     873  if (_wcsicmp(buffer, _T("NSAPIRegisterCommand")) == 0) 
     874    return &NSAPIRegisterCommand; 
     875 
    815876  return NULL; 
    816877} 
Note: See TracChangeset for help on using the changeset viewer.