From b89f61021c6b34e7e789ad3da6e573f108d93feb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E5=AE=87=E8=88=AA?= Date: Sun, 16 Apr 2017 10:52:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=88=86app=20url=20scheme=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E5=AD=90=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ShadowsocksX-NG/AppDelegate.swift | 2 +- ShadowsocksX-NG/Utils.h | 4 +++- ShadowsocksX-NG/Utils.m | 19 +++++++++++++++---- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ShadowsocksX-NG/AppDelegate.swift b/ShadowsocksX-NG/AppDelegate.swift index bdf9fc9..eda718e 100644 --- a/ShadowsocksX-NG/AppDelegate.swift +++ b/ShadowsocksX-NG/AppDelegate.swift @@ -143,7 +143,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele var isChanged = false for url in urls { - let profielDict = ParseSSURL(url) + let profielDict = ParseAppURLSchemes(url)//ParseSSURL(url) if let profielDict = profielDict { let profile = ServerProfile.fromDictionary(profielDict as [String : AnyObject]) mgr.profiles.append(profile) diff --git a/ShadowsocksX-NG/Utils.h b/ShadowsocksX-NG/Utils.h index d6d71cc..43f5086 100644 --- a/ShadowsocksX-NG/Utils.h +++ b/ShadowsocksX-NG/Utils.h @@ -15,7 +15,9 @@ NSString* decode64(NSString* str); NSString* encode64(NSString* str); -NSDictionary* ParseSSURL(NSURL* url); +NSDictionary* ParseAppURLSchemes(NSURL* url); + +static NSDictionary* ParseSSURL(NSURL* url); static NSDictionary* ParseSSRURL(NSURL* url); diff --git a/ShadowsocksX-NG/Utils.m b/ShadowsocksX-NG/Utils.m index 1069f23..d412ad3 100644 --- a/ShadowsocksX-NG/Utils.m +++ b/ShadowsocksX-NG/Utils.m @@ -98,10 +98,24 @@ NSString* encode64(NSString* str){ return stringBase64; } +NSDictionary* ParseAppURLSchemes(NSURL* url){ + if(!url.host){ + return nil; + } + NSString *urlString = [url absoluteString]; + if ([urlString hasPrefix:@"ss://"]) { + return ParseSSURL(url); + } + if ([urlString hasPrefix:@"ssr://"]) { + return ParseSSRURL(url); + } + return nil; +} + // 解析SS URL,如果成功则返回一个与ServerProfile类兼容的dict // 或SSR URL,ServerProfile类已经默认添加SSR参数,默认放空,如果URL为SSR://则改变解析方法 // ss:// + base64(method:password@domain:port) -NSDictionary* ParseSSURL(NSURL* url) { +static NSDictionary* ParseSSURL(NSURL* url) { if (!url.host) { return nil; } @@ -159,9 +173,6 @@ NSDictionary* ParseSSURL(NSURL* url) { }; } - }else if ([urlString hasPrefix:@"ssr://"]){ - NSDictionary *ssrObj = ParseSSRURL(url); - return ssrObj; } return nil; }