Skip to content
This repository was archived by the owner on Jan 15, 2025. It is now read-only.

Commit d468039

Browse files
committed
Merge pull request #31 from svanharmelen/multiple-commits
Multiple commits updated to be merged with tip...
2 parents a7ef77b + be8cba1 commit d468039

File tree

2 files changed

+28
-14
lines changed

2 files changed

+28
-14
lines changed

providers/rule.rb

+27-12
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111
test_rules(new_resource, rules)
1212

1313
if not node["simple_iptables"]["chains"][new_resource.table].include?(new_resource.chain)
14-
node.set["simple_iptables"]["chains"][new_resource.table] = node["simple_iptables"]["chains"][new_resource.table].dup << new_resource.chain
15-
node.set["simple_iptables"]["rules"][new_resource.table] = node["simple_iptables"]["rules"][new_resource.table].dup << "-A #{new_resource.direction} --jump #{new_resource.chain}"
14+
node.set["simple_iptables"]["chains"][new_resource.table] = node["simple_iptables"]["chains"][new_resource.table].dup << new_resource.chain unless ["PREROUTING", "INPUT", "FORWARD", "OUTPUT", "POSTROUTING"].include?(new_resource.chain)
15+
unless new_resource.chain == new_resource.direction
16+
node.set["simple_iptables"]["rules"][new_resource.table] = node["simple_iptables"]["rules"][new_resource.table].dup << "-A #{new_resource.direction} --jump #{new_resource.chain}"
17+
end
1618
end
1719

1820
# Then apply the rules to the node
@@ -29,26 +31,39 @@
2931
end
3032

3133
def test_rules(new_resource, rules)
32-
#always flush and remove first in case the previous run left it lying around. Ignore any return values.
33-
shell_out("iptables --table #{new_resource.table} --flush _chef_lwrp_test")
34-
shell_out("iptables --table #{new_resource.table} --delete-chain _chef_lwrp_test")
35-
#create the test chain
36-
shell_out!("iptables --table #{new_resource.table} --new-chain _chef_lwrp_test")
34+
test_chains = ["_chef_lwrp_test1"]
35+
cleanup_test_chain(new_resource.table, test_chains.first)
36+
shell_out!("iptables --table #{new_resource.table} --new-chain #{test_chains.first}")
3737
begin
3838
rules.each do |rule|
3939
new_rule = rule_string(new_resource, rule, true)
40-
new_rule.gsub!("-A #{new_resource.chain}", "-A _chef_lwrp_test")
40+
new_rule.gsub!("-A #{new_resource.chain}", "-A #{test_chains.first}")
41+
42+
# Test for jumps to chains that are not actually created on the system yet, but are already processed in the current recipe
43+
if node["simple_iptables"]["chains"][new_resource.table].include?(new_resource.jump)
44+
test_chains.push("_chef_lwrp_test2")
45+
cleanup_test_chain(new_resource.table, test_chains.last)
46+
shell_out!("iptables --table #{new_resource.table} --new-chain #{test_chains.last}")
47+
new_rule.gsub!("--jump #{new_resource.jump}", "--jump #{test_chains.last}")
48+
end
4149
shell_out!("iptables #{new_rule}")
4250
end
4351
ensure
44-
shell_out("iptables --table #{new_resource.table} --flush _chef_lwrp_test")
45-
shell_out("iptables --table #{new_resource.table} --delete-chain _chef_lwrp_test")
52+
test_chains.each do |test_chain|
53+
cleanup_test_chain(new_resource.table, test_chain)
54+
end
4655
end
4756
end
4857

58+
def cleanup_test_chain(table, chain)
59+
#always flush and remove first in case the previous run left it lying around. Ignore any return values.
60+
shell_out("iptables --table #{table} --flush #{chain}")
61+
shell_out("iptables --table #{table} --delete-chain #{chain}")
62+
end
63+
4964
def rule_string(new_resource, rule, include_table)
50-
jump = new_resource.jump ? " --jump #{new_resource.jump}" : ""
65+
jump = new_resource.jump ? "--jump #{new_resource.jump} " : ""
5166
table = include_table ? "--table #{new_resource.table} " : ""
52-
rule = "#{table}-A #{new_resource.chain} #{rule}#{jump}"
67+
rule = "#{table}-A #{new_resource.chain} #{jump}#{rule}"
5368
rule
5469
end

templates/default/iptables-rules.erb

+1-2
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,4 @@ COMMIT
3939
<%= rule %>
4040
<% end -%>
4141
COMMIT
42-
# Completed
43-
42+
# Completed

0 commit comments

Comments
 (0)