Sha256: 8e8485739d7bfba841ed10be83508d292b1549d28d534bac47d6e2d9d9a5338d
Contents?: true
Size: 1.92 KB
Versions: 1
Compression:
Stored size: 1.92 KB
Contents
require 'ipaddr' require 'set' require 'andand' require 'active_support' require 'active_support/version' %w{ active_support/core_ext/object/blank }.each do |active_support_3_requirement| require active_support_3_requirement end if ActiveSupport::VERSION::MAJOR == 3 require 'active_record' require 'fast_timestamp' require 'honeypot/ipaddr_ext' require 'honeypot/remote_request' require 'honeypot/remote_host' require 'honeypot/rack' require 'honeypot/railtie' if defined?(Rails::Railtie) module Honeypot def self.included(base) base.class_eval do has_many :remote_requests, :as => :requestable, :dependent => :destroy has_many :remote_hosts, :through => :remote_requests, :uniq => true end end def log_remote_request(request) effective_ip_address = [ request.env['rack.session'].andand['honeypot.last_known_remote_ip'].to_s, request.remote_ip.to_s ].detect(&:present?) remote_host = RemoteHost.find_or_create_by_ip_address effective_ip_address remote_request = remote_requests.find_or_create_by_remote_host_id remote_host.id remote_request.last_http_referer = request.referer if request.referer.present? remote_request.last_request_uri = request.url if request.url.present? remote_request.increment :hits remote_request.save! true end def related_requestables(seen_remote_host_ids = []) set = Set.new conditions = seen_remote_host_ids.present? ? [ "remote_hosts.id NOT IN (?)", seen_remote_host_ids ] : nil remote_hosts.where(conditions).find_in_batches do |batch| batch.each do |remote_host| seen_remote_host_ids << remote_host.id remote_host.remote_requests.all(:include => :requestable).each do |remote_request| set << remote_request.requestable end end end if respond_to?(:actor) and actor != self set += actor.related_requestables(seen_remote_host_ids) end set.delete self set end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
honeypot-0.0.6 | lib/honeypot.rb |