fix ssr QR code scan problem

https://github.com/qinyuhang/ShadowsocksX-NG/issues/59
This commit is contained in:
qinyuhang
2016-10-30 19:26:41 +08:00
parent c4574b644a
commit 67d39ecbbf
2 changed files with 17 additions and 4 deletions
+2 -2
View File
@@ -17,7 +17,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.3.6-R8</string> <string>1.3.7-R8</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleURLTypes</key> <key>CFBundleURLTypes</key>
@@ -48,7 +48,7 @@
</dict> </dict>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>2</string> <string>1</string>
<key>LSApplicationCategoryType</key> <key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string> <string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key> <key>LSMinimumSystemVersion</key>
+15 -2
View File
@@ -137,7 +137,19 @@ NSDictionary<NSString *, id>* ParseSSURL(NSURL* url) {
}else if ([urlString hasPrefix:@"ssr://"]){ }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(节点名称)}) // 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:@"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]; NSData *data = [[NSData alloc] initWithBase64EncodedString:urlString options:0];
NSString *decodedString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSString *decodedString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
urlString = decodedString; urlString = decodedString;
@@ -163,12 +175,12 @@ NSDictionary<NSString *, id>* ParseSSURL(NSURL* url) {
NSRange lastParamSplit = [toSplitString rangeOfString:@"="]; NSRange lastParamSplit = [toSplitString rangeOfString:@"="];
if (lastParamSplit.location != NSNotFound) { if (lastParamSplit.location != NSNotFound) {
NSString *key = [toSplitString substringToIndex:lastParamSplit.location]; 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]; // NSString *value = [toSplitString substringFromIndex:lastParamSplit.location+1];
[parserLastParamDict setValue: value forKey: key]; [parserLastParamDict setValue: value forKey: key];
} }
} }
NSLog(@"parserLastParamDict is %@",parserLastParamDict); // NSLog(@"parserLastParamDict is %@",parserLastParamDict);
//后面已经parser完成,接下来需要解析到profile里面 //后面已经parser完成,接下来需要解析到profile里面
//abc.xyz:12345:auth_sha1_v2:rc4-md5:tls1.2_ticket_auth:{base64(password)} //abc.xyz:12345:auth_sha1_v2:rc4-md5:tls1.2_ticket_auth:{base64(password)}
@@ -217,6 +229,7 @@ NSDictionary<NSString *, id>* ParseSSURL(NSURL* url) {
@"ssrObfsParam":ssrObfsParam, @"ssrObfsParam":ssrObfsParam,
@"ssrProtocol":ssrProtocol, @"ssrProtocol":ssrProtocol,
@"ssrProtocolParam":ssrProtocolParam, @"ssrProtocolParam":ssrProtocolParam,
@"Remark":remarks,
}; };
} }
} }