gem-firewall 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|