Changeset 2603350 in nscp for modules/CheckEventLog


Ignore:
Timestamp:
02/23/07 19:25:23 (6 years ago)
Author:
Michael Medin <michael@…>
Branches:
master, 0.4.0, 0.4.1, 0.4.2, stable
Children:
2c34b97
Parents:
d48c31a
Message:

Getting ready for the 0.2.7 release, a few minor fixes here and there...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • modules/CheckEventLog/CheckEventLog.cpp

    rf42280d r2603350  
    193193 
    194194 
    195 #define MAP_FILTER(value, obj) \ 
    196       else if (p__.first == value) { eventlog_filter filter; filter.obj = p__.second; filter_chain.push_back(filter); } 
     195#define MAP_FILTER(value, obj, filtermode) \ 
     196      else if (p__.first == value) { eventlog_filter filter; filter.obj = p__.second; filter_chain.push_back(filteritem_type(filtermode, filter)); } 
    197197 
    198198 
     
    201201  if (command != "CheckEventLog") 
    202202    return NSCAPI::returnIgnored; 
    203   typedef checkHolders::CheckConatiner<checkHolders::MaxMinBoundsUInteger> EventLogQueryConatiner; 
     203  typedef checkHolders::CheckConatiner<checkHolders::MaxMinBoundsULongInteger> EventLogQueryConatiner; 
     204  typedef std::pair<int,eventlog_filter> filteritem_type; 
     205  typedef std::list<filteritem_type > filterlist_type; 
    204206  NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 
    205207  std::list<std::string> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 
    206208 
    207209  std::list<std::string> files; 
    208   std::list<eventlog_filter> filter_chain; 
     210  filterlist_type filter_chain; 
    209211  EventLogQueryConatiner query; 
    210212 
     213  bool bPerfData = true; 
    211214  bool bFilterIn = true; 
    212215  bool bFilterAll = false; 
     216  bool bFilterNew = false; 
    213217  bool bShowDescriptions = false; 
    214218  unsigned int truncate = 0; 
    215219  std::string syntax; 
     220  const int filter_plus = 1; 
     221  const int filter_minus = 2; 
     222  const int filter_normal = 3; 
     223  const int filter_compat = 3; 
    216224 
    217225  try { 
     
    221229      MAP_OPTIONS_BOOL_TRUE("descriptions", bShowDescriptions) 
    222230      MAP_OPTIONS_PUSH("file", files) 
     231      MAP_OPTIONS_BOOL_FALSE(IGNORE_PERFDATA, bPerfData) 
     232      MAP_OPTIONS_BOOL_EX("filter", bFilterNew, "new", "old") 
    223233      MAP_OPTIONS_BOOL_EX("filter", bFilterIn, "in", "out") 
    224234      MAP_OPTIONS_BOOL_EX("filter", bFilterAll, "all", "any") 
    225235      MAP_OPTIONS_STR("syntax", syntax) 
    226       MAP_FILTER("filter-eventType", eventType) 
    227       MAP_FILTER("filter-severity", eventSeverity) 
    228       MAP_FILTER("filter-eventID", eventID) 
    229       MAP_FILTER("filter-eventSource", eventSource) 
    230       MAP_FILTER("filter-generated", timeGenerated) 
    231       MAP_FILTER("filter-written", timeWritten) 
    232       MAP_FILTER("filter-message", message) 
     236/* 
     237      MAP_FILTER_OLD("filter-eventType", eventType) 
     238      MAP_FILTER_OLD("filter-severity", eventSeverity) 
     239      MAP_FILTER_OLD("filter-eventID", eventID) 
     240      MAP_FILTER_OLD("filter-eventSource", eventSource) 
     241      MAP_FILTER_OLD("filter-generated", timeGenerated) 
     242      MAP_FILTER_OLD("filter-written", timeWritten) 
     243      MAP_FILTER_OLD("filter-message", message) 
     244*/ 
     245      MAP_FILTER("filter+eventType", eventType, filter_plus) 
     246      MAP_FILTER("filter+severity", eventSeverity, filter_plus) 
     247      MAP_FILTER("filter+eventID", eventID, filter_plus) 
     248      MAP_FILTER("filter+eventSource", eventSource, filter_plus) 
     249      MAP_FILTER("filter+generated", timeGenerated, filter_plus) 
     250      MAP_FILTER("filter+written", timeWritten, filter_plus) 
     251      MAP_FILTER("filter+message", message, filter_plus) 
     252 
     253      MAP_FILTER("filter.eventType", eventType, filter_normal) 
     254      MAP_FILTER("filter.severity", eventSeverity, filter_normal) 
     255      MAP_FILTER("filter.eventID", eventID, filter_normal) 
     256      MAP_FILTER("filter.eventSource", eventSource, filter_normal) 
     257      MAP_FILTER("filter.generated", timeGenerated, filter_normal) 
     258      MAP_FILTER("filter.written", timeWritten, filter_normal) 
     259      MAP_FILTER("filter.message", message, filter_normal) 
     260 
     261      MAP_FILTER("filter-eventType", eventType, filter_minus) 
     262      MAP_FILTER("filter-severity", eventSeverity, filter_minus) 
     263      MAP_FILTER("filter-eventID", eventID, filter_minus) 
     264      MAP_FILTER("filter-eventSource", eventSource, filter_minus) 
     265      MAP_FILTER("filter-generated", timeGenerated, filter_minus) 
     266      MAP_FILTER("filter-written", timeWritten, filter_minus) 
     267      MAP_FILTER("filter-message", message, filter_minus) 
     268 
    233269      MAP_OPTIONS_MISSING(message, "Unknown argument: ") 
    234270    MAP_OPTIONS_END() 
     
    241277  } 
    242278 
    243   unsigned int hit_count = 0; 
     279  unsigned long int hit_count = 0; 
    244280 
    245281  for (std::list<std::string>::const_iterator cit2 = files.begin(); cit2 != files.end(); ++cit2) { 
     
    250286    } 
    251287 
    252     DWORD dwThisRecord, dwRead, dwNeeded; 
     288    //DWORD dwThisRecord; 
     289    DWORD dwRead, dwNeeded; 
    253290    EVENTLOGRECORD *pevlr; 
    254291    BYTE bBuffer[BUFFER_SIZE];  
     
    259296    _time64(&ltime); 
    260297 
    261     GetOldestEventLogRecord(hLog, &dwThisRecord); 
     298    //GetOldestEventLogRecord(hLog, &dwThisRecord); 
    262299 
    263300    while (ReadEventLog(hLog, EVENTLOG_FORWARDS_READ|EVENTLOG_SEQUENTIAL_READ, 
     
    269306        EventLogRecord record(pevlr, ltime); 
    270307 
    271         for (std::list<eventlog_filter>::const_iterator cit3 = filter_chain.begin(); cit3 != filter_chain.end(); ++cit3 ) { 
    272           bool bTmpMatched = (*cit3).matchFilter(record); 
    273           if (bFilterAll) { 
    274             if (!bTmpMatched) { 
     308        for (filterlist_type::const_iterator cit3 = filter_chain.begin(); cit3 != filter_chain.end(); ++cit3 ) { 
     309          int mode = (*cit3).first; 
     310          bool bTmpMatched = (*cit3).second.matchFilter(record); 
     311          if (!bFilterNew) { 
     312            if (bFilterAll) { 
     313              if (!bTmpMatched) { 
     314                bMatch = false; 
     315                break; 
     316              } 
     317            } else { 
     318              if (bTmpMatched) { 
     319                bMatch = true; 
     320                break; 
     321              } 
     322            } 
     323          } else { 
     324            if ((mode == filter_minus)&&(bTmpMatched)) { 
     325              // a -<filter> hit so thrash item and bail out! 
    275326              bMatch = false; 
    276327              break; 
    277             } 
    278           } else { 
    279             if (bTmpMatched) { 
     328            } else if ((mode == filter_plus)&&(!bTmpMatched)) { 
     329                // a +<filter> missed hit so thrash item and bail out! 
     330                bMatch = false; 
     331                break; 
     332            } else if (bTmpMatched) { 
    280333              bMatch = true; 
    281               break; 
    282334            } 
    283335          } 
    284336        } 
    285  
    286         if ((bFilterIn&&bMatch)||(!bFilterIn&&!bMatch)) { 
     337        bool match = false; 
     338        if ((!bFilterNew)&&((bFilterIn&&bMatch)||(!bFilterIn&&!bMatch))) { 
     339          match = true; 
     340        } else if (bFilterNew&&bMatch) { 
     341          match = true; 
     342        } 
     343 
     344        if (match) { 
    287345          if (!syntax.empty()) { 
    288346            strEx::append_list(message, record.render(syntax)); 
    289           } else if (bShowDescriptions) { 
     347          } else if (!bShowDescriptions) { 
    290348            strEx::append_list(message, record.eventSource()); 
    291349          } else { 
     
    304362    CloseEventLog(hLog); 
    305363  } 
     364 
     365  if (!bPerfData) 
     366    query.perfData = false; 
    306367  query.runCheck(hit_count, returnCode, message, perf); 
    307368  if ((truncate > 0) && (message.length() > (truncate-4))) 
Note: See TracChangeset for help on using the changeset viewer.