class Fail2Ban
Public Class Methods
new(motd)
click to toggle source
Calls superclass method
Component::new
# File lib/panda_motd/components/fail_2_ban.rb, line 4 def initialize(motd) super(motd, "fail_2_ban") end
Public Instance Methods
process()
click to toggle source
# File lib/panda_motd/components/fail_2_ban.rb, line 8 def process @results = { jails: {}, } @config["jails"].each do |jail| status = jail_status(jail) @results[:jails][jail] = { total: status[:total], current: status[:current], } end end
to_s()
click to toggle source
# File lib/panda_motd/components/fail_2_ban.rb, line 22 def to_s result = +"Fail2Ban:\n" @results[:jails].each do |name, stats| result << " #{name}:\n" result << " Total bans: #{stats[:total]}\n" result << " Current bans: #{stats[:current]}\n" end result.gsub!(/\s$/, "") end
Private Instance Methods
jail_status(jail)
click to toggle source
# File lib/panda_motd/components/fail_2_ban.rb, line 35 def jail_status(jail) cmd_result = `fail2ban-client status #{jail}` if cmd_result =~ /Sorry but the jail '#{jail}' does not exist/ @errors << ComponentError.new(self, "Invalid jail name '#{jail}'.") else total = cmd_result.match(/Total banned:\s+([0-9]+)/)[1].to_i current = cmd_result.match(/Currently banned:\s+([0-9]+)/)[1].to_i end { total: total, current: current } end