我正在使用 Apple 的 AsyncDNSResolver(GitHub 链接),并希望在创建
CAresDNSResolver.Options
时指定 AsyncDNSResolver(options:)
(要查询的超时 (2) 和名称服务器 (3)) (1) 问题是当我初始化 时var options: CAresDNSResolver.Options = CAresDNSResolver.Options()
我收到 Xcode 错误 'CAresDNSResolver.Options' initializer is inaccessible due to 'internal' protection level
。
我要求的是一种初始化选项结构的方法,以便我可以将其传递给 AsyncDNSResolver()。如果不可用,AsyncDNSResolver 将在其查询中使用设置名称服务器的方法。
谢谢你。
这是该功能,除了当我想设置选项时之外,都可以工作:
func getDmarcTxtWithDomainName(domainName: String, altDnsServer: String = "") async throws -> String {
var dmarcString: String
var resolver: AsyncDNSResolver
do {
if altDnsServer.isEmpty {
resolver = try AsyncDNSResolver()
} else {
// TODO: set the resolver to use altDnsServer and timeout
var options: CAresDNSResolver.Options = CAresDNSResolver.Options() // (1)
options.servers = [altDnsServer] // (2)
options.timeoutMillis = 2000. // (3)
resolver = try AsyncDNSResolver(options: options)
}
let txtRecords = try await resolver.queryTXT(name: domainName)
if txtRecords.count > 0 {
dmarcString = subStringInTxtRecords(subString: "v=DMARC", txtRecords: txtRecords)
if dmarcString.count == 0 {
dmarcString = "None found"
}
} else {
dmarcString = "None found"
}
} catch {
debugLog(object: error.localizedDescription)
throw error
}
return dmarcString
}
问题出在
var options
的创建上。将行更改为:
var options = CAresDNSResolver.Options.default
解决了问题。