blob: 3b212a86e516d47069fbb29e0f18a5b5a86285c6 (
plain) (
blame)
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
|
import Foundation
struct ReverseDNSService {
static func lookup(ip: String, resolverURLString: String) async -> ServiceResult<String> {
let octets = ip.split(separator: ".")
guard octets.count == 4 else {
return .error("Invalid IPv4 address")
}
let reversed = octets.reversed().joined(separator: ".")
let ptrDomain = "\(reversed).in-addr.arpa"
do {
let records = try await DNSLookupService.lookup(
domain: ptrDomain,
recordType: .PTR,
resolverURLString: resolverURLString
)
if let record = records.first?.value {
return .success(record)
}
return .empty("No PTR record found")
} catch {
return .error(error.localizedDescription)
}
}
}
|