gem-firewall 0.0.6 → 0.0.7
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 +4 -4
- data/README.md +11 -0
- data/lib/complex_rule.rb +4 -1
- data/lib/firewall/version.rb +1 -1
- data/test/complex_rule_test.rb +8 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10538f049bdf3b5bb0ca3171ee3c1db4458d136e
|
4
|
+
data.tar.gz: 75de8d77276e7861293129a904c6324c55da6272
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f4ca85a3debfd05e87f8d157fd5c6c201c63ab4fb0ed39014e8ce3db48dc653f6c618f3993fe68bfc966814f53910c5321ee66a66483567bd5ac54ad265d4ee
|
7
|
+
data.tar.gz: 9e468862086d1f8e280425a5213b7341a988977f59bd2ec95ce7a9ed9c0e1d2dab1fc43f6a0e17e2f33d3e62f0b7ecedd9620448f61b5116cbfb572210e628b9
|
data/README.md
CHANGED
@@ -63,6 +63,17 @@ fw.allowed?("192.168.1.1", true) # true
|
|
63
63
|
fw.allowed?("192.168.1.1", false) # false
|
64
64
|
```
|
65
65
|
|
66
|
+
or
|
67
|
+
|
68
|
+
```
|
69
|
+
fw = Firewall::Firewall.new(false)
|
70
|
+
r = Firewall::ComplexRule.new("192.168.1.1", true, {value: true})
|
71
|
+
fw.add_rule(r)
|
72
|
+
|
73
|
+
fw.allowed?("192.168.1.1", true) # true
|
74
|
+
fw.allowed?("192.168.1.1", false) # false
|
75
|
+
```
|
76
|
+
|
66
77
|
## Contributing
|
67
78
|
|
68
79
|
1. Fork it ( https://github.com/davidterranova/firewall/fork )
|
data/lib/complex_rule.rb
CHANGED
@@ -1,16 +1,19 @@
|
|
1
1
|
module Firewall
|
2
2
|
class ComplexRule < Rule
|
3
3
|
|
4
|
-
def initialize(ip, allowed, check = {delegate: nil, method: nil})
|
4
|
+
def initialize(ip, allowed, check = {delegate: nil, method: nil, value: nil})
|
5
5
|
super(ip, allowed)
|
6
6
|
@delegate = check[:delegate]
|
7
7
|
@method = check[:method]
|
8
|
+
@value = check[:value]
|
8
9
|
end
|
9
10
|
|
10
11
|
def pass?(ip, value = nil)
|
11
12
|
pass = false
|
12
13
|
if @delegate
|
13
14
|
pass = (super(ip) and (value == @delegate.send(@method)))
|
15
|
+
elsif @value
|
16
|
+
pass = (super(ip) and (value == @value))
|
14
17
|
else
|
15
18
|
pass = super(ip)
|
16
19
|
end
|
data/lib/firewall/version.rb
CHANGED
data/test/complex_rule_test.rb
CHANGED
@@ -51,5 +51,13 @@ class ComplexRuleTest < Minitest::Unit::TestCase
|
|
51
51
|
assert_equal r1.pass?(ip2), false
|
52
52
|
end
|
53
53
|
|
54
|
+
def test_complex_rule_with_value
|
55
|
+
ip = "192.168.1.10/24"
|
56
|
+
|
57
|
+
r1 = Firewall::ComplexRule.new(ip, true, {value: 'value'})
|
58
|
+
assert_equal r1.pass?(ip, 'value'), true
|
59
|
+
assert_equal r1.pass?(ip, 'plop'), false
|
60
|
+
end
|
61
|
+
|
54
62
|
|
55
63
|
end
|