winevt_c 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1069bcfe57cfd91d05fcff1a7314929c01c675d30678b8a624c926eb0a91b09f
4
- data.tar.gz: bea008c2cf452539b59a9d22800183797babcbb5158e5f6688dd3fd749dc4e3d
3
+ metadata.gz: 1a95471f55e9dee6e48a8836c27e360dc8f8abc8d8687106805702502586acb2
4
+ data.tar.gz: c64666d6e09ce6e5fb4eb04f2cd951eeae8d656b9e20efc70375503ca253c453
5
5
  SHA512:
6
- metadata.gz: 81ef978d005e6c87607cc187509f8e5ae52b33b7687100148139b050c09d61cbb813fe1e77f8ccc0a02fa881d6a8066b6f7c959f45be3ff65c79e77b03dbd247
7
- data.tar.gz: c27480331ce8d8cfab82cd00ef4bd940e3a4224076db6641e9bb49019a2d88dac2ee73790153a20cf2bbafa1db6844b876f59cb53c249251460b6eb97b895c99
6
+ metadata.gz: ea964c952d8dc9f2d05639309a7a04be8564e13f563b6fce60c6f6fbd70b35d91d28d9f1436e1e1baf88db5cf7d77e66f115d70ad6ea76c99afc5f6cf99044c3
7
+ data.tar.gz: c39eeeaa3cfdb4c90a526a5a2a2a7ebc5e217624b89f526b697ab65a07b02118f40b6e1fcd9ef533022d5312d43dee279b9bdca20aba93f5788fddf3fe7cfe8d
data/Rakefile CHANGED
@@ -28,7 +28,7 @@ task 'gem:native' do
28
28
  # See RUBY_CC_VERSION in https://github.com/rake-compiler/rake-compiler-dock/blob/master/Dockerfile.mri
29
29
  RakeCompilerDock.sh <<-EOS
30
30
  gem install bundler yard --no-doc && bundle
31
- rake cross native gem RUBY_CC_VERSION=2.4.0:2.5.0:2.6.0
31
+ rake cross native gem RUBY_CC_VERSION=2.4.0:2.5.0:2.6.0:2.7.0
32
32
  EOS
33
33
  end
34
34
 
data/example/eventlog.rb CHANGED
@@ -2,6 +2,8 @@ require 'winevt'
2
2
 
3
3
  @query = Winevt::EventLog::Query.new("Application", "*[System[(Level <= 3) and TimeCreated[timediff(@SystemTime) <= 86400000]]]")
4
4
 
5
+ @query.render_as_xml = true
6
+ @query.preserve_qualifiers = true
5
7
  @query.each do |eventlog, message, string_inserts|
6
8
  puts ({eventlog: eventlog, data: message})
7
9
  end
@@ -1,7 +1,7 @@
1
1
  require 'winevt'
2
2
 
3
3
  @subscribe = Winevt::EventLog::Subscribe.new
4
- @subscribe.tail = true
4
+ @subscribe.read_existing_events = true
5
5
  @subscribe.rate_limit = 80
6
6
  @subscribe.subscribe(
7
7
  "Application", "*[System[(Level <= 4) and TimeCreated[timediff(@SystemTime) <= 86400000]]]"
data/example/tailing.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  require 'winevt'
2
2
 
3
3
  @subscribe = Winevt::EventLog::Subscribe.new
4
- @subscribe.tail = true
4
+ @subscribe.read_existing_events = true
5
+ @subscribe.preserve_qualifiers = true
6
+ @subscribe.render_as_xml = true
5
7
  @subscribe.subscribe(
6
8
  "Security", "*[System[(Level <= 4) and TimeCreated[timediff(@SystemTime) <= 86400000]]]"
7
9
  )
@@ -27,11 +27,14 @@ extern "C" {
27
27
  #endif /* __cplusplus */
28
28
 
29
29
  VALUE wstr_to_rb_str(UINT cp, const WCHAR* wstr, int clen);
30
+ #if defined(__cplusplus)
31
+ [[ noreturn ]]
32
+ #endif /* __cplusplus */
30
33
  void raise_system_error(VALUE error, DWORD errorCode);
31
34
  VALUE render_to_rb_str(EVT_HANDLE handle, DWORD flags);
32
35
  WCHAR* get_description(EVT_HANDLE handle);
33
36
  VALUE get_values(EVT_HANDLE handle);
34
- VALUE render_system_event(EVT_HANDLE handle);
37
+ VALUE render_system_event(EVT_HANDLE handle, BOOL preserve_qualifiers);
35
38
 
36
39
  #ifdef __cplusplus
37
40
  }
@@ -66,6 +69,7 @@ struct WinevtQuery
66
69
  LONG offset;
67
70
  LONG timeout;
68
71
  BOOL renderAsXML;
72
+ BOOL preserveQualifiers;
69
73
  };
70
74
 
71
75
  #define SUBSCRIBE_ARRAY_SIZE 10
@@ -84,6 +88,7 @@ struct WinevtSubscribe
84
88
  time_t lastTime;
85
89
  DWORD currentRate;
86
90
  BOOL renderAsXML;
91
+ BOOL preserveQualifiers;
87
92
  };
88
93
 
89
94
  void Init_winevt_query(VALUE rb_cEventLog);
@@ -94,6 +94,7 @@ rb_winevt_query_initialize(VALUE self, VALUE channel, VALUE xpath)
94
94
  winevtQuery->offset = 0L;
95
95
  winevtQuery->timeout = 0L;
96
96
  winevtQuery->renderAsXML = TRUE;
97
+ winevtQuery->preserveQualifiers = FALSE;
97
98
 
98
99
  ALLOCV_END(wchannelBuf);
99
100
  ALLOCV_END(wpathBuf);
@@ -212,7 +213,7 @@ rb_winevt_query_render(VALUE self, EVT_HANDLE event)
212
213
  if (winevtQuery->renderAsXML) {
213
214
  return render_to_rb_str(event, EvtRenderEventXml);
214
215
  } else {
215
- return render_system_event(event);
216
+ return render_system_event(event, winevtQuery->preserveQualifiers);
216
217
  }
217
218
  }
218
219
 
@@ -394,6 +395,42 @@ rb_winevt_query_set_render_as_xml(VALUE self, VALUE rb_render_as_xml)
394
395
  return Qnil;
395
396
  }
396
397
 
398
+ /*
399
+ * This method specifies whether preserving qualifiers key or not.
400
+ *
401
+ * @since 0.7.3
402
+ * @param rb_render_as_xml [Boolean]
403
+ */
404
+ static VALUE
405
+ rb_winevt_query_set_preserve_qualifiers(VALUE self, VALUE rb_preserve_qualifiers)
406
+ {
407
+ struct WinevtQuery* winevtQuery;
408
+
409
+ TypedData_Get_Struct(
410
+ self, struct WinevtQuery, &rb_winevt_query_type, winevtQuery);
411
+
412
+ winevtQuery->preserveQualifiers = RTEST(rb_preserve_qualifiers);
413
+
414
+ return Qnil;
415
+ }
416
+
417
+ /*
418
+ * This method returns whether preserving qualifiers or not.
419
+ *
420
+ * @since 0.7.3
421
+ * @return [Integer]
422
+ */
423
+ static VALUE
424
+ rb_winevt_query_get_preserve_qualifiers_p(VALUE self)
425
+ {
426
+ struct WinevtQuery* winevtQuery;
427
+
428
+ TypedData_Get_Struct(
429
+ self, struct WinevtQuery, &rb_winevt_query_type, winevtQuery);
430
+
431
+ return winevtQuery->preserveQualifiers ? Qtrue : Qfalse;
432
+ }
433
+
397
434
  void
398
435
  Init_winevt_query(VALUE rb_cEventLog)
399
436
  {
@@ -451,4 +488,12 @@ Init_winevt_query(VALUE rb_cEventLog)
451
488
  rb_define_method(rb_cQuery, "each", rb_winevt_query_each, 0);
452
489
  rb_define_method(rb_cQuery, "render_as_xml?", rb_winevt_query_render_as_xml_p, 0);
453
490
  rb_define_method(rb_cQuery, "render_as_xml=", rb_winevt_query_set_render_as_xml, 1);
491
+ /*
492
+ * @since 0.7.3
493
+ */
494
+ rb_define_method(rb_cQuery, "preserve_qualifiers?", rb_winevt_query_get_preserve_qualifiers_p, 0);
495
+ /*
496
+ * @since 0.7.3
497
+ */
498
+ rb_define_method(rb_cQuery, "preserve_qualifiers=", rb_winevt_query_set_preserve_qualifiers, 1);
454
499
  }
@@ -89,6 +89,7 @@ rb_winevt_subscribe_initialize(VALUE self)
89
89
  winevtSubscribe->currentRate = 0;
90
90
  winevtSubscribe->renderAsXML = TRUE;
91
91
  winevtSubscribe->readExistingEvents = TRUE;
92
+ winevtSubscribe->preserveQualifiers = FALSE;
92
93
 
93
94
  return Qnil;
94
95
  }
@@ -339,7 +340,7 @@ rb_winevt_subscribe_render(VALUE self, EVT_HANDLE event)
339
340
  if (winevtSubscribe->renderAsXML) {
340
341
  return render_to_rb_str(event, EvtRenderEventXml);
341
342
  } else {
342
- return render_system_event(event);
343
+ return render_system_event(event, winevtSubscribe->preserveQualifiers);
343
344
  }
344
345
  }
345
346
 
@@ -517,6 +518,42 @@ rb_winevt_subscribe_set_render_as_xml(VALUE self, VALUE rb_render_as_xml)
517
518
  return Qnil;
518
519
  }
519
520
 
521
+ /*
522
+ * This method specifies whether preserving qualifiers key or not.
523
+ *
524
+ * @since 0.7.3
525
+ * @param rb_render_as_xml [Boolean]
526
+ */
527
+ static VALUE
528
+ rb_winevt_subscribe_set_preserve_qualifiers(VALUE self, VALUE rb_preserve_qualifiers)
529
+ {
530
+ struct WinevtSubscribe* winevtSubscribe;
531
+
532
+ TypedData_Get_Struct(
533
+ self, struct WinevtSubscribe, &rb_winevt_subscribe_type, winevtSubscribe);
534
+
535
+ winevtSubscribe->preserveQualifiers = RTEST(rb_preserve_qualifiers);
536
+
537
+ return Qnil;
538
+ }
539
+
540
+ /*
541
+ * This method returns whether preserving qualifiers or not.
542
+ *
543
+ * @since 0.7.3
544
+ * @return [Integer]
545
+ */
546
+ static VALUE
547
+ rb_winevt_subscribe_get_preserve_qualifiers_p(VALUE self)
548
+ {
549
+ struct WinevtSubscribe* winevtSubscribe;
550
+
551
+ TypedData_Get_Struct(
552
+ self, struct WinevtSubscribe, &rb_winevt_subscribe_type, winevtSubscribe);
553
+
554
+ return winevtSubscribe->preserveQualifiers ? Qtrue : Qfalse;
555
+ }
556
+
520
557
  void
521
558
  Init_winevt_subscribe(VALUE rb_cEventLog)
522
559
  {
@@ -549,4 +586,14 @@ Init_winevt_subscribe(VALUE rb_cEventLog)
549
586
  rb_cSubscribe, "render_as_xml?", rb_winevt_subscribe_render_as_xml_p, 0);
550
587
  rb_define_method(
551
588
  rb_cSubscribe, "render_as_xml=", rb_winevt_subscribe_set_render_as_xml, 1);
589
+ /*
590
+ * @since 0.7.3
591
+ */
592
+ rb_define_method(
593
+ rb_cSubscribe, "preserve_qualifiers?", rb_winevt_subscribe_get_preserve_qualifiers_p, 0);
594
+ /*
595
+ * @since 0.7.3
596
+ */
597
+ rb_define_method(
598
+ rb_cSubscribe, "preserve_qualifiers=", rb_winevt_subscribe_set_preserve_qualifiers, 1);
552
599
  }
@@ -497,7 +497,7 @@ cleanup:
497
497
  }
498
498
 
499
499
  VALUE
500
- render_system_event(EVT_HANDLE hEvent)
500
+ render_system_event(EVT_HANDLE hEvent, BOOL preserve_qualifiers)
501
501
  {
502
502
  DWORD status = ERROR_SUCCESS;
503
503
  EVT_HANDLE hContext = NULL;
@@ -572,11 +572,23 @@ render_system_event(EVT_HANDLE hEvent)
572
572
  }
573
573
 
574
574
  EventID = pRenderedValues[EvtSystemEventID].UInt16Val;
575
- if (EvtVarTypeNull != pRenderedValues[EvtSystemQualifiers].Type) {
576
- EventID = MAKELONG(pRenderedValues[EvtSystemEventID].UInt16Val,
577
- pRenderedValues[EvtSystemQualifiers].UInt16Val);
575
+ if (preserve_qualifiers) {
576
+ if (EvtVarTypeNull != pRenderedValues[EvtSystemQualifiers].Type) {
577
+ rb_hash_aset(hash, rb_str_new2("Qualifiers"),
578
+ INT2NUM(pRenderedValues[EvtSystemQualifiers].UInt16Val));
579
+ } else {
580
+ rb_hash_aset(hash, rb_str_new2("Qualifiers"), rb_str_new2(""));
581
+ }
582
+
583
+ rb_hash_aset(hash, rb_str_new2("EventID"), INT2NUM(EventID));
584
+ } else {
585
+ if (EvtVarTypeNull != pRenderedValues[EvtSystemQualifiers].Type) {
586
+ EventID = MAKELONG(pRenderedValues[EvtSystemEventID].UInt16Val,
587
+ pRenderedValues[EvtSystemQualifiers].UInt16Val);
588
+ }
589
+
590
+ rb_hash_aset(hash, rb_str_new2("EventID"), ULONG2NUM(EventID));
578
591
  }
579
- rb_hash_aset(hash, rb_str_new2("EventID"), LONG2NUM(EventID));
580
592
 
581
593
  rb_hash_aset(hash,
582
594
  rb_str_new2("Version"),
@@ -1,3 +1,3 @@
1
1
  module Winevt
2
- VERSION = "0.7.2"
2
+ VERSION = "0.7.3"
3
3
  end
data/winevt_c.gemspec CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency "bundler", [">= 1.16", "< 3"]
29
29
  spec.add_development_dependency "rake", "~> 12.0"
30
30
  spec.add_development_dependency "rake-compiler", "~> 1.0"
31
- spec.add_development_dependency "rake-compiler-dock", "~> 0.7.2"
31
+ spec.add_development_dependency "rake-compiler-dock", "~> 1.0.0"
32
32
  spec.add_development_dependency "test-unit", "~> 3.2"
33
33
  spec.add_development_dependency "yard", "~> 0.9"
34
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: winevt_c
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroshi Hatake
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-28 00:00:00.000000000 Z
11
+ date: 2020-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 0.7.2
67
+ version: 1.0.0
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 0.7.2
74
+ version: 1.0.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: test-unit
77
77
  requirement: !ruby/object:Gem::Requirement