class Antispam::Blacklists::Httpbl
Public Class Methods
check(ip, key, verbose)
click to toggle source
# File lib/antispam/blacklists/httpbl.rb, line 5 def self.check(ip, key, verbose) threat = 0 begin old_result = get_old_result(ip) if old_result Rails.logger.info "Returning old result for #{ip}." if verbose return get_old_result(ip) end check = ip.split('.').reverse.join('.') host = key + '.' + check + ".dnsbl.httpbl.org" address = Resolv::getaddress(host) z,days,threat,iptype = address.split('.') Rails.logger.info "Spam located: #{iptype} type at #{threat} threat. (#{ip} - #{address})" if verbose # Create or update if (threat.to_i > 30) Rails.logger.info "Spamcheck: Very high, over 30!" end rescue Exception => e case e when Resolv::ResolvError #Not spam! This blacklist gives an error when there's no spam threat. Rails.logger.info "Spamcheck: OK! Resolve error means the httpbl does not consider this spam." when Interrupt #Something broke while trying to check blacklist. Rails.logger.info "Spamcheck: Interrupt when trying to resolve http blacklist. Possible timeout?" else # Time Out Rails.logger.info "Spamcheck: There was an error, possibly a time out, when checking this IP." Rails.logger.info e.to_s end end update_old_result(ip, threat) return threat end
get_old_result(ip)
click to toggle source
# File lib/antispam/blacklists/httpbl.rb, line 36 def self.get_old_result(ip) result = Antispam::Ip.find_by(address: ip, provider: 'httpbl') return nil if (result.nil? || result.expired?) return result.threat end
update_old_result(ip, threat)
click to toggle source
# File lib/antispam/blacklists/httpbl.rb, line 41 def self.update_old_result(ip, threat) result = Antispam::Ip.find_or_create_by(address: ip, provider: 'httpbl') result.update(threat: threat, expires_at: 24.hours.from_now) end