summaryrefslogtreecommitdiff
path: root/lib/gitlab/ip_check.rb
blob: f2e9b50d225717c0b53b54d77c6acf120527ac6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
module Gitlab
  class IpCheck

    def initialize(ip)
      @ip = ip

      application_settings = ApplicationSetting.current
      @ip_blocking_enabled =  application_settings.ip_blocking_enabled
      @dnsbl_servers_list = application_settings.dnsbl_servers_list
    end

    def spam?
      @ip_blocking_enabled && blacklisted?
    end

    private

    def blacklisted?
      on_dns_blacklist?
    end

    def on_dns_blacklist?
      dnsbl_check = DNSXLCheck.new
      prepare_dnsbl_list(dnsbl_check)
      dnsbl_check.test(@ip)
    end

    def prepare_dnsbl_list(dnsbl_check)
      @dnsbl_servers_list.split(',').map(&:strip).reject(&:empty?).each do |domain|
        dnsbl_check.add_list(domain, 1)
      end
    end
  end
end