带阿里标识的版本

This commit is contained in:
robin
2026-02-28 18:55:33 +08:00
parent 150799f41d
commit 5d0b7c7e91
477 changed files with 10813 additions and 4044 deletions

View File

@@ -59,7 +59,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
+ (void)initialize {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_streamOperateSyncQueue = dispatch_queue_create("com.alibaba.sdk.httpdns.runloopOperateQueue.HttpdnsRequest", DISPATCH_QUEUE_SERIAL);
_streamOperateSyncQueue = dispatch_queue_create("com.Trust.sdk.httpdns.runloopOperateQueue.HttpdnsRequest", DISPATCH_QUEUE_SERIAL);
});
}
@@ -83,7 +83,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
return nil;
}
//
// <EFBFBD><EFBFBD>?
if (![self validateResponseCode:json]) {
return nil;
}
@@ -94,7 +94,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
return nil;
}
//
// <EFBFBD><EFBFBD>?
NSArray *answers = [self getAnswersFromData:data];
if (!answers) {
return nil;
@@ -112,7 +112,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
return hostObjects;
}
//
// <EFBFBD><EFBFBD>?
- (BOOL)validateResponseCode:(NSDictionary *)json {
NSString *code = [json objectForKey:@"code"];
if (![code isEqualToString:@"success"]) {
@@ -122,17 +122,17 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
return YES;
}
//
// <EFBFBD><EFBFBD>?
- (id)extractDataContent:(NSDictionary *)json {
// mode
// mode<EFBFBD><EFBFBD>?
NSInteger mode = [[json objectForKey:@"mode"] integerValue];
id data = [json objectForKey:@"data"];
if (mode == 1) { // AES-CBC
//
// <EFBFBD><EFBFBD>?
data = [self decryptData:data withMode:mode];
} else if (mode != 0) {
// AES-GCM
// AES-GCM<EFBFBD><EFBFBD>?
HttpdnsLogDebug("Unsupported encryption mode: %ld", (long)mode);
return nil;
}
@@ -174,7 +174,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
return nil;
}
// 使
// 使<EFBFBD><EFBFBD>?
NSError *decryptError = nil;
NSData *decryptedData = [HttpdnsUtil decryptDataAESCBC:encryptedData withKey:keyData error:&decryptError];
@@ -183,7 +183,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
return nil;
}
// JSON
// JSON<EFBFBD><EFBFBD>?
NSError *jsonError;
id decodedData = [NSJSONSerialization JSONObjectWithData:decryptedData options:0 error:&jsonError];
@@ -205,7 +205,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
return answers;
}
//
// <EFBFBD><EFBFBD>?
- (HttpdnsHostObject *)createHostObjectFromAnswer:(NSDictionary *)answer {
//
NSString *host = [answer objectForKey:@"dn"];
@@ -251,7 +251,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
// IPv4TTL
[self setTTLForHostObject:hostObject fromData:v4Data forIPv6:NO];
// v4extra使
// v4extra使<EFBFBD><EFBFBD>?
[self processExtraInfo:v4Data forHostObject:hostObject];
// no_ip_codeIPv4
@@ -259,7 +259,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
hostObject.hasNoIpv4Record = YES;
}
} else {
// IPv4v4
// IPv4v4<EFBFBD><EFBFBD>?
hostObject.hasNoIpv4Record = YES;
}
}
@@ -289,12 +289,12 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
hostObject.hasNoIpv6Record = YES;
}
} else {
// IPv6v6
// IPv6v6<EFBFBD><EFBFBD>?
hostObject.hasNoIpv6Record = YES;
}
}
// IP
// IP<EFBFBD><EFBFBD>?
- (void)setIpArrayToHostObject:(HttpdnsHostObject *)hostObject fromIpsArray:(NSArray *)ips forIPv6:(BOOL)isIPv6 {
NSMutableArray *ipArray = [NSMutableArray array];
for (NSString *ip in ips) {
@@ -352,7 +352,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
return nil;
}
//
// <EFBFBD><EFBFBD>?
NSDictionary *paramsToSign = [self prepareSigningParams:request forEncryption:[self shouldUseEncryption]];
//
@@ -380,7 +380,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
return isV4 ? [scheduleCenter currentActiveServiceServerV4Host] : [scheduleCenter currentActiveServiceServerV6Host];
}
// 使
// 使<EFBFBD><EFBFBD>?
- (BOOL)shouldUseEncryption {
HttpDnsService *service = self.service ?: [HttpDnsService sharedInstance];
return [HttpdnsUtil isNotEmptyString:service.aesSecretKey];
@@ -391,13 +391,13 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
HttpDnsService *service = self.service ?: [HttpDnsService sharedInstance];
NSInteger accountId = service.accountID;
//
// <EFBFBD><EFBFBD>?
NSMutableDictionary *paramsToSign = [NSMutableDictionary dictionary];
//
NSMutableDictionary *paramsToEncrypt = [NSMutableDictionary dictionary];
// ID
// ID<EFBFBD><EFBFBD>?
[paramsToSign setObject:[NSString stringWithFormat:@"%ld", accountId] forKey:@"id"];
//
@@ -416,7 +416,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
// SDNS
[self addSdnsParams:request.sdnsParams toParams:paramsToEncrypt];
//
// <EFBFBD><EFBFBD>?
long expiredTimestamp = [self calculateExpiredTimestamp];
NSString *expiredTimestampString = [NSString stringWithFormat:@"%ld", expiredTimestamp];
[paramsToSign setObject:expiredTimestampString forKey:@"exp"];
@@ -435,7 +435,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
return paramsToSign;
}
//
// <EFBFBD><EFBFBD>?
- (NSString *)getQueryTypeString:(HttpdnsQueryIPType)queryIpType {
if ((queryIpType & HttpdnsQueryIPTypeIpv4) && (queryIpType & HttpdnsQueryIPTypeIpv6)) {
return @"4,6";
@@ -455,7 +455,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
}
}
//
// <EFBFBD><EFBFBD>?
- (long)calculateExpiredTimestamp {
HttpDnsService *service = self.service ?: [HttpDnsService sharedInstance];
long localTimestampOffset = (long)service.authTimeOffset;
@@ -510,7 +510,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
[signParts addObject:[NSString stringWithFormat:@"%@=%@", key, [params objectForKey:key]]];
}
//
// <EFBFBD><EFBFBD>?
NSString *signContent = [signParts componentsJoinedByString:@"&"];
// HMAC-SHA256
@@ -538,7 +538,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
// enc
[finalUrl appendFormat:@"&enc=%@", [params objectForKey:@"enc"]];
} else {
//
// <EFBFBD><EFBFBD>?
NSMutableDictionary *paramsForPlainText = [NSMutableDictionary dictionaryWithDictionary:params];
[paramsForPlainText removeObjectForKey:@"id"];
[paramsForPlainText removeObjectForKey:@"m"];
@@ -557,7 +557,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
}
}
//
// <EFBFBD><EFBFBD>?
if ([HttpdnsUtil isNotEmptyString:signature]) {
[finalUrl appendFormat:@"&s=%@", signature];
}
@@ -568,7 +568,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
return finalUrl;
}
//
// <EFBFBD><EFBFBD>?
- (void)appendAdditionalParams:(NSMutableString *)url {
// sessionId
NSString *sessionId = [HttpdnsUtil generateSessionID];
@@ -594,7 +594,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
if (!service) {
HttpdnsLogDebug("Missing service for accountId: %ld; ensure request.accountId is set and service initialized", (long)request.accountId);
if (error) {
*error = [NSError errorWithDomain:ALICLOUD_HTTPDNS_ERROR_DOMAIN code:ALICLOUD_HTTPDNS_HTTPS_COMMON_ERROR_CODE userInfo:@{NSLocalizedDescriptionKey: @"HttpDnsService not found for accountId"}];
*error = [NSError errorWithDomain:Trust_HTTPDNS_ERROR_DOMAIN code:Trust_HTTPDNS_HTTPS_COMMON_ERROR_CODE userInfo:@{NSLocalizedDescriptionKey: @"HttpDnsService not found for accountId"}];
}
return nil;
}
@@ -612,7 +612,7 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
@try {
HttpdnsIPStackType stackType = [[HttpdnsIpStackDetector sharedInstance] currentIpStack];
// 由于上面默认只用ipv4请求这里判断如果是ipv6-only环境那就用v6的ip再试一
// 由于上面默认只用ipv4请求这里判断如果是ipv6-only环境那就用v6的ip再试一<EFBFBD><EFBFBD>?
if (stackType == kHttpdnsIpv6Only) {
url = [self constructHttpdnsResolvingUrl:request forV4Net:NO];
HttpdnsLogDebug("lookupHostFromServer by ipv4 server failed, construct ipv6 backup url: %@", url);
@@ -631,8 +631,8 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
- (NSArray<HttpdnsHostObject *> *)sendRequest:(NSString *)urlStr queryIpType:(HttpdnsQueryIPType)queryIpType error:(NSError **)error {
if (![HttpdnsUtil isNotEmptyString:urlStr]) {
if (error) {
*error = [NSError errorWithDomain:ALICLOUD_HTTPDNS_ERROR_DOMAIN
code:ALICLOUD_HTTPDNS_HTTPS_COMMON_ERROR_CODE
*error = [NSError errorWithDomain:Trust_HTTPDNS_ERROR_DOMAIN
code:Trust_HTTPDNS_HTTPS_COMMON_ERROR_CODE
userInfo:@{NSLocalizedDescriptionKey: @"Empty resolve URL due to missing scheduler"}];
}
return nil;
@@ -654,8 +654,8 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
if (httpResponse.statusCode != 200) {
if (error) {
NSString *errorMessage = [NSString stringWithFormat:@"Unsupported http status code: %ld", (long)httpResponse.statusCode];
*error = [NSError errorWithDomain:ALICLOUD_HTTPDNS_ERROR_DOMAIN
code:ALICLOUD_HTTP_UNSUPPORTED_STATUS_CODE
*error = [NSError errorWithDomain:Trust_HTTPDNS_ERROR_DOMAIN
code:Trust_HTTP_UNSUPPORTED_STATUS_CODE
userInfo:@{NSLocalizedDescriptionKey: errorMessage}];
}
return nil;
@@ -673,8 +673,8 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
NSDictionary *json = [HttpdnsUtil getValidDictionaryFromJson:jsonValue];
if (!json) {
if (error) {
*error = [NSError errorWithDomain:ALICLOUD_HTTPDNS_ERROR_DOMAIN
code:ALICLOUD_HTTP_PARSE_JSON_FAILED
*error = [NSError errorWithDomain:Trust_HTTPDNS_ERROR_DOMAIN
code:Trust_HTTP_PARSE_JSON_FAILED
userInfo:@{NSLocalizedDescriptionKey: @"Failed to parse JSON response"}];
}
return nil;
@@ -691,10 +691,10 @@ static dispatch_queue_t _streamOperateSyncQueue = 0;
}
if ([extra isKindOfClass:[NSString class]]) {
//
// <EFBFBD><EFBFBD>?
return extra;
} else {
// JSON
// JSON<EFBFBD><EFBFBD>?
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:extra options:0 error:&error];
if (!error && jsonData) {