From 63379365c7287adc71f557f45af56f428b2aa10c Mon Sep 17 00:00:00 2001 From: YangSen-qn <49863787+YangSen-qn@users.noreply.github.com> Date: Tue, 7 Jul 2020 22:22:38 +0800 Subject: [PATCH] Dns adaptive upload (#69) * record add source property & dns manager add query error handler * update version info --- CHANGELOG.md | 9 +++++++++ HappyDNS.podspec | 2 +- HappyDNS/Common/QNDnsManager.h | 5 ++++- HappyDNS/Common/QNDnsManager.m | 8 ++++++-- HappyDNS/Common/QNRecord.h | 13 ++++++++++++- HappyDNS/Common/QNRecord.m | 4 +++- HappyDNS/Http/QNDnspodEnterprise.m | 2 +- HappyDNS/Http/QNDnspodFree.m | 2 +- HappyDNS/Local/QNResolver.m | 2 +- HappyDNS/Local/QNTxtResolver.m | 2 +- 10 files changed, 39 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c73492f..d49c5ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,13 @@ #Changelog +## 0.3.17 (2020-07-03) + +### 修改 +* qiniu record增加source, dns manager增加query error handler + +## 0.3.16 (2020-05-07) + +### 修改 +* qiniu http dns 增加额外query接口 ## 0.3.15 (2019-02-12) diff --git a/HappyDNS.podspec b/HappyDNS.podspec index 4a8a555..b944a24 100644 --- a/HappyDNS.podspec +++ b/HappyDNS.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'HappyDNS' - s.version = '0.3.16' + s.version = '0.3.17' s.summary = 'DNS library for iOS and Mac' s.homepage = 'https://github.com/qiniu/happy-dns-objc' s.social_media_url = 'http://weibo.com/qiniutek' diff --git a/HappyDNS/Common/QNDnsManager.h b/HappyDNS/Common/QNDnsManager.h index 04b5e67..5df3af3 100644 --- a/HappyDNS/Common/QNDnsManager.h +++ b/HappyDNS/Common/QNDnsManager.h @@ -50,7 +50,10 @@ typedef void (^QNIpStatusCallback)(NSString *ip, int code, int ms); @interface QNDnsManager : NSObject /// 默认ttl值 单位:秒 -@property(nonatomic, assign)int defalutTtl; +@property(nonatomic, assign)int defaultTtl; + +/// 查询失败时抛出错误信息回调 +@property(nonatomic, copy)void(^ queryErrorHandler)(NSError *error, NSString *host); /** * 解析域名 diff --git a/HappyDNS/Common/QNDnsManager.m b/HappyDNS/Common/QNDnsManager.m index 264e7fb..985ed1f 100644 --- a/HappyDNS/Common/QNDnsManager.m +++ b/HappyDNS/Common/QNDnsManager.m @@ -135,7 +135,7 @@ - (NSArray *)queryInternalWithDomain:(QNDomain *)domain needRecordInfo:(BOOL)nee if (needRecordInfo) { NSMutableArray *retP = [NSMutableArray array]; for (NSString *host in ret) { - QNRecord *record = [[QNRecord alloc] init:host ttl:self.defalutTtl type:kQNTypeA]; + QNRecord *record = [[QNRecord alloc] init:host ttl:self.defaultTtl type:kQNTypeA source:QNRecordSourceUnknown]; [retP addObject:record]; } return [retP copy]; @@ -189,6 +189,10 @@ - (NSArray *)queryInternalWithDomain:(QNDomain *)domain needRecordInfo:(BOOL)nee if (tmp.code == kQNDomainNotOwnCode) { continue; } + + if (self.queryErrorHandler) { + self.queryErrorHandler(error, domain.domain); + } } if (records == nil || records.count == 0) { @@ -215,7 +219,7 @@ - (NSArray *)queryInternalWithDomain:(QNDomain *)domain needRecordInfo:(BOOL)nee if (needRecordInfo) { NSMutableArray *retP = [NSMutableArray array]; for (NSString *host in ret) { - QNRecord *record = [[QNRecord alloc] init:host ttl:self.defalutTtl type:kQNTypeA]; + QNRecord *record = [[QNRecord alloc] init:host ttl:self.defaultTtl type:kQNTypeA source:QNRecordSourceUnknown]; [retP addObject:record]; } return [retP copy]; diff --git a/HappyDNS/Common/QNRecord.h b/HappyDNS/Common/QNRecord.h index 25521c9..a1b2b58 100644 --- a/HappyDNS/Common/QNRecord.h +++ b/HappyDNS/Common/QNRecord.h @@ -28,15 +28,26 @@ extern const int kQNTypeCname; */ extern const int kQNTypeTXT; +typedef NS_ENUM(NSUInteger, QNRecordSource) { + QNRecordSourceUnknown, + QNRecordSourceDnspodFree, + QNRecordSourceDnspodEnterprise, + QNRecordSourceSystem, +}; + @interface QNRecord : NSObject + @property (nonatomic, strong, readonly) NSString *value; @property (nonatomic, readonly) int ttl; @property (nonatomic, readonly) int type; @property (nonatomic, readonly) long long timeStamp; +@property (nonatomic, readonly) QNRecordSource source; - (instancetype)init:(NSString *)value ttl:(int)ttl - type:(int)type; + type:(int)type + source:(QNRecordSource)source; - (BOOL)expired:(long long)time; + @end diff --git a/HappyDNS/Common/QNRecord.m b/HappyDNS/Common/QNRecord.m index a2846f1..d23e7c9 100644 --- a/HappyDNS/Common/QNRecord.m +++ b/HappyDNS/Common/QNRecord.m @@ -16,11 +16,13 @@ @implementation QNRecord - (instancetype)init:(NSString *)value ttl:(int)ttl - type:(int)type { + type:(int)type + source:(QNRecordSource)source { if (self = [super init]) { _value = value; _type = type; _ttl = ttl; + _source = source; _timeStamp = [[NSDate date] timeIntervalSince1970]; } return self; diff --git a/HappyDNS/Http/QNDnspodEnterprise.m b/HappyDNS/Http/QNDnspodEnterprise.m index 6d3d60f..95b0b8c 100644 --- a/HappyDNS/Http/QNDnspodEnterprise.m +++ b/HappyDNS/Http/QNDnspodEnterprise.m @@ -120,7 +120,7 @@ - (NSArray *)query:(QNDomain *)domain networkInfo:(QNNetworkInfo *)netInfo error NSArray *ipArray = [ips componentsSeparatedByString:@";"]; NSMutableArray *ret = [[NSMutableArray alloc] initWithCapacity:ipArray.count]; for (int i = 0; i < ipArray.count; i++) { - QNRecord *record = [[QNRecord alloc] init:[ipArray objectAtIndex:i] ttl:ttl type:kQNTypeA]; + QNRecord *record = [[QNRecord alloc] init:[ipArray objectAtIndex:i] ttl:ttl type:kQNTypeA source:QNRecordSourceDnspodEnterprise]; [ret addObject:record]; } return ret; diff --git a/HappyDNS/Http/QNDnspodFree.m b/HappyDNS/Http/QNDnspodFree.m index 6dccec1..bc8efdd 100644 --- a/HappyDNS/Http/QNDnspodFree.m +++ b/HappyDNS/Http/QNDnspodFree.m @@ -66,7 +66,7 @@ - (NSArray *)query:(QNDomain *)domain networkInfo:(QNNetworkInfo *)netInfo error NSArray *ipArray = [ips componentsSeparatedByString:@";"]; NSMutableArray *ret = [[NSMutableArray alloc] initWithCapacity:ipArray.count]; for (int i = 0; i < ipArray.count; i++) { - QNRecord *record = [[QNRecord alloc] init:[ipArray objectAtIndex:i] ttl:ttl type:kQNTypeA]; + QNRecord *record = [[QNRecord alloc] init:[ipArray objectAtIndex:i] ttl:ttl type:kQNTypeA source:QNRecordSourceDnspodFree]; [ret addObject:record]; } return ret; diff --git a/HappyDNS/Local/QNResolver.m b/HappyDNS/Local/QNResolver.m index fce6612..8dc7f90 100644 --- a/HappyDNS/Local/QNResolver.m +++ b/HappyDNS/Local/QNResolver.m @@ -71,7 +71,7 @@ @interface QNResolver () } else { continue; } - QNRecord *record = [[QNRecord alloc] init:val ttl:ttl type:t]; + QNRecord *record = [[QNRecord alloc] init:val ttl:ttl type:t source:QNRecordSourceSystem]; [array addObject:record]; } res_ndestroy(res); diff --git a/HappyDNS/Local/QNTxtResolver.m b/HappyDNS/Local/QNTxtResolver.m index c2422ee..7df3103 100644 --- a/HappyDNS/Local/QNTxtResolver.m +++ b/HappyDNS/Local/QNTxtResolver.m @@ -67,7 +67,7 @@ @interface QNTxtResolver () NSArray *ipArray = [val componentsSeparatedByString:@","]; NSMutableArray *ret = [[NSMutableArray alloc] initWithCapacity:ipArray.count]; for (int i = 0; i < ipArray.count; i++) { - QNRecord *record = [[QNRecord alloc] init:[ipArray objectAtIndex:i] ttl:ttl type:kQNTypeA]; + QNRecord *record = [[QNRecord alloc] init:[ipArray objectAtIndex:i] ttl:ttl type:kQNTypeA source:QNRecordSourceSystem]; [ret addObject:record]; }