1
0
Fork 0
forked from gitea/nas

Add DomainResource class to wrap MX lookup/normalize (#32864)

This commit is contained in:
Matt Jankowski 2024-11-14 08:47:29 -05:00 committed by GitHub
parent e8b6607ece
commit 62d65504f6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 46 additions and 19 deletions

View file

@ -58,10 +58,7 @@ module Admin
private
def set_resolved_records
Resolv::DNS.open do |dns|
dns.timeouts = 5
@resolved_records = dns.getresources(@email_domain_block.domain, Resolv::DNS::Resource::IN::MX).to_a
end
@resolved_records = DomainResource.new(@email_domain_block.domain).mx
end
def resource_params

View file

@ -0,0 +1,22 @@
# frozen_string_literal: true
class DomainResource
attr_reader :domain
RESOLVE_TIMEOUT = 5
def initialize(domain)
@domain = domain
end
def mx
Resolv::DNS.open do |dns|
dns.timeouts = RESOLVE_TIMEOUT
dns
.getresources(domain, Resolv::DNS::Resource::IN::MX)
.to_a
.map { |mx| mx.exchange.to_s }
.compact_blank
end
end
end

View file

@ -457,13 +457,7 @@ class User < ApplicationRecord
# Doing this conditionally is not very satisfying, but this is consistent
# with the MX records validations we do and keeps the specs tractable.
unless self.class.skip_mx_check?
Resolv::DNS.open do |dns|
dns.timeouts = 5
records = dns.getresources(domain, Resolv::DNS::Resource::IN::MX).to_a.map { |e| e.exchange.to_s }.compact_blank
end
end
records = DomainResource.new(domain).mx unless self.class.skip_mx_check?
EmailDomainBlock.requires_approval?(records + [domain], attempt_ip: sign_up_ip)
end

View file

@ -30,12 +30,12 @@
%label.batch-table__row__select.batch-table__row__select--aligned.batch-checkbox
= f.input_field :other_domains,
as: :boolean,
checked_value: record.exchange.to_s,
checked_value: record,
include_hidden: false,
multiple: true
.batch-table__row__content.pending-account
.pending-account__header
%samp= record.exchange.to_s
%samp= record
%br
= t('admin.email_domain_blocks.dns.types.mx')