Skip to content

Commit

Permalink
dns server private lookupHost func
Browse files Browse the repository at this point in the history
  • Loading branch information
YangSen-qn committed Aug 19, 2021
1 parent 0f7b02f commit 6a852e5
Show file tree
Hide file tree
Showing 10 changed files with 58 additions and 74 deletions.
4 changes: 4 additions & 0 deletions HappyDNS-dynamic/HappyDNS.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,9 @@
#import <HappyDNS/QNGetAddrInfo.h>
#import <HappyDNS/QNNetworkInfo.h>
#import <HappyDNS/QNResolverDelegate.h>
#import <HappyDNS/QNDnsResolver.h>
#import <HappyDNS/QNDnsUdpResolver.h>
#import <HappyDNS/QNDohResolver.h>
#import <HappyDNS/QNDnsDefine.h>
#import <HappyDNS/QNDnspodEnterprise.h>
#import <HappyDNS/QNHijackingDetectWrapper.h>
24 changes: 13 additions & 11 deletions HappyDNS.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
3159B76C26B00B6000380B4F /* QNDnsResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B75E26B00B6000380B4F /* QNDnsResponse.h */; };
3159B76D26B00B6000380B4F /* QNDnsRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B75F26B00B6000380B4F /* QNDnsRequest.h */; };
3159B76E26B00B6000380B4F /* QNDnsRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B75F26B00B6000380B4F /* QNDnsRequest.h */; };
3159B76F26B00B6000380B4F /* QNDnsDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B76026B00B6000380B4F /* QNDnsDefine.h */; };
3159B77026B00B6000380B4F /* QNDnsDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B76026B00B6000380B4F /* QNDnsDefine.h */; };
3159B76F26B00B6000380B4F /* QNDnsDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B76026B00B6000380B4F /* QNDnsDefine.h */; settings = {ATTRIBUTES = (Public, ); }; };
3159B77026B00B6000380B4F /* QNDnsDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B76026B00B6000380B4F /* QNDnsDefine.h */; settings = {ATTRIBUTES = (Public, ); }; };
3159B77326B00B6000380B4F /* QNDnsError.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B76226B00B6000380B4F /* QNDnsError.h */; };
3159B77426B00B6000380B4F /* QNDnsError.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B76226B00B6000380B4F /* QNDnsError.h */; };
3159B77526B00B6000380B4F /* QNDnsMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B76326B00B6000380B4F /* QNDnsMessage.m */; };
Expand All @@ -51,8 +51,8 @@
3159B7D926B019A400380B4F /* QNDohResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B7D726B019A400380B4F /* QNDohResolver.m */; };
3159B7DA26B019A400380B4F /* QNDohResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B7D726B019A400380B4F /* QNDohResolver.m */; };
3159B7DB26B019A400380B4F /* QNDohResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B7D726B019A400380B4F /* QNDohResolver.m */; };
3159B7DC26B019A400380B4F /* QNDohResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B7D826B019A400380B4F /* QNDohResolver.h */; };
3159B7DD26B019A400380B4F /* QNDohResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B7D826B019A400380B4F /* QNDohResolver.h */; };
3159B7DC26B019A400380B4F /* QNDohResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B7D826B019A400380B4F /* QNDohResolver.h */; settings = {ATTRIBUTES = (Public, ); }; };
3159B7DD26B019A400380B4F /* QNDohResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B7D826B019A400380B4F /* QNDohResolver.h */; settings = {ATTRIBUTES = (Public, ); }; };
3159B7F326B0F7B400380B4F /* DnsServerResolverTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B7F126B0F7B400380B4F /* DnsServerResolverTest.m */; };
3159B7F426B0F7B400380B4F /* DnsServerResolverTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B7F126B0F7B400380B4F /* DnsServerResolverTest.m */; };
3159B7F526B0F7B400380B4F /* DnsServerResolverTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B7F126B0F7B400380B4F /* DnsServerResolverTest.m */; };
Expand All @@ -64,8 +64,8 @@
3159B81826B10CBC00380B4F /* QNDnsResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B81526B10CBC00380B4F /* QNDnsResolver.m */; };
3159B81926B10CBC00380B4F /* QNDnsResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B81526B10CBC00380B4F /* QNDnsResolver.m */; };
3159B81A26B10CBC00380B4F /* QNDnsResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B81526B10CBC00380B4F /* QNDnsResolver.m */; };
3159B82926B1115000380B4F /* QNDnsUdpResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B82726B1114F00380B4F /* QNDnsUdpResolver.h */; };
3159B82A26B1115000380B4F /* QNDnsUdpResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B82726B1114F00380B4F /* QNDnsUdpResolver.h */; };
3159B82926B1115000380B4F /* QNDnsUdpResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B82726B1114F00380B4F /* QNDnsUdpResolver.h */; settings = {ATTRIBUTES = (Public, ); }; };
3159B82A26B1115000380B4F /* QNDnsUdpResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3159B82726B1114F00380B4F /* QNDnsUdpResolver.h */; settings = {ATTRIBUTES = (Public, ); }; };
3159B82B26B1115000380B4F /* QNDnsUdpResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B82826B1114F00380B4F /* QNDnsUdpResolver.m */; };
3159B82C26B1115000380B4F /* QNDnsUdpResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B82826B1114F00380B4F /* QNDnsUdpResolver.m */; };
3159B82D26B1115000380B4F /* QNDnsUdpResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B82826B1114F00380B4F /* QNDnsUdpResolver.m */; };
Expand All @@ -74,6 +74,7 @@
3159B87326B141BD00380B4F /* QNAsyncUdpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B87026B141BD00380B4F /* QNAsyncUdpSocket.m */; };
3159B87426B141BD00380B4F /* QNAsyncUdpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B87026B141BD00380B4F /* QNAsyncUdpSocket.m */; };
3159B87526B141BD00380B4F /* QNAsyncUdpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159B87026B141BD00380B4F /* QNAsyncUdpSocket.m */; };
31A697D426CE3B8C00D84ABC /* QNLruCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DF5B337E1D2BB28500CD608F /* QNLruCache.h */; };
6B6090D36D2ECCD34FCE6DAE /* libPods-HappyDNS_iOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B7A5E527D9CF80E564A69D85 /* libPods-HappyDNS_iOSTests.a */; };
71FB87ACF7AF0163E3F8AF2F /* libPods-HappyDNS_MacTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 04A4DFEA159C0945AFABEA3A /* libPods-HappyDNS_MacTests.a */; };
93FFD15120906779001DA341 /* QNMD5.h in Headers */ = {isa = PBXBuildFile; fileRef = 93FFD14F20906779001DA341 /* QNMD5.h */; };
Expand Down Expand Up @@ -111,7 +112,7 @@
B0E79DA92105DBD9000F6903 /* QNDnspodEnterprise.h in Headers */ = {isa = PBXBuildFile; fileRef = DFFC8AAE1B6BD77000EC938D /* QNDnspodEnterprise.h */; settings = {ATTRIBUTES = (Public, ); }; };
B0E79DAA2105DBE0000F6903 /* QNHijackingDetectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = DF5AC8DF1B575E2800728D30 /* QNHijackingDetectWrapper.h */; settings = {ATTRIBUTES = (Public, ); }; };
DF0A03181B3B999D00E3778C /* libHappyDNS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DF801F951B3A4F4D00866FDE /* libHappyDNS.a */; };
DF0A03201B3BABBD00E3778C /* QNNetworkInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0A031E1B3BABBD00E3778C /* QNNetworkInfo.h */; };
DF0A03201B3BABBD00E3778C /* QNNetworkInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0A031E1B3BABBD00E3778C /* QNNetworkInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
DF0A03211B3BABBD00E3778C /* QNNetworkInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = DF0A031F1B3BABBD00E3778C /* QNNetworkInfo.m */; };
DF0A03221B3BABBD00E3778C /* QNNetworkInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = DF0A031F1B3BABBD00E3778C /* QNNetworkInfo.m */; };
DF1552441B3A9536008D3E7C /* ResolverTest.m in Sources */ = {isa = PBXBuildFile; fileRef = DF1552431B3A9536008D3E7C /* ResolverTest.m */; };
Expand Down Expand Up @@ -145,16 +146,16 @@
DF5B33821D2BB28500CD608F /* QNLruCache.m in Sources */ = {isa = PBXBuildFile; fileRef = DF5B337F1D2BB28500CD608F /* QNLruCache.m */; };
DF5B33841D2BC78900CD608F /* LruCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = DF5B33831D2BC78900CD608F /* LruCacheTest.m */; };
DF5B33851D2BC78900CD608F /* LruCacheTest.m in Sources */ = {isa = PBXBuildFile; fileRef = DF5B33831D2BC78900CD608F /* LruCacheTest.m */; };
DF801F641B396D5100866FDE /* QNRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = DF801F621B396D5100866FDE /* QNRecord.h */; };
DF801F641B396D5100866FDE /* QNRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = DF801F621B396D5100866FDE /* QNRecord.h */; settings = {ATTRIBUTES = (Public, ); }; };
DF801F651B396D5100866FDE /* QNRecord.m in Sources */ = {isa = PBXBuildFile; fileRef = DF801F631B396D5100866FDE /* QNRecord.m */; };
DF801F691B396DA000866FDE /* QNDnsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DF801F671B396DA000866FDE /* QNDnsManager.h */; };
DF801F691B396DA000866FDE /* QNDnsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DF801F671B396DA000866FDE /* QNDnsManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
DF801F6A1B396DA000866FDE /* QNDnsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DF801F681B396DA000866FDE /* QNDnsManager.m */; };
DF801F731B396E3C00866FDE /* QNResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = DF801F711B396E3C00866FDE /* QNResolver.h */; };
DF801F741B396E3C00866FDE /* QNResolver.m in Sources */ = {isa = PBXBuildFile; fileRef = DF801F721B396E3C00866FDE /* QNResolver.m */; };
DF801F821B396E9A00866FDE /* QNHosts.h in Headers */ = {isa = PBXBuildFile; fileRef = DF801F801B396E9A00866FDE /* QNHosts.h */; };
DF801F831B396E9A00866FDE /* QNHosts.m in Sources */ = {isa = PBXBuildFile; fileRef = DF801F811B396E9A00866FDE /* QNHosts.m */; };
DF801F871B396F5500866FDE /* QNResolverDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DF801F851B396F5500866FDE /* QNResolverDelegate.h */; };
DF801F8C1B39743200866FDE /* QNDomain.h in Headers */ = {isa = PBXBuildFile; fileRef = DF801F8A1B39743200866FDE /* QNDomain.h */; };
DF801F871B396F5500866FDE /* QNResolverDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DF801F851B396F5500866FDE /* QNResolverDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
DF801F8C1B39743200866FDE /* QNDomain.h in Headers */ = {isa = PBXBuildFile; fileRef = DF801F8A1B39743200866FDE /* QNDomain.h */; settings = {ATTRIBUTES = (Public, ); }; };
DF801F8D1B39743200866FDE /* QNDomain.m in Sources */ = {isa = PBXBuildFile; fileRef = DF801F8B1B39743200866FDE /* QNDomain.m */; };
DF8152671D3D4097007C44DA /* QNGetAddrInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = DF8152651D3D4097007C44DA /* QNGetAddrInfo.m */; };
DF8152681D3D4097007C44DA /* QNGetAddrInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = DF8152651D3D4097007C44DA /* QNGetAddrInfo.m */; };
Expand Down Expand Up @@ -587,6 +588,7 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
31A697D426CE3B8C00D84ABC /* QNLruCache.h in Headers */,
3159B77426B00B6000380B4F /* QNDnsError.h in Headers */,
B0E79D852105DA0D000F6903 /* HappyDNS.h in Headers */,
B0E79DAA2105DBE0000F6903 /* QNHijackingDetectWrapper.h in Headers */,
Expand Down
6 changes: 3 additions & 3 deletions HappyDNS/Dns/QNDnsResolver.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,20 @@
//

#import "QNDnsDefine.h"
#import "QNDnsResponse.h"
#import "QNRecord.h"
#import "QNResolverDelegate.h"

NS_ASSUME_NONNULL_BEGIN

@class QNDnsResponse;
// 抽象对象,不能直接使用,使用其子类
@interface QNDnsResolver : NSObject <QNResolverDelegate>

@property(nonatomic, assign, readonly)int recordType;
@property(nonatomic, assign, readonly)int timeout;
@property(nonatomic, copy, readonly)NSArray *servers;

- (QNDnsResponse *)lookupHost:(NSString *)host
error:(NSError **)error;


// 抽象方法,子类实现
- (void)request:(NSString *)server
Expand Down
1 change: 1 addition & 0 deletions HappyDNS/Dns/QNDnsResolver.m
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#import "QNRecord.h"
#import "QNDomain.h"
#import "QNDnsError.h"
#import "QNDnsResponse.h"
#import "QNDnsResolver.h"

@interface QNDnsResolver()
Expand Down
1 change: 1 addition & 0 deletions HappyDNS/Dns/QNDnsUdpResolver.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#import "QNRecord.h"
#import "QNDomain.h"
#import "QNDnsError.h"
#import "QNDnsResponse.h"
#import "QNDnsUdpResolver.h"
#import <QNAsyncUdpSocket.h>

Expand Down
1 change: 0 additions & 1 deletion HappyDNS/Dns/QNDohResolver.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

#import "QNDnsResolver.h"
#import "QNDnsDefine.h"
#import "QNDnsResponse.h"

NS_ASSUME_NONNULL_BEGIN

Expand Down
2 changes: 1 addition & 1 deletion HappyDNS/Dns/QNDohResolver.m
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
//
// Created by yangsen on 2021/7/15.
//

#import "QNDnsResponse.h"
#import "QNDohResolver.h"

@interface QNDohResolver()
Expand Down
7 changes: 5 additions & 2 deletions HappyDNS/HappyDNS.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,14 @@
#import "QNDnsManager.h"
#import "QNDnspodEnterprise.h"
#import "QNDomain.h"
#import "QNDnsResolver.h"
#import "QNDnsUdpResolver.h"
#import "QNDohResolver.h"
#import "QNDnsDefine.h"
#import "QNHijackingDetectWrapper.h"
#import "QNIP.h"
#import "QNNetworkInfo.h"
#import "QNRecord.h"
#import "QNResolver.h"
#import "QNResolverDelegate.h"

#import "QNGetAddrInfo.h"
#import "QNGetAddrInfo.h"
40 changes: 14 additions & 26 deletions HappyDNSTests/DnsServerResolverTest.m
Original file line number Diff line number Diff line change
Expand Up @@ -17,45 +17,33 @@ @interface DnsServerResolverTest : XCTestCase
@implementation DnsServerResolverTest

- (void)testSimpleDns {
NSString *host = @"qiniu.com";
NSString *host = @"en.wikipedia.org";
NSError *err = nil;

NSArray *typeArray = @[@(kQNTypeA), @(kQNTypeCname), @(kQNTypeAAAA), @(kQNTypeTXT)];
NSArray *typeArray = @[@(kQNTypeA), @(kQNTypeAAAA)];
for (NSNumber *type in typeArray) {
QNDnsUdpResolver *server = [QNDnsUdpResolver resolverWithServerIP:@"8.8.8.8" recordType:type.intValue timeout:5];
QNDnsResponse *response = [server lookupHost:host error:&err];
NSLog(@"response:%@", response);

XCTAssertNil(err, "error:%@", err);
XCTAssertTrue(response.rCode == 0, "type:%@ response:%@", type, response);
NSArray *records = [server query:[[QNDomain alloc] init:host] networkInfo:nil error:&err];
NSLog(@"== records:%@", records);
XCTAssertNil(err, "query error:%@", err);
XCTAssertNotNil(records, "type:%@ query result nil", type);
XCTAssertTrue(records.count > 0, "type:%@ query result empty", type);
}

QNDnsUdpResolver *server = [QNDnsUdpResolver resolverWithServerIP:@"8.8.8.8"];
NSArray *ipv4List = [server query:[[QNDomain alloc] init:host] networkInfo:nil error:&err];
XCTAssertNil(err, "ipv4 query error:%@", err);
XCTAssertNotNil(ipv4List, "ipv4 query result nil");
XCTAssertTrue(ipv4List.count > 0, "ipv4 query result empty");
}

- (void)testMultiDnsServer {
NSString *host = @"qiniu.com";
NSString *host = @"en.wikipedia.org";
NSError *err = nil;

NSArray *typeArray = @[@(kQNTypeA), @(kQNTypeCname), @(kQNTypeAAAA), @(kQNTypeTXT)];
NSArray *typeArray = @[@(kQNTypeA), @(kQNTypeAAAA)];
for (NSNumber *type in typeArray) {
QNDnsUdpResolver *server = [QNDnsUdpResolver resolverWithServerIPs:@[@"8.8.8.8", @"114.114.114.114"] recordType:type.intValue queue:nil timeout:5];
QNDnsResponse *response = [server lookupHost:host error:&err];
NSLog(@"response:%@", response);

XCTAssertNil(err, "error:%@", err);
XCTAssertTrue(response.rCode == 0, "type:%@ response:%@", type, response);
NSArray *records = [server query:[[QNDomain alloc] init:host] networkInfo:nil error:&err];
NSLog(@"== records:%@", records);
XCTAssertNil(err, "query error:%@", err);
XCTAssertNotNil(records, "type:%@ query result nil", type);
XCTAssertTrue(records.count > 0, "type:%@ query result empty", type);
}

QNDnsUdpResolver *server = [QNDnsUdpResolver resolverWithServerIPs:@[@"8.8.8.8", @"114.114.114.114"] recordType:kQNTypeA queue:nil timeout:5];
NSArray *ipv4List = [server query:[[QNDomain alloc] init:host] networkInfo:nil error:&err];
XCTAssertNil(err, "ipv4 query error:%@", err);
XCTAssertNotNil(ipv4List, "ipv4 query result nil");
XCTAssertTrue(ipv4List.count > 0, "ipv4 query result empty");
}

@end
46 changes: 16 additions & 30 deletions HappyDNSTests/DohResolverTest.m
Original file line number Diff line number Diff line change
Expand Up @@ -16,51 +16,37 @@ @interface DohResolverTest : XCTestCase
@implementation DohResolverTest

- (void)testSimpleDns {
NSString *server = @"https://dns.alidns.com/dns-query";
NSString *host = @"qiniu.com";
NSString *host = @"en.wikipedia.org";
NSError *err = nil;

NSArray *typeArray = @[@(kQNTypeA), @(kQNTypeCname), @(kQNTypeAAAA), @(kQNTypeTXT)];
NSArray *typeArray = @[@(kQNTypeA), @(kQNTypeAAAA)];
for (NSNumber *type in typeArray) {
// https://dns.alidns.com/dns-query
// https://dns.google/dns-query
QNDohResolver *resolver = [QNDohResolver resolverWithServer:server recordType:type.intValue timeout:5];
QNDnsResponse *response = [resolver lookupHost:host error:&err];
NSLog(@"response:%@", response);

XCTAssertNil(err, "error:%@", err);
XCTAssertTrue(response.rCode == 0, "type:%@ response:%@", type, response);
QNDohResolver *server = [QNDohResolver resolverWithServer:@"https://dns.alidns.com/dns-query" recordType:type.intValue timeout:5];
NSArray *records = [server query:[[QNDomain alloc] init:host] networkInfo:nil error:&err];
NSLog(@"== records:%@", records);
XCTAssertNil(err, "query error:%@", err);
XCTAssertNotNil(records, "type:%@ query result nil", type);
XCTAssertTrue(records.count > 0, "type:%@ query result empty", type);
}

QNDohResolver *resolver = [QNDohResolver resolverWithServer:server];
NSArray *ipv4List = [resolver query:[[QNDomain alloc] init:host] networkInfo:nil error:&err];
NSLog(@"host:%@ ips:%@", host, ipv4List);
XCTAssertNil(err, "ipv4 query error:%@", err);
XCTAssertNotNil(ipv4List, "ipv4 query result nil");
XCTAssertTrue(ipv4List.count > 0, "ipv4 query result empty");
}

- (void)testMultiDnsServer {
NSString *host = @"qiniu.com";
NSString *host = @"en.wikipedia.org";
NSError *err = nil;

NSArray *typeArray = @[@(kQNTypeA), @(kQNTypeCname), @(kQNTypeAAAA), @(kQNTypeTXT)];
NSArray *typeArray = @[@(kQNTypeA), @(kQNTypeAAAA)];
for (NSNumber *type in typeArray) {
// https://dns.alidns.com/dns-query
// https://dns.google/dns-query
QNDohResolver *server = [QNDohResolver resolverWithServers:@[@"https://dns.alidns.com/dns-query", @"https://dns.google/dns-query"] recordType:type.intValue timeout:5];
QNDnsResponse *response = [server lookupHost:host error:&err];
NSLog(@"response:%@", response);

XCTAssertNil(err, "error:%@", err);
XCTAssertTrue(response.rCode == 0, "type:%@ response:%@", type, response);
NSArray *records = [server query:[[QNDomain alloc] init:host] networkInfo:nil error:&err];
NSLog(@"== records:%@", records);
XCTAssertNil(err, "query error:%@", err);
XCTAssertNotNil(records, "type:%@ query result nil", type);
XCTAssertTrue(records.count > 0, "type:%@ query result empty", type);
}

QNDohResolver *server = [QNDohResolver resolverWithServers:@[@"https://dns.alidns.com/dns-query", @"https://dns.google/dns-query"] recordType:kQNTypeA timeout:5];
NSArray *ipv4List = [server query:[[QNDomain alloc] init:host] networkInfo:nil error:&err];
XCTAssertNil(err, "ipv4 query error:%@", err);
XCTAssertNotNil(ipv4List, "ipv4 query result nil");
XCTAssertTrue(ipv4List.count > 0, "ipv4 query result empty");

}

@end

0 comments on commit 6a852e5

Please sign in to comment.