class Poke::Checks::Blacklist::SpamhausBlacklistCheck
Public Class Methods
new(ip)
click to toggle source
Calls superclass method
# File lib/poke/checks/blacklist/spamhaus_blacklist_check.rb, line 17 def initialize(ip) name = "Blacklist of #{ip} (Spamhaus)" @ip = ip super name end
Public Instance Methods
run()
click to toggle source
Run the check
# File lib/poke/checks/blacklist/spamhaus_blacklist_check.rb, line 24 def run html = URI.parse("http://www.spamhaus.org/query/ip/#{@ip}").read doc = Nokogiri::HTML(html) nodes = doc.search("//span[@class='body']//b/font") spamhaus_nodes = { 0 => "SBL", 1 => "PBL", 2 => "XBL" } global_returncode = :ok global_message = "" spamhaus_nodes.each do |index, spamtype| returncode, message = test_node(nodes, index) global_returncode = :error if returncode == :error global_message += "[#{spamtype}] #{message} | " end # Find a better way to do this... global_message = global_message.chop.chop return global_returncode, global_message end
Private Instance Methods
test_node(nodes, index)
click to toggle source
Test a node
@param [Array] HTML nodes @param [Integer] Node index
# File lib/poke/checks/blacklist/spamhaus_blacklist_check.rb, line 57 def test_node(nodes, index) message = nodes.at(index).inner_text return :ok, message if message =~ /not listed/ return :error, message end