threshold 0.1.2 → 0.2.0

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
  SHA1:
3
- metadata.gz: 217dfa23dfdb5c98dab0b3ae3a2296e9384d5499
4
- data.tar.gz: f3544de930356120894679828caf71996cc42b53
3
+ metadata.gz: 4b015463dff88e20e4d903cb380d5e0301b841ee
4
+ data.tar.gz: 89c5bb791bd7d1899d61b000e68deaa8453d9e07
5
5
  SHA512:
6
- metadata.gz: 4bbea0fa7aaaedf8562fdbec8a830c0522fe5f63108e558c8d36a3dccea84765a571c11f2014df207618b113cf0733e7b4842fe1c2e1c3770f5c0c8a08feeea3
7
- data.tar.gz: b3d66ffaacf6528b2f0909a92c298eb2569d2f2765a4f85cbbd058de79aaf58ac1ac709f2460e9fddf10083e0e28208ab1d91218fe96f7eaf90be24f89c5a2a1
6
+ metadata.gz: 949126bde1abdf49df5489e011d415ca99d1e74c8cbc79ee84ac5f5a8e7807e7b804783d3f76ef881a693044daa2416fe86d6d54ddd9a612b74daf784458f067
7
+ data.tar.gz: 4804ed44bc0233eec2bf2bdada4d31db030549c060ec4414ec0ab6337aef2a806cbfb75e2ea23056e58cdb43d0748c1aded21008a50c1c2e72c0ed1206ed982c
@@ -62,13 +62,6 @@ module Threshold
62
62
  entity.comment
63
63
  end
64
64
 
65
- def track_by_set?(entity)
66
- entity.track_by
67
- end
68
-
69
- def type_set?(type)
70
- entity.type
71
- end
72
65
  end
73
66
 
74
67
  class EventFilter
@@ -97,6 +90,10 @@ module Threshold
97
90
 
98
91
  private
99
92
 
93
+ def state
94
+ [@gid, @sid, @type, @track_by, @count, @seconds]
95
+ end
96
+
100
97
  def transform(result)
101
98
  begin
102
99
  self.gid = result["GID"].compact.first.to_i
@@ -130,6 +130,11 @@ module Threshold
130
130
 
131
131
  private
132
132
 
133
+ #State does not track comments
134
+ def state
135
+ [@gid, @sid, @track_by, @count, @seconds, @new_action, @timeout, @apply_to]
136
+ end
137
+
133
138
  def transform(result)
134
139
  begin
135
140
  self.gid = result["GID"].compact.first.to_i
@@ -14,6 +14,17 @@ module Threshold
14
14
  end
15
15
  end
16
16
 
17
+ # Equality Methods
18
+ def ==(an0ther)
19
+ an0ther.class == self.class && an0ther.hash == hash
20
+ end
21
+
22
+ alias_method :eql?, :==
23
+
24
+ def hash
25
+ state.hash
26
+ end
27
+
17
28
  #Comparable
18
29
  def <=>(anOther)
19
30
  #gid <=> anOther.gid
@@ -73,6 +73,11 @@ module Threshold
73
73
 
74
74
  private
75
75
 
76
+ #State does not track comments
77
+ def state
78
+ [@gid, @sid, @track_by, @ip]
79
+ end
80
+
76
81
  def transform(result)
77
82
  begin
78
83
  self.gid = result["GID"].compact.first.to_i
@@ -20,11 +20,11 @@ module Threshold
20
20
 
21
21
  # Write changes to the file
22
22
  def flush
23
+
23
24
  begin
24
25
  valid_existing_file?(@file)
25
26
  raise ReadOnlyThresholdsFile if @readonly
26
27
  hash = current_hash
27
-
28
28
  file = File.open(@file, 'w+')
29
29
  raise ThresholdAtomicLockFailure, 'The @file state/hash changed before we could flush the file' unless stored_hash == hash
30
30
  file.write self.sort.to_s
@@ -32,11 +32,12 @@ module Threshold
32
32
 
33
33
  rescue NonExistantThresholdFile
34
34
  raise ReadOnlyThresholdsFile if @readonly
35
-
36
35
  file = File.open(@file, 'w')
37
36
  file.write self.sort.to_s
38
37
  file.close
39
38
  end
39
+
40
+ stored_hash=current_hash
40
41
  return true
41
42
  end
42
43
 
@@ -60,6 +61,7 @@ module Threshold
60
61
 
61
62
  end
62
63
 
64
+ # Check if all objects in the Threshold Instance report .valid?
63
65
  def valid?
64
66
  begin
65
67
  self.each do |threshold|
@@ -75,6 +77,8 @@ module Threshold
75
77
  end
76
78
  end
77
79
 
80
+ # Printer
81
+ # Pass (true) to_s to skip the printing of InternalObjects.comment
78
82
  def to_s(skip = false)
79
83
  output = ""
80
84
 
@@ -86,27 +90,36 @@ module Threshold
86
90
  return output
87
91
  end
88
92
 
93
+ # The calculated hash of the threshold.conf file at load time.
89
94
  def stored_hash
90
95
  @stored_hash
91
96
  end
92
97
 
98
+ def to_a
99
+ @thresholds
100
+ end
101
+
93
102
  ## Forwardable Corrections:
94
103
  ## Corrected for forwardable due to Core Array returning new Arrays on the methods.
95
104
 
96
105
  # Array(@thresholds) Creates a new Array on @threshold.sort so.. direct forwardable delegation fails.
97
106
 
107
+ # Returns a new Threshold Object
98
108
  def sort
99
109
  Thresholds.new(@thresholds.sort)
100
110
  end
101
111
 
112
+ # Returns a new Threshold Object
102
113
  def reverse
103
114
  Thresholds.new(@thresholds.reverse)
104
115
  end
105
116
 
117
+ # Returns a new Threshold Object
106
118
  def shuffle
107
119
  Thresholds.new(@thresholds.shuffle)
108
120
  end
109
121
 
122
+ # Returns a new Threshold Object
110
123
  def reject(&blk)
111
124
  if block_given?
112
125
  Thresholds.new(@thresholds.reject(&blk))
@@ -115,6 +128,7 @@ module Threshold
115
128
  end
116
129
  end
117
130
 
131
+ # Returns a new Threshold Object
118
132
  def select(&blk)
119
133
  if block_given?
120
134
  Thresholds.new(@thresholds.select(&blk))
@@ -124,6 +138,7 @@ module Threshold
124
138
  end
125
139
 
126
140
  #Uniques by default to printable output
141
+ # Returns a new Threshold Object
127
142
  def uniq(&blk)
128
143
  if block_given?
129
144
  Thresholds.new(@thresholds.uniq(&blk))
@@ -132,11 +147,32 @@ module Threshold
132
147
  end
133
148
  end
134
149
 
135
- ## Complex Methods
136
- ## &(union), | (intersect), + (concat)
150
+ ## Complex SET Methods
151
+ ## &(union), | (intersect), + (concat), - (Difference)
152
+
153
+ # + (concat)
154
+ # Returns a new Threshold Object
155
+ def +(an0ther)
156
+ Thresholds.new(@thresholds + an0ther.to_a)
157
+ end
137
158
 
138
- ## Should rework to perform to_s before comparison..
139
- ## include?, index
159
+ # | (intersect)
160
+ # Returns a new Threshold Object
161
+ def |(an0ther)
162
+ Thresholds.new(@thresholds | an0ther.to_a)
163
+ end
164
+
165
+ # & (union)
166
+ # Returns a new Threshold Object
167
+ def &(an0ther)
168
+ Thresholds.new(@thresholds & an0ther.to_a)
169
+ end
170
+
171
+ # - (Difference)
172
+ # Returns a new Threshold Object
173
+ def -(an0ther)
174
+ Thresholds.new(@thresholds - an0ther.to_a)
175
+ end
140
176
 
141
177
  private
142
178
 
@@ -1,4 +1,4 @@
1
1
  module Threshold
2
- VERSION = '0.1.2'
2
+ VERSION = '0.2.0'
3
3
  SNORT_VERSION='~>2.9.3'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: threshold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shadowbq