From 6a6cc9fa1f5d517df4b00fc0769a8624d76eb42a Mon Sep 17 00:00:00 2001 From: Loren Eteval Date: Sat, 21 Oct 2023 20:02:41 +0800 Subject: [PATCH] Fix "ss://base64...#fragment" format import failed Signed-off-by: Loren Eteval --- Furious/Action/Import.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/Furious/Action/Import.py b/Furious/Action/Import.py index 4c0ba24..b513634 100644 --- a/Furious/Action/Import.py +++ b/Furious/Action/Import.py @@ -380,15 +380,26 @@ class ImportLinkAction(Action): importServerArgs = {} try: - # ss://base64... - myData = Base64Encoder.decode(data[5:]).decode() + # ss://base64...#fragment + + result = urllib.parse.urlparse(data) + remark = urllib.parse.unquote(result.fragment) + + if remark == '': + remark = 'sslegacy' + + myData = Base64Encoder.decode(result.netloc).decode() + + methodPassword, server = myData.split('@') + myJSON = XrayCoreConfiguration.build( - # For sslegacy, we don't try to consider IPv6 case - ProxyOutboundObjectSS(*re.split(r'[@:]', myData)) + ProxyOutboundObjectSS( + *methodPassword.split(':'), *parseHostPort(server) + ) ) APP().ServerWidget.importServer( - 'sslegacy', + remark, ujson.dumps( myJSON, indent=2, ensure_ascii=False, escape_forward_slashes=False ), @@ -397,10 +408,10 @@ class ImportLinkAction(Action): logger.debug( f'import share link success. ' - f'Remark: sslegacy. Protocol: {Protocol.Shadowsocks}' + f'Remark: {remark}. Protocol: {Protocol.Shadowsocks}' ) - return 'sslegacy', True + return remark, True except Exception: # Any non-exit exceptions