Changeset 34e7428 in nscp


Ignore:
Timestamp:
07/01/08 06:39:49 (5 years ago)
Author:
Michael Medin <michael@…>
Branches:
master, 0.4.0, 0.4.1, 0.4.2, stable
Children:
da1c7e1
Parents:
a720da5
Message:

Added new option (namespace) to CheckWMI and CheckWMIValue use like so:

CheckWMI namespace=root
cimv2 MaxCrit=3 MinWarn=1 "Query:load=Select * from win32_Processor"

Files:
10 edited

Legend:

Unmodified
Added
Removed
  • AutoBuild.h

    rc165d1d r34e7428  
    33// change the FALSE to TRUE for autoincrement of build number 
    44#define INCREMENT_VERSION TRUE 
    5 #define FILEVER        0,3,3,12 
    6 #define PRODUCTVER     0,3,3,12 
    7 #define STRFILEVER     _T("0.3.3.12") 
    8 #define STRPRODUCTVER  _T("0.3.3.12") 
    9 #define STRPRODUCTDATE  _T("2008-06-25") 
     5#define FILEVER        0,3,3,13 
     6#define PRODUCTVER     0,3,3,13 
     7#define STRFILEVER     _T("0.3.3.13") 
     8#define STRPRODUCTVER  _T("0.3.3.13") 
     9#define STRPRODUCTDATE  _T("2008-06-30") 
    1010#endif // AUTOBUILD_H 
  • changelog

    ra720da5 r34e7428  
    66 * "The message is blocked by User Interface Privilege Isolation, Administrative applications that need to see it can allow it through by calling ChangeWindowMessageFilter after making sure the necessary security precautions are in place. " 
    77 
     82008-07-01 MickeM 
     9 + Added new option (namespace) to CheckWMI and CheckWMIValue use like so: 
     10   CheckWMI namespace=root\\cimv2 MaxCrit=3 MinWarn=1 "Query:load=Select * from win32_Processor" 
     11 
    8122008-06-30 MickeM 
    913 * Fixed issue with CheckFile and performance data ( #156 ) 
     
    1115   *NOTICE* this is all reasons (so if the counter is missing or some such the same will happen not just when the instance is missing) 
    1216   Message will reflect reason. 
    13  * Fixed issue in the arraybuffer (one of the plit functions had a problem with multiple chars of the same) 
     17 * Fixed issue in the arraybuffer (one of the plit functions had a problem with multiple chars of the same) ( #190 ) 
    1418 
    15192008-06-25 MickeM 
  • include/EnumNtSrv.cpp

    r8f167e8 r34e7428  
    1919#include <windows.h> 
    2020#include <WinSvc.h> 
     21#include <error.hpp> 
    2122#include "EnumNtSrv.h" 
    2223 
     
    184185  SC_HANDLE scman = ::OpenSCManager(NULL,NULL,SC_MANAGER_ENUMERATE_SERVICE); 
    185186  if (!scman) { 
    186     throw NTServiceException(name, _T("Could not open ServiceControl manager"), GetLastError()); 
     187    throw NTServiceException(name, _T("Could not open ServiceControl manager: ") + error::lookup::last_error()); 
    187188  } 
    188189  SC_HANDLE sh = ::OpenService(scman,name.c_str(),SERVICE_QUERY_STATUS); 
     
    193194      ::CloseServiceHandle(scman); 
    194195      delete [] buf; 
    195       throw NTServiceException(name, _T("GetServiceKeyName: Could not translate service name"), GetLastError()); 
     196      throw NTServiceException(name, _T("GetServiceKeyName: Could not translate service name: ") + error::lookup::last_error()); 
    196197    } 
    197198    /* 
     
    207208    if (sh == NULL) { 
    208209      ::CloseServiceHandle(scman); 
    209       throw NTServiceException(name, _T("OpenService: Could not open Service"), GetLastError()); 
     210      throw NTServiceException(name, _T("OpenService: Could not open Service: ") + error::lookup::last_error()); 
    210211    } 
    211212  } 
     
    217218    ::CloseServiceHandle(sh); 
    218219    ::CloseServiceHandle(scman); 
    219     throw NTServiceException(name, _T("QueryServiceStatus: Could not query service status"), GetLastError()); 
     220    throw NTServiceException(name, _T("QueryServiceStatus: Could not query service status: ") + error::lookup::last_error()); 
    220221  } 
    221222  // TODO: Get more info here  
  • include/EnumNtSrv.h

    r8f167e8 r34e7428  
    4040  std::wstring name_; 
    4141  std::wstring msg_; 
    42   unsigned int error_; 
    4342public: 
    44   NTServiceException(std::wstring name,std::wstring msg,unsigned int error) : name_(name), error_(error), msg_(msg) {}; 
     43  NTServiceException(std::wstring name,std::wstring msg) : name_(name), msg_(msg) {}; 
    4544 
    4645  std::wstring getError() { 
    47     return _T("Service: ") + name_ + _T(" caused: ") + msg_ + _T("(") + strEx::itos(error_) + _T(")"); 
     46    return _T("Service: '") + name_ + _T("' caused: ") + msg_; 
    4847  } 
    4948}; 
  • modules/CheckEventLog/CheckEventLog.cpp

    r7f596ce r34e7428  
    392392  if (command != _T("CheckEventLog")) 
    393393    return NSCAPI::returnIgnored; 
    394   typedef checkHolders::CheckConatiner<checkHolders::MaxMinBoundsULongInteger> EventLogQueryConatiner; 
     394  typedef checkHolders::CheckContainer<checkHolders::MaxMinBoundsULongInteger> EventLogQueryContainer; 
    395395  typedef std::pair<int,eventlog_filter> filteritem_type; 
    396396  typedef std::list<filteritem_type > filterlist_type; 
     
    400400  std::list<std::wstring> files; 
    401401  filterlist_type filter_chain; 
    402   EventLogQueryConatiner query; 
     402  EventLogQueryContainer query; 
    403403 
    404404  bool bPerfData = true; 
  • modules/CheckSystem/CheckSystem.cpp

    rdff5db9 r34e7428  
    358358NSCAPI::nagiosReturn CheckSystem::checkCPU(const unsigned int argLen, TCHAR **char_args, std::wstring &msg, std::wstring &perf)  
    359359{ 
    360   typedef checkHolders::CheckConatiner<checkHolders::MaxMinBounds<checkHolders::NumericBounds<int, cpuload_handler> > > CPULoadConatiner; 
     360  typedef checkHolders::CheckContainer<checkHolders::MaxMinBounds<checkHolders::NumericBounds<int, cpuload_handler> > > CPULoadContainer; 
    361361 
    362362  std::list<std::wstring> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 
     
    365365    return NSCAPI::returnUNKNOWN; 
    366366  } 
    367   std::list<CPULoadConatiner> list; 
     367  std::list<CPULoadContainer> list; 
    368368  NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 
    369369  bool bNSClient = false; 
    370370  bool bPerfData = true; 
    371   CPULoadConatiner tmpObject; 
     371  CPULoadContainer tmpObject; 
    372372 
    373373  tmpObject.data = _T("cpuload"); 
     
    393393  MAP_OPTIONS_END() 
    394394 
    395   for (std::list<CPULoadConatiner>::const_iterator it = list.begin(); it != list.end(); ++it) { 
    396     CPULoadConatiner load = (*it); 
     395  for (std::list<CPULoadContainer>::const_iterator it = list.begin(); it != list.end(); ++it) { 
     396    CPULoadContainer load = (*it); 
    397397    PDHCollector *pObject = pdhThread.getThread(); 
    398398    if (!pObject) { 
     
    424424NSCAPI::nagiosReturn CheckSystem::checkUpTime(const unsigned int argLen, TCHAR **char_args, std::wstring &msg, std::wstring &perf) 
    425425{ 
    426   typedef checkHolders::CheckConatiner<checkHolders::MaxMinBoundsTime> UpTimeConatiner; 
     426  typedef checkHolders::CheckContainer<checkHolders::MaxMinBoundsTime> UpTimeContainer; 
    427427 
    428428  std::list<std::wstring> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 
     
    434434  bool bNSClient = false; 
    435435  bool bPerfData = true; 
    436   UpTimeConatiner bounds; 
     436  UpTimeContainer bounds; 
    437437 
    438438  bounds.data = _T("uptime"); 
     
    510510NSCAPI::nagiosReturn CheckSystem::checkServiceState(const unsigned int argLen, TCHAR **char_args, std::wstring &msg, std::wstring &perf) 
    511511{ 
    512   typedef checkHolders::CheckConatiner<checkHolders::SimpleBoundsStateBoundsInteger> StateConatiner; 
     512  typedef checkHolders::CheckContainer<checkHolders::SimpleBoundsStateBoundsInteger> StateContainer; 
    513513  std::list<std::wstring> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 
    514514  if (stl_args.empty()) { 
     
    516516    return NSCAPI::returnUNKNOWN; 
    517517  } 
    518   std::list<StateConatiner> list; 
     518  std::list<StateContainer> list; 
    519519  std::set<std::wstring> excludeList; 
    520520  NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 
    521521  bool bNSClient = false; 
    522   StateConatiner tmpObject; 
     522  StateContainer tmpObject; 
    523523  bool bPerfData = true; 
    524524  bool bAutoStart = false; 
     
    574574    }  
    575575  } 
    576   for (std::list<StateConatiner>::iterator it = list.begin(); it != list.end(); ++it) { 
     576  for (std::list<StateContainer>::iterator it = list.begin(); it != list.end(); ++it) { 
    577577    TNtServiceInfo info; 
    578578    if (bNSClient) { 
     
    642642NSCAPI::nagiosReturn CheckSystem::checkMem(const unsigned int argLen, TCHAR **char_args, std::wstring &msg, std::wstring &perf) 
    643643{ 
    644   typedef checkHolders::CheckConatiner<checkHolders::MaxMinBounds<checkHolders::NumericPercentageBounds<checkHolders::PercentageValueType<unsigned __int64, unsigned __int64>, checkHolders::disk_size_handler<unsigned __int64> > > > MemoryConatiner; 
     644  typedef checkHolders::CheckContainer<checkHolders::MaxMinBounds<checkHolders::NumericPercentageBounds<checkHolders::PercentageValueType<unsigned __int64, unsigned __int64>, checkHolders::disk_size_handler<unsigned __int64> > > > MemoryContainer; 
    645645  std::list<std::wstring> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 
    646646  if (stl_args.empty()) { 
     
    648648    return NSCAPI::returnUNKNOWN; 
    649649  } 
    650   std::list<MemoryConatiner> list; 
     650  std::list<MemoryContainer> list; 
    651651  NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 
    652652  bool bShowAll = false; 
    653653  bool bPerfData = true; 
    654654  bool bNSClient = false; 
    655   MemoryConatiner tmpObject; 
     655  MemoryContainer tmpObject; 
    656656 
    657657  MAP_OPTIONS_BEGIN(stl_args) 
     
    680680  bool firstPaged = true; 
    681681  bool firstMem = true; 
    682   for (std::list<MemoryConatiner>::const_iterator pit = list.begin(); pit != list.end(); ++pit) { 
    683     MemoryConatiner check = (*pit); 
     682  for (std::list<MemoryContainer>::const_iterator pit = list.begin(); pit != list.end(); ++pit) { 
     683    MemoryContainer check = (*pit); 
    684684    check.setDefault(tmpObject); 
    685685    checkHolders::PercentageValueType<unsigned long long, unsigned long long> value; 
     
    807807NSCAPI::nagiosReturn CheckSystem::checkProcState(const unsigned int argLen, TCHAR **char_args, std::wstring &msg, std::wstring &perf) 
    808808{ 
    809   typedef checkHolders::CheckConatiner<checkHolders::MaxMinStateBoundsStateBoundsInteger> StateConatiner; 
     809  typedef checkHolders::CheckContainer<checkHolders::MaxMinStateBoundsStateBoundsInteger> StateContainer; 
    810810  std::list<std::wstring> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 
    811811  if (stl_args.empty()) { 
     
    813813    return NSCAPI::returnUNKNOWN; 
    814814  } 
    815   std::list<StateConatiner> list; 
     815  std::list<StateContainer> list; 
    816816  NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 
    817817  bool bNSClient = false; 
    818   StateConatiner tmpObject; 
     818  StateContainer tmpObject; 
    819819  bool bPerfData = true; 
    820820  bool useCmdLine = false; 
     
    867867  } 
    868868 
    869   for (std::list<StateConatiner>::iterator it = list.begin(); it != list.end(); ++it) { 
     869  for (std::list<StateContainer>::iterator it = list.begin(); it != list.end(); ++it) { 
    870870    NSPROCLST::iterator proc; 
    871871    if (match == match_string) { 
     
    950950NSCAPI::nagiosReturn CheckSystem::checkCounter(const unsigned int argLen, TCHAR **char_args, std::wstring &msg, std::wstring &perf) 
    951951{ 
    952   typedef checkHolders::CheckConatiner<checkHolders::MaxMinBoundsDouble> CounterConatiner; 
     952  typedef checkHolders::CheckContainer<checkHolders::MaxMinBoundsDouble> CounterContainer; 
    953953 
    954954  std::list<std::wstring> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 
     
    957957    return NSCAPI::returnUNKNOWN; 
    958958  } 
    959   std::list<CounterConatiner> counters; 
     959  std::list<CounterContainer> counters; 
    960960  NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 
    961961  bool bNSClient = false; 
     
    963963  /* average maax */ 
    964964  bool bCheckAverages = true;  
     965  std::wstring invalidStatus = _T("UNKNOWN"); 
    965966  unsigned int averageDelay = 1000; 
    966   CounterConatiner tmpObject; 
     967  CounterContainer tmpObject; 
    967968 
    968969  MAP_OPTIONS_BEGIN(stl_args) 
     970    MAP_OPTIONS_STR(_T("InvalidStatus"), invalidStatus) 
    969971    MAP_OPTIONS_STR_AND(_T("Counter"), tmpObject.data, counters.push_back(tmpObject)) 
    970972    MAP_OPTIONS_STR(_T("MaxWarn"), tmpObject.warn.max) 
     
    988990    MAP_OPTIONS_FALLBACK_AND(tmpObject.data, counters.push_back(tmpObject)) 
    989991  MAP_OPTIONS_END() 
    990   for (std::list<CounterConatiner>::const_iterator cit = counters.begin(); cit != counters.end(); ++cit) { 
    991     CounterConatiner counter = (*cit); 
     992  for (std::list<CounterContainer>::const_iterator cit = counters.begin(); cit != counters.end(); ++cit) { 
     993    CounterContainer counter = (*cit); 
    992994    try { 
    993995      std::wstring tstr; 
     
    995997        msg = tstr; 
    996998        msg += _T(" (") + counter.getAlias() + _T("|") + counter.data + _T(")"); 
    997         return NSCAPI::returnUNKNOWN; 
     999        return NSCHelper::translateReturn(invalidStatus); 
    9981000      } 
    9991001      PDH::PDHQuery pdh; 
  • modules/CheckWMI/CheckWMI.cpp

    r367bf20 r34e7428  
    8080 
    8181NSCAPI::nagiosReturn CheckWMI::CheckSimpleWMI(const unsigned int argLen, TCHAR **char_args, std::wstring &message, std::wstring &perf) { 
    82   typedef checkHolders::CheckConatiner<checkHolders::MaxMinBounds<checkHolders::NumericBounds<int, checkHolders::int_handler> > > WMIConatiner; 
     82  typedef checkHolders::CheckContainer<checkHolders::MaxMinBounds<checkHolders::NumericBounds<int, checkHolders::int_handler> > > WMIContainer; 
    8383 
    8484  NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 
     
    9292  unsigned int truncate = 0; 
    9393  std::wstring query, alias; 
     94  std::wstring ns = _T("root\\cimv2"); 
    9495  bool bPerfData = true; 
    9596 
    96   WMIConatiner result_query; 
     97  WMIContainer result_query; 
    9798  try { 
    9899    MAP_OPTIONS_BEGIN(args) 
    99100    MAP_OPTIONS_STR(_T("Query"), query) 
    100101    MAP_OPTIONS_STR2INT(_T("truncate"), truncate) 
     102    MAP_OPTIONS_STR2INT(_T("namespace"), ns) 
    101103    MAP_OPTIONS_STR(_T("Alias"), alias) 
    102104    MAP_OPTIONS_BOOL_FALSE(IGNORE_PERFDATA, bPerfData) 
     
    123125  try { 
    124126    WMIQuery wmiQuery; 
    125     rows = wmiQuery.execute(query); 
     127    rows = wmiQuery.execute(ns, query); 
    126128  } catch (WMIException e) { 
    127129    message = _T("WMIQuery failed: ") + e.getMessage(); 
     
    151153 
    152154NSCAPI::nagiosReturn CheckWMI::CheckSimpleWMIValue(const unsigned int argLen, TCHAR **char_args, std::wstring &message, std::wstring &perf) { 
    153   typedef checkHolders::CheckConatiner<checkHolders::MaxMinBounds<checkHolders::NumericBounds<long long, checkHolders::int64_handler> > > WMIConatiner; 
     155  typedef checkHolders::CheckContainer<checkHolders::MaxMinBounds<checkHolders::NumericBounds<long long, checkHolders::int64_handler> > > WMIContainer; 
    154156  std::list<std::wstring> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 
    155157  if (stl_args.empty()) { 
     
    157159    return NSCAPI::returnUNKNOWN; 
    158160  } 
    159   std::list<WMIConatiner> list; 
     161  std::list<WMIContainer> list; 
    160162  NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 
    161   WMIConatiner tmpObject; 
     163  WMIContainer tmpObject; 
    162164  bool bPerfData = true; 
    163165  unsigned int truncate = 0; 
    164166  std::wstring query; 
     167  std::wstring ns = _T("root\\cimv2"); 
    165168  std::wstring aliasCol; 
    166169 
     
    171174      MAP_OPTIONS_SHOWALL(tmpObject) 
    172175      MAP_OPTIONS_NUMERIC_ALL(tmpObject, _T("")) 
     176      MAP_OPTIONS_STR2INT(_T("namespace"), ns) 
    173177      MAP_OPTIONS_STR(_T("Alias"), tmpObject.data) 
    174178      MAP_OPTIONS_STR(_T("AliasCol"), aliasCol) 
     
    192196  try { 
    193197    WMIQuery wmiQuery; 
    194     rows = wmiQuery.execute(query); 
     198    rows = wmiQuery.execute(ns, query); 
    195199  } catch (WMIException e) { 
    196200    message = _T("WMIQuery failed: ") + e.getMessage(); 
     
    199203  int hit_count = 0; 
    200204 
    201   for (std::list<WMIConatiner>::const_iterator it = list.begin(); it != list.end(); ++it) { 
    202     WMIConatiner itm = (*it); 
     205  for (std::list<WMIContainer>::const_iterator it = list.begin(); it != list.end(); ++it) { 
     206    WMIContainer itm = (*it); 
    203207    itm.setDefault(tmpObject); 
    204208    itm.perfData = bPerfData; 
     
    219223    } 
    220224    for (WMIQuery::wmi_row::list_type::const_iterator citCol = (*citRow).results.begin(); citCol != (*citRow).results.end(); ++citCol) { 
    221       for (std::list<WMIConatiner>::const_iterator it = list.begin(); it != list.end(); ++it) { 
    222         WMIConatiner itm = (*it); 
     225      for (std::list<WMIContainer>::const_iterator it = list.begin(); it != list.end(); ++it) { 
     226        WMIContainer itm = (*it); 
    223227        if (itm.data == _T("*")) { 
    224228          found = true; 
     
    258262  //WMIQuery wmiQuery; 
    259263  std::wstring query = command; 
     264  std::wstring ns = _T("root\\cimv2"); 
    260265  query += _T(" ") + arrayBuffer::arrayBuffer2string(char_args, argLen, _T(" ")); 
    261266  WMIQuery::result_type rows; 
    262267  try { 
    263268    WMIQuery wmiQuery; 
    264     rows = wmiQuery.execute(query); 
     269    rows = wmiQuery.execute(ns, query); 
    265270  } catch (WMIException e) { 
    266271    NSC_LOG_ERROR_STD(_T("WMIQuery failed: ") + e.getMessage()); 
  • modules/CheckWMI/CheckWMI.h

    r367bf20 r34e7428  
    5959 
    6060private: 
    61   typedef checkHolders::CheckConatiner<checkHolders::MaxMinBoundsDiscSize> PathConatiner; 
    62   typedef checkHolders::CheckConatiner<checkHolders::MaxMinPercentageBoundsDiskSize> DriveConatiner; 
     61  typedef checkHolders::CheckContainer<checkHolders::MaxMinBoundsDiscSize> PathContainer; 
     62  typedef checkHolders::CheckContainer<checkHolders::MaxMinPercentageBoundsDiskSize> DriveContainer; 
    6363}; 
  • modules/CheckWMI/WMIQuery.cpp

    rdff5db9 r34e7428  
    3636} 
    3737 
    38 WMIQuery::result_type WMIQuery::execute(std::wstring query) 
     38WMIQuery::result_type WMIQuery::execute(std::wstring ns, std::wstring query) 
    3939{ 
    4040  result_type ret; 
     
    4646  } 
    4747 
    48   BSTR bstrNamespace = (_T("root\\cimv2")); 
     48  CComBSTR strNamespace(ns.c_str()); 
    4949  CComPtr< IWbemServices > service; 
    50   hr = locator->ConnectServer( bstrNamespace, NULL, NULL, NULL, WBEM_FLAG_CONNECT_USE_MAX_WAIT, NULL, NULL, &service ); 
     50  hr = locator->ConnectServer( strNamespace, NULL, NULL, NULL, WBEM_FLAG_CONNECT_USE_MAX_WAIT, NULL, NULL, &service ); 
    5151  if (FAILED(hr)) { 
    5252    throw WMIException(_T("ConnectServer failed!"), hr); 
  • modules/CheckWMI/WMIQuery.h

    r367bf20 r34e7428  
    147147  ~WMIQuery(void) {}; 
    148148 
    149   result_type  execute(std::wstring query); 
     149  result_type  execute(std::wstring ns, std::wstring query); 
    150150  std::wstring sanitize_string(LPTSTR in); 
    151151}; 
Note: See TracChangeset for help on using the changeset viewer.