Changeset 2603350 in nscp for modules/CheckEventLog
- Timestamp:
- 02/23/07 19:25:23 (6 years ago)
- Branches:
- master, 0.4.0, 0.4.1, 0.4.2, stable
- Children:
- 2c34b97
- Parents:
- d48c31a
- File:
-
- 1 edited
-
modules/CheckEventLog/CheckEventLog.cpp (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
modules/CheckEventLog/CheckEventLog.cpp
rf42280d r2603350 193 193 194 194 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)); } 197 197 198 198 … … 201 201 if (command != "CheckEventLog") 202 202 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; 204 206 NSCAPI::nagiosReturn returnCode = NSCAPI::returnOK; 205 207 std::list<std::string> stl_args = arrayBuffer::arrayBuffer2list(argLen, char_args); 206 208 207 209 std::list<std::string> files; 208 std::list<eventlog_filter>filter_chain;210 filterlist_type filter_chain; 209 211 EventLogQueryConatiner query; 210 212 213 bool bPerfData = true; 211 214 bool bFilterIn = true; 212 215 bool bFilterAll = false; 216 bool bFilterNew = false; 213 217 bool bShowDescriptions = false; 214 218 unsigned int truncate = 0; 215 219 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; 216 224 217 225 try { … … 221 229 MAP_OPTIONS_BOOL_TRUE("descriptions", bShowDescriptions) 222 230 MAP_OPTIONS_PUSH("file", files) 231 MAP_OPTIONS_BOOL_FALSE(IGNORE_PERFDATA, bPerfData) 232 MAP_OPTIONS_BOOL_EX("filter", bFilterNew, "new", "old") 223 233 MAP_OPTIONS_BOOL_EX("filter", bFilterIn, "in", "out") 224 234 MAP_OPTIONS_BOOL_EX("filter", bFilterAll, "all", "any") 225 235 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 233 269 MAP_OPTIONS_MISSING(message, "Unknown argument: ") 234 270 MAP_OPTIONS_END() … … 241 277 } 242 278 243 unsigned int hit_count = 0;279 unsigned long int hit_count = 0; 244 280 245 281 for (std::list<std::string>::const_iterator cit2 = files.begin(); cit2 != files.end(); ++cit2) { … … 250 286 } 251 287 252 DWORD dwThisRecord, dwRead, dwNeeded; 288 //DWORD dwThisRecord; 289 DWORD dwRead, dwNeeded; 253 290 EVENTLOGRECORD *pevlr; 254 291 BYTE bBuffer[BUFFER_SIZE]; … … 259 296 _time64(<ime); 260 297 261 GetOldestEventLogRecord(hLog, &dwThisRecord);298 //GetOldestEventLogRecord(hLog, &dwThisRecord); 262 299 263 300 while (ReadEventLog(hLog, EVENTLOG_FORWARDS_READ|EVENTLOG_SEQUENTIAL_READ, … … 269 306 EventLogRecord record(pevlr, ltime); 270 307 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! 275 326 bMatch = false; 276 327 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) { 280 333 bMatch = true; 281 break;282 334 } 283 335 } 284 336 } 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) { 287 345 if (!syntax.empty()) { 288 346 strEx::append_list(message, record.render(syntax)); 289 } else if ( bShowDescriptions) {347 } else if (!bShowDescriptions) { 290 348 strEx::append_list(message, record.eventSource()); 291 349 } else { … … 304 362 CloseEventLog(hLog); 305 363 } 364 365 if (!bPerfData) 366 query.perfData = false; 306 367 query.runCheck(hit_count, returnCode, message, perf); 307 368 if ((truncate > 0) && (message.length() > (truncate-4)))
Note: See TracChangeset
for help on using the changeset viewer.








