cisco_acl_intp 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +2 -2
  4. data/.travis.yml +4 -2
  5. data/Gemfile +7 -6
  6. data/README.md +23 -18
  7. data/Rakefile +11 -13
  8. data/cisco_acl_intp.gemspec +7 -7
  9. data/lib/cisco_acl_intp/acc.rb +111 -0
  10. data/lib/cisco_acl_intp/{ace.rb → ace_base.rb} +9 -8
  11. data/lib/cisco_acl_intp/{extended_ace.rb → ace_extended.rb} +8 -10
  12. data/lib/cisco_acl_intp/{standard_ace.rb → ace_standard.rb} +5 -5
  13. data/lib/cisco_acl_intp/acespec_base.rb +15 -0
  14. data/lib/cisco_acl_intp/{ace_ip.rb → acespec_ip.rb} +14 -22
  15. data/lib/cisco_acl_intp/{ace_other_qualifiers.rb → acespec_other_qualifiers.rb} +7 -7
  16. data/lib/cisco_acl_intp/{ace_port.rb → acespec_port.rb} +10 -13
  17. data/lib/cisco_acl_intp/{ace_port_opr.rb → acespec_port_opr.rb} +75 -73
  18. data/lib/cisco_acl_intp/{ace_port_opr_base.rb → acespec_port_opr_base.rb} +49 -34
  19. data/lib/cisco_acl_intp/{ace_proto.rb → acespec_proto.rb} +4 -4
  20. data/lib/cisco_acl_intp/{ace_proto_base.rb → acespec_proto_base.rb} +8 -8
  21. data/lib/cisco_acl_intp/{ace_srcdst.rb → acespec_srcdst.rb} +9 -8
  22. data/lib/cisco_acl_intp/{ace_tcp_flags.rb → acespec_tcp_flags.rb} +4 -4
  23. data/lib/cisco_acl_intp/acl.rb +1 -1
  24. data/lib/cisco_acl_intp/acl_base.rb +108 -80
  25. data/lib/cisco_acl_intp/{mono_function_acl.rb → acl_category_base.rb} +5 -5
  26. data/lib/cisco_acl_intp/acl_utils.rb +1 -1
  27. data/lib/cisco_acl_intp/parser.rb +388 -406
  28. data/lib/cisco_acl_intp/parser.ry +8 -3
  29. data/lib/cisco_acl_intp/parser_api.rb +4 -4
  30. data/lib/cisco_acl_intp/scanner.rb +8 -10
  31. data/lib/cisco_acl_intp/scanner_special_token_handler.rb +3 -3
  32. data/lib/cisco_acl_intp/version.rb +1 -1
  33. data/spec/cisco_acl_intp/{extended_ace_spec.rb → ace_extended_spec.rb} +157 -128
  34. data/spec/cisco_acl_intp/ace_spec.rb +21 -19
  35. data/spec/cisco_acl_intp/{standard_ace_spec.rb → ace_standard_spec.rb} +7 -11
  36. data/spec/cisco_acl_intp/{ace_ip_spec.rb → acespec_ip_spec.rb} +34 -34
  37. data/spec/cisco_acl_intp/{ace_other_qualifier_spec.rb → acespec_other_qualifier_spec.rb} +18 -18
  38. data/spec/cisco_acl_intp/acespec_port_operator_spec.rb +331 -0
  39. data/spec/cisco_acl_intp/{ace_port_spec.rb → acespec_port_spec.rb} +33 -33
  40. data/spec/cisco_acl_intp/{ace_proto_spec.rb → acespec_proto_spec.rb} +61 -61
  41. data/spec/cisco_acl_intp/{ace_srcdst_spec.rb → acespec_srcdst_spec.rb} +113 -54
  42. data/spec/cisco_acl_intp/{ace_tcp_flags_spec.rb → acespec_tcp_flags_spec.rb} +10 -10
  43. data/spec/cisco_acl_intp/acl_base_spec.rb +14 -12
  44. data/spec/cisco_acl_intp/{extended_acl_spec.rb → acl_extended_spec.rb} +28 -28
  45. data/spec/cisco_acl_intp/{standard_acl_spec.rb → acl_standard_spec.rb} +24 -23
  46. data/spec/cisco_acl_intp/cisco_acl_intp_spec.rb +1 -1
  47. data/spec/cisco_acl_intp/parser_spec.rb +12 -12
  48. data/spec/cisco_acl_intp/scanner_spec.rb +31 -36
  49. data/spec/parser_fullfill_patterns.rb +6 -7
  50. data/spec/spec_helper.rb +6 -6
  51. data/tools/check_acl.rb +1 -1
  52. metadata +60 -59
  53. data/lib/cisco_acl_intp/single_acl_base.rb +0 -137
  54. data/spec/cisco_acl_intp/ace_port_operator_spec.rb +0 -340
@@ -1,340 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require 'spec_helper'
3
-
4
- describe 'AcePortOpAny' do
5
- describe '#contains' do
6
- before(:all) do
7
- @aclop = AcePortOpAny.new
8
- @port1 = AceTcpProtoSpec.new(10)
9
- @port2 = AceTcpProtoSpec.new('www')
10
- end
11
-
12
- it 'should be true all conditions' do
13
- @aclop.contains?(AcePortOpAny.new).should be_true
14
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
15
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_true
16
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_true
17
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_true
18
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_true
19
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_true
20
- end
21
- end
22
- end
23
-
24
- describe 'AcePortOpStrictAny' do
25
- describe '#contains' do
26
- before(:all) do
27
- @aclop = AcePortOpStrictAny.new
28
- @port1 = AceTcpProtoSpec.new(10)
29
- @port2 = AceTcpProtoSpec.new('www')
30
- end
31
-
32
- it 'should be true when only ANY conditions' do
33
- @aclop.contains?(AcePortOpAny.new).should be_true
34
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
35
- end
36
-
37
- it 'should be false with other operators' do
38
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_false
39
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
40
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_false
41
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
42
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
43
- end
44
- end
45
- end
46
-
47
- describe 'AcePortOpEq' do
48
- describe '#contains' do
49
- before(:all) do
50
- @port1 = AceTcpProtoSpec.new(10)
51
- @port2 = AceTcpProtoSpec.new('www')
52
- @aclop = AcePortOpEq.new(@port1)
53
- end
54
-
55
- it 'should be true with ANY' do
56
- @aclop.contains?(AcePortOpAny.new).should be_true
57
- end
58
-
59
- it 'should be false with STRICT_ANY' do
60
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
61
- end
62
-
63
- it 'should be true when same eq/port operator' do
64
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_true
65
- @aclop.contains?(AcePortOpEq.new(@port2)).should be_false
66
- end
67
-
68
- it 'should be false with other operator' do
69
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
70
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_false
71
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
72
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
73
- end
74
- end
75
- end
76
-
77
- describe 'AcePortOpNeq' do
78
- describe '#contains' do
79
- before(:all) do
80
- @port1 = AceTcpProtoSpec.new(10)
81
- @port2 = AceTcpProtoSpec.new('www')
82
- @port3 = AceTcpProtoSpec.new(443)
83
- @aclop = AcePortOpNeq.new(@port2)
84
- end
85
-
86
- it 'should be true with ANY' do
87
- @aclop.contains?(AcePortOpAny.new).should be_true
88
- end
89
-
90
- it 'should be false with STRICT_ANY' do
91
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
92
- end
93
-
94
- it 'should be checked with EQUAL' do
95
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_true
96
- @aclop.contains?(AcePortOpEq.new(@port2)).should be_false
97
- @aclop.contains?(AcePortOpEq.new(@port3)).should be_true
98
- end
99
-
100
- it 'should be checked with NOT_EQUAL' do
101
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
102
- @aclop.contains?(AcePortOpNeq.new(@port2)).should be_true
103
- @aclop.contains?(AcePortOpNeq.new(@port3)).should be_false
104
- end
105
-
106
- it 'should be checked with LOWER_THAN' do
107
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_true
108
- @aclop.contains?(AcePortOpLt.new(@port2)).should be_true
109
- @aclop.contains?(AcePortOpLt.new(@port3)).should be_false
110
- end
111
-
112
- it 'should be checked with GRATER_THAN' do
113
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
114
- @aclop.contains?(AcePortOpGt.new(@port2)).should be_true
115
- @aclop.contains?(AcePortOpGt.new(@port3)).should be_true
116
- end
117
-
118
- it 'should be checked with RANGE' do
119
- port2a = AceTcpProtoSpec.new(79)
120
- port2b = AceTcpProtoSpec.new(81)
121
- @aclop.contains?(AcePortOpRange.new(@port1, port2a)).should be_true
122
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
123
- @aclop.contains?(AcePortOpRange.new(@port2, @port3)).should be_false
124
- @aclop.contains?(AcePortOpRange.new(port2b, @port3)).should be_true
125
- @aclop.contains?(AcePortOpRange.new(@port1, @port3)).should be_false
126
- end
127
- end
128
- end
129
-
130
- describe 'AcePortOpLt' do
131
- describe '#contains' do
132
- before(:all) do
133
- @port1 = AceTcpProtoSpec.new(10)
134
- @port2 = AceTcpProtoSpec.new('www')
135
- @port3 = AceTcpProtoSpec.new(443)
136
- @port_max = AceTcpProtoSpec.new(65_535)
137
- @aclop = AcePortOpLt.new(@port2)
138
- end
139
-
140
- it 'should be true with ANY' do
141
- @aclop.contains?(AcePortOpAny.new).should be_true
142
- end
143
-
144
- it 'should be false with STRICT_ANY' do
145
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
146
- end
147
-
148
- it 'should be checked with EQUAL' do
149
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_true
150
- @aclop.contains?(AcePortOpEq.new(@port2)).should be_false
151
- @aclop.contains?(AcePortOpEq.new(@port3)).should be_false
152
- end
153
-
154
- it 'should be checked with NOT_EQUAL(1)' do
155
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
156
- @aclop.contains?(AcePortOpNeq.new(@port2)).should be_false
157
- @aclop.contains?(AcePortOpNeq.new(@port3)).should be_false
158
- end
159
-
160
- it 'should be checked with NOT_EQUAL(2)' do
161
- aclop = AcePortOpLt.new(@port_max)
162
- aclop.contains?(AcePortOpNeq.new(@port_max)).should be_true
163
- end
164
-
165
- it 'should be checked with LOWER_THAN' do
166
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_true
167
- @aclop.contains?(AcePortOpLt.new(@port2)).should be_true
168
- @aclop.contains?(AcePortOpLt.new(@port3)).should be_false
169
- end
170
-
171
- it 'should be checked with GRATER_THAN' do
172
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
173
- @aclop.contains?(AcePortOpGt.new(@port2)).should be_false
174
- @aclop.contains?(AcePortOpGt.new(@port3)).should be_false
175
- end
176
-
177
- it 'should be checked with RANGE' do
178
- port2a = AceTcpProtoSpec.new(79)
179
- port2b = AceTcpProtoSpec.new(81)
180
- @aclop.contains?(AcePortOpRange.new(@port1, port2a)).should be_true
181
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
182
- @aclop.contains?(AcePortOpRange.new(@port2, @port3)).should be_false
183
- @aclop.contains?(AcePortOpRange.new(port2b, @port3)).should be_false
184
- @aclop.contains?(AcePortOpRange.new(@port1, @port3)).should be_false
185
- end
186
- end
187
- end
188
-
189
- describe 'AcePortOpGt' do
190
- describe '#contains' do
191
- before(:all) do
192
- @port1 = AceTcpProtoSpec.new(10)
193
- @port2 = AceTcpProtoSpec.new('www')
194
- @port3 = AceTcpProtoSpec.new(443)
195
- @port_min = AceTcpProtoSpec.new(0)
196
- @aclop = AcePortOpGt.new(@port2)
197
- end
198
-
199
- it 'should be true with ANY' do
200
- @aclop.contains?(AcePortOpAny.new).should be_true
201
- end
202
-
203
- it 'should be false with STRICT_ANY' do
204
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
205
- end
206
-
207
- it 'should be checked with EQUAL' do
208
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_false
209
- @aclop.contains?(AcePortOpEq.new(@port2)).should be_false
210
- @aclop.contains?(AcePortOpEq.new(@port3)).should be_true
211
- end
212
-
213
- it 'should be checked with NOT_EQUAL(1)' do
214
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
215
- @aclop.contains?(AcePortOpNeq.new(@port2)).should be_false
216
- @aclop.contains?(AcePortOpNeq.new(@port3)).should be_false
217
- end
218
-
219
- it 'should be checked with NOT_EQUAL(2)' do
220
- aclop = AcePortOpGt.new(@port_min)
221
- aclop.contains?(AcePortOpNeq.new(@port_min)).should be_true
222
- end
223
-
224
- it 'should be checked with LOWER_THAN' do
225
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_false
226
- @aclop.contains?(AcePortOpLt.new(@port2)).should be_false
227
- @aclop.contains?(AcePortOpLt.new(@port3)).should be_false
228
- end
229
-
230
- it 'should be checked with GRATER_THAN' do
231
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
232
- @aclop.contains?(AcePortOpGt.new(@port2)).should be_true
233
- @aclop.contains?(AcePortOpGt.new(@port3)).should be_true
234
- end
235
-
236
- it 'should be checked with RANGE' do
237
- port2a = AceTcpProtoSpec.new(79)
238
- port2b = AceTcpProtoSpec.new(81)
239
- @aclop.contains?(AcePortOpRange.new(@port1, port2a)).should be_false
240
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
241
- @aclop.contains?(AcePortOpRange.new(@port2, @port3)).should be_false
242
- @aclop.contains?(AcePortOpRange.new(port2b, @port3)).should be_true
243
- @aclop.contains?(AcePortOpRange.new(@port1, @port3)).should be_false
244
- end
245
- end
246
- end
247
-
248
- describe 'AcePortOpRange' do
249
- describe '#contains' do
250
- before(:all) do
251
- @port1 = AceTcpProtoSpec.new(10)
252
- @port2 = AceTcpProtoSpec.new('www')
253
- @port3 = AceTcpProtoSpec.new(443)
254
- @port4 = AceTcpProtoSpec.new(8080)
255
-
256
- @port2a = AceTcpProtoSpec.new(79)
257
- @port2b = AceTcpProtoSpec.new(81)
258
- @port3a = AceTcpProtoSpec.new(442)
259
- @port3b = AceTcpProtoSpec.new(444)
260
-
261
- @port_max = AceTcpProtoSpec.new(65_535)
262
- @port_min = AceTcpProtoSpec.new(0)
263
-
264
- @aclop = AcePortOpRange.new(@port2, @port3)
265
- end
266
-
267
- it 'should be true with ANY' do
268
- @aclop.contains?(AcePortOpAny.new).should be_true
269
- end
270
-
271
- it 'should be false with STRICT_ANY' do
272
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
273
- end
274
-
275
- it 'should be checked with EQUAL' do
276
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_false
277
- @aclop.contains?(AcePortOpEq.new(@port2)).should be_true
278
- @aclop.contains?(AcePortOpEq.new(@port3)).should be_true
279
- @aclop.contains?(AcePortOpEq.new(@port4)).should be_false
280
- end
281
-
282
- it 'should be checked with NOT_EQUAL(1)' do
283
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
284
- @aclop.contains?(AcePortOpNeq.new(@port2)).should be_false
285
- @aclop.contains?(AcePortOpNeq.new(@port3)).should be_false
286
- @aclop.contains?(AcePortOpNeq.new(@port4)).should be_false
287
- end
288
-
289
- it 'should be checked with NOT_EQUAL(2)' do
290
- aclop = AcePortOpRange.new(@port_min, @port_max)
291
- aclop.contains?(AcePortOpNeq.new(@port_min)).should be_true
292
- aclop.contains?(AcePortOpNeq.new(@port_max)).should be_true
293
- end
294
-
295
- it 'should be checked with LOWER_THAN(1)' do
296
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_false
297
- @aclop.contains?(AcePortOpLt.new(@port2)).should be_false
298
- @aclop.contains?(AcePortOpLt.new(@port3)).should be_false
299
- @aclop.contains?(AcePortOpLt.new(@port4)).should be_false
300
- end
301
-
302
- it 'should be checked with LOWER_THAN(2)' do
303
- aclop = AcePortOpRange.new(@port_min, @port3)
304
- aclop.contains?(AcePortOpLt.new(@port3a)).should be_true
305
- aclop.contains?(AcePortOpLt.new(@port3)).should be_false
306
- aclop.contains?(AcePortOpLt.new(@port3b)).should be_false
307
- end
308
-
309
- it 'should be checked with GRATER_THAN(1)' do
310
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
311
- @aclop.contains?(AcePortOpGt.new(@port2)).should be_false
312
- @aclop.contains?(AcePortOpGt.new(@port3)).should be_false
313
- @aclop.contains?(AcePortOpGt.new(@port4)).should be_false
314
- end
315
-
316
- it 'should be checked with GRATER_THAN(2)' do
317
- aclop = AcePortOpRange.new(@port2, @port_max)
318
- aclop.contains?(AcePortOpGt.new(@port2a)).should be_false
319
- aclop.contains?(AcePortOpGt.new(@port2)).should be_false
320
- aclop.contains?(AcePortOpGt.new(@port2b)).should be_true
321
- end
322
-
323
- it 'should be checked with RANGE' do
324
- @aclop.contains?(AcePortOpRange.new(@port1, @port2a)).should be_false
325
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
326
- @aclop.contains?(AcePortOpRange.new(@port2, @port3a)).should be_true
327
- @aclop.contains?(AcePortOpRange.new(@port2, @port3)).should be_true
328
- @aclop.contains?(AcePortOpRange.new(@port2, @port3b)).should be_false
329
- @aclop.contains?(AcePortOpRange.new(@port1, @port3)).should be_false
330
- @aclop.contains?(AcePortOpRange.new(@port2, @port4)).should be_false
331
- @aclop.contains?(AcePortOpRange.new(@port1, @port4)).should be_false
332
- end
333
- end
334
- end
335
-
336
- ### Local variables:
337
- ### mode: Ruby
338
- ### coding: utf-8-unix
339
- ### indent-tabs-mode: nil
340
- ### End: