Class: IptablesWeb::Iptables
- Inherits:
-
Object
- Object
- IptablesWeb::Iptables
- Includes:
- Mixin::Sudo
- Defined in:
- lib/iptables_web/iptables.rb
Instance Method Summary collapse
- #combine(rules) ⇒ Object
- #render(rules) ⇒ Object
- #restore(access_rules) ⇒ Object
- #save ⇒ Object
- #static_rules ⇒ Object
Methods included from Mixin::Sudo
Instance Method Details
#combine(rules) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/iptables_web/iptables.rb', line 33 def combine(rules) static_rules = self.static_rules static_filter = static_rules.delete('filter') filter_rules =[] filter_rules = filter_rules | Array(static_filter) filter_rules = filter_rules | Array(rules).map(&:to_s) filter_rules.reject! { |r| r.strip.empty? } lines = [] if filter_rules.size > 0 lines << '*filter' lines << ':INPUT DROP [0:0]' lines << ':FORWARD ACCEPT [0:0]' lines << ':OUTPUT ACCEPT [0:0]' lines = lines | filter_rules lines << "COMMIT\n" end static_rules.each do |chain, sub_rules| lines << "*#{chain}" lines << sub_rules.join("\n").strip lines << "COMMIT\n" end lines end |
#render(rules) ⇒ Object
59 60 61 |
# File 'lib/iptables_web/iptables.rb', line 59 def render(rules) combine(rules).join("\n") end |
#restore(access_rules) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/iptables_web/iptables.rb', line 6 def restore(access_rules) lines = combine(access_rules) if lines.size == 0 logged_say('Skip restore because no rules found') return end temp_file = Tempfile.new('rules') logged_say("Save rules to file #{temp_file.path}") temp_file.write lines.join("\n") temp_file.rewind execute("/sbin/iptables-restore -c #{temp_file.path}") ensure if temp_file temp_file.close temp_file.unlink end end |
#save ⇒ Object
25 26 27 |
# File 'lib/iptables_web/iptables.rb', line 25 def save execute('iptables-save').split("\n") end |
#static_rules ⇒ Object
29 30 31 |
# File 'lib/iptables_web/iptables.rb', line 29 def static_rules IptablesWeb.static_rules end |