diff --git a/ShadowsocksX-NG/Info.plist b/ShadowsocksX-NG/Info.plist index 000c544..c74cb59 100644 --- a/ShadowsocksX-NG/Info.plist +++ b/ShadowsocksX-NG/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.3.6-R8 + 1.3.7-R8 CFBundleSignature ???? CFBundleURLTypes @@ -48,7 +48,7 @@ CFBundleVersion - 2 + 1 LSApplicationCategoryType public.app-category.utilities LSMinimumSystemVersion diff --git a/ShadowsocksX-NG/Utils.m b/ShadowsocksX-NG/Utils.m index 468344b..c91e1da 100644 --- a/ShadowsocksX-NG/Utils.m +++ b/ShadowsocksX-NG/Utils.m @@ -137,7 +137,19 @@ NSDictionary* ParseSSURL(NSURL* url) { }else if ([urlString hasPrefix:@"ssr://"]){ // ssr:// + base64(abc.xyz:12345:auth_sha1_v2:rc4-md5:tls1.2_ticket_auth:{base64(password)}/?obfsparam={base64(混淆参数(网址))}&remarks={base64(节点名称)}) + + urlString = [urlString stringByReplacingOccurrencesOfString:@"ssr://" withString:@"" options:NSAnchoredSearch range:NSMakeRange(0, urlString.length)]; + urlString = [urlString stringByReplacingOccurrencesOfString:@"-" withString:@"+"]; + urlString = [urlString stringByReplacingOccurrencesOfString:@"_" withString:@"/"]; + if ([urlString length]%4!=0) { + int n = 4 - [urlString length]%4; + if (1==n) { + urlString = [urlString stringByAppendingString:@"="]; + } else if (2==n) { + urlString = [urlString stringByAppendingString:@"=="]; + } + } NSData *data = [[NSData alloc] initWithBase64EncodedString:urlString options:0]; NSString *decodedString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; urlString = decodedString; @@ -163,12 +175,12 @@ NSDictionary* ParseSSURL(NSURL* url) { NSRange lastParamSplit = [toSplitString rangeOfString:@"="]; if (lastParamSplit.location != NSNotFound) { NSString *key = [toSplitString substringToIndex:lastParamSplit.location]; - NSString *value = [[NSString alloc] initWithData:[[NSData alloc] initWithBase64EncodedString:[toSplitString substringFromIndex:lastParamSplit.location+1] options:0]encoding:NSUTF8StringEncoding]; + NSString *value = [[NSString alloc] initWithData:[[NSData alloc] initWithBase64EncodedString:[[[toSplitString stringByReplacingOccurrencesOfString:@"-" withString:@"+"] stringByReplacingOccurrencesOfString:@"_" withString:@"/"]substringFromIndex:lastParamSplit.location+1] options:0]encoding:NSUTF8StringEncoding]; // NSString *value = [toSplitString substringFromIndex:lastParamSplit.location+1]; [parserLastParamDict setValue: value forKey: key]; } } - NSLog(@"parserLastParamDict is %@",parserLastParamDict); +// NSLog(@"parserLastParamDict is %@",parserLastParamDict); //后面已经parser完成,接下来需要解析到profile里面 //abc.xyz:12345:auth_sha1_v2:rc4-md5:tls1.2_ticket_auth:{base64(password)} @@ -217,6 +229,7 @@ NSDictionary* ParseSSURL(NSURL* url) { @"ssrObfsParam":ssrObfsParam, @"ssrProtocol":ssrProtocol, @"ssrProtocolParam":ssrProtocolParam, + @"Remark":remarks, }; } }