# frozen_string_literal: true module Neetob class CLI module MonthlyAudit module InstancesAndAddons module Cloudflare class DnsEntryHasProxyStatus < CLI::Base def initialize super() end def run ui.success "### 3.2.2. Checking whether DNS entry has proxy status" domains_data = [["Domain", "DNS proxy status", "Audit Passed"]] ui.info("\n", print_to_audit_log: false) Neetob::CLI::Cloudflare::Base::ZONE_IDS.keys.select { |domain| domain.to_s.include?(".com") }.map do |domain| ui.info("Checking proxy status for DNS entries for #{domain}", print_to_audit_log: false) domain = domain.to_s proxiable_records = Neetob::CLI::Cloudflare::DnsProxyStatus.new(domain).run record_to_check = proxiable_records.select { |record| record[:name] == "*.#{domain}" }.first if record_to_check.nil? domains_data << [domain, "No * records found", "No"] else is_wildcard_subdomain_proxied = record_to_check[:proxied] audit_passed = is_wildcard_subdomain_proxied ? "Yes" : "No" proxy_status = is_wildcard_subdomain_proxied ? "on" : "off" domains_data << [domain, "#{record_to_check[:name]} has proxying turned #{proxy_status}", audit_passed] end end ui.print_table(domains_data) end end end end end end end