Sha256: 69f81cf9e48f82a2ecb05654d47b101c0ff3a5763c6e603f7cb1226e6d54896f

Contents?: true

Size: 1.62 KB

Versions: 11

Compression:

Stored size: 1.62 KB

Contents

# frozen_string_literal: true

require_relative "base"

module Neetob
  class CLI
    module Cloudflare
      class VerifySpf < Base
        attr_accessor :domain

        def initialize(domain)
          super()
          @domain = domain
        end

        def run
          zone_id = ZONE_IDS[domain.to_sym]
          raise(StandardError, "Domain '#{domain}' not found.") if zone_id.nil?

          url = create_url(zone_id, "dns_records")
          response = get(url)

          raise(StandardError, "No DNS records found") if response[:result].empty?

          spf_txt_records = response[:result].filter { |dns|
            dns[:type] == "TXT" &&
            (dns[:content].start_with?("v=spf1") || dns[:content].start_with?("\"v=spf1"))
          }

          if spf_txt_records.count > 1
            ui.error("More than one TXT record found for SPF")
          elsif spf_txt_records.count == 0
            ui.success("No TXT record for SPF present")
          else
            ui.success("Only one TXT record for SPF present")
          end

          spf_txt_records.each_with_index do |dns, index|
            ui.info("SPF TXT #{index + 1}: #{dns[:content]}")
          end

          if spf_txt_records.count == 1
            unique_spf_txt_record = spf_txt_records.first

            if unique_spf_txt_record[:content].end_with?("-all") || unique_spf_txt_record[:content].end_with?("-all\"")
              ui.success("SPF TXT record is set to hard fail for SPF compliance")
            else
              ui.error("SPF TXT record is not set to hard fail for SPF compliance")
            end
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
neetob-0.5.16 lib/neetob/cli/cloudflare/verify_spf.rb
neetob-0.5.15 lib/neetob/cli/cloudflare/verify_spf.rb
neetob-0.5.14 lib/neetob/cli/cloudflare/verify_spf.rb
neetob-0.5.13 lib/neetob/cli/cloudflare/verify_spf.rb
neetob-0.5.12 lib/neetob/cli/cloudflare/verify_spf.rb
neetob-0.5.11 lib/neetob/cli/cloudflare/verify_spf.rb
neetob-0.5.10 lib/neetob/cli/cloudflare/verify_spf.rb
neetob-0.5.9 lib/neetob/cli/cloudflare/verify_spf.rb
neetob-0.5.8 lib/neetob/cli/cloudflare/verify_spf.rb
neetob-0.5.7 lib/neetob/cli/cloudflare/verify_spf.rb
neetob-0.5.6 lib/neetob/cli/cloudflare/verify_spf.rb