mirror of
https://github.com/LorenEteval/Furious.git
synced 2026-10-08 14:57:57 +03:00
Change to parseHostPort usage
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
This commit is contained in:
+30
-10
@@ -31,6 +31,7 @@ from Furious.Utility.Utility import (
|
||||
StateContext,
|
||||
ServerStorage,
|
||||
bootstrapIcon,
|
||||
parseHostPort,
|
||||
enumValueWrapper,
|
||||
protocolRepr,
|
||||
)
|
||||
@@ -262,7 +263,9 @@ class ImportLinkAction(Action):
|
||||
|
||||
remark = urllib.parse.unquote(parseResult.fragment)
|
||||
|
||||
uuid_, remote_host, remote_port = re.split(r'[@:]', parseResult.netloc)
|
||||
uuid_, server = parseResult.netloc.split('@')
|
||||
|
||||
remote_host, remote_port = parseHostPort(server)
|
||||
|
||||
encryption = queryObject.get('encryption', 'none')
|
||||
type_ = queryObject.get('type', 'tcp')
|
||||
@@ -301,9 +304,11 @@ class ImportLinkAction(Action):
|
||||
)
|
||||
|
||||
return remark, True
|
||||
except Exception:
|
||||
except Exception as ex:
|
||||
# Any non-exit exceptions
|
||||
|
||||
logger.error(f'import share link failed: {data}. Exception: {ex}')
|
||||
|
||||
return '', False
|
||||
|
||||
@staticmethod
|
||||
@@ -316,18 +321,24 @@ class ImportLinkAction(Action):
|
||||
remark = urllib.parse.unquote(result.fragment)
|
||||
|
||||
try:
|
||||
# Try pack with 3 element
|
||||
userinfo, address, port = re.split(r'[@:]', result.netloc)
|
||||
# Try pack with 4 element
|
||||
|
||||
methodPassword, server = result.netloc.split('@')
|
||||
|
||||
method, password = methodPassword.split(':')
|
||||
|
||||
address, port = parseHostPort(server)
|
||||
except ValueError:
|
||||
# Unpack error. Try pack with 3 element
|
||||
userinfo, server = result.netloc.split('@')
|
||||
|
||||
address, port = parseHostPort(server)
|
||||
|
||||
# Some old SS share link doesn't add padding
|
||||
# in base64 encoding. Add padding to userinfo
|
||||
method, password = (
|
||||
Base64Encoder.decode(userinfo + '===').decode().split(':')
|
||||
)
|
||||
except ValueError:
|
||||
# Unpack error. Try pack with 4 element
|
||||
|
||||
method, password, address, port = re.split(r'[@:]', result.netloc)
|
||||
except Exception as ex:
|
||||
# Any non-exit exceptions
|
||||
|
||||
@@ -359,6 +370,8 @@ class ImportLinkAction(Action):
|
||||
except Exception as ex:
|
||||
# Any non-exit exceptions
|
||||
|
||||
logger.error(f'import share link failed: {data}. Exception: {ex}')
|
||||
|
||||
return '', False
|
||||
|
||||
@staticmethod
|
||||
@@ -370,6 +383,7 @@ class ImportLinkAction(Action):
|
||||
# ss://base64...
|
||||
myData = Base64Encoder.decode(data[5:]).decode()
|
||||
myJSON = XrayCoreConfiguration.build(
|
||||
# For sslegacy, we don't try to consider IPv6 case
|
||||
ProxyOutboundObjectSS(*re.split(r'[@:]', myData))
|
||||
)
|
||||
|
||||
@@ -406,7 +420,9 @@ class ImportLinkAction(Action):
|
||||
|
||||
remark = urllib.parse.unquote(parseResult.fragment)
|
||||
|
||||
password, address, port = re.split(r'[@:]', parseResult.netloc)
|
||||
password, server = parseResult.netloc.split('@')
|
||||
|
||||
address, port = parseHostPort(server)
|
||||
|
||||
type_ = queryObject.get('type', 'tcp')
|
||||
# For Trojan: Assign tls by default
|
||||
@@ -442,9 +458,11 @@ class ImportLinkAction(Action):
|
||||
)
|
||||
|
||||
return remark, True
|
||||
except Exception:
|
||||
except Exception as ex:
|
||||
# Any non-exit exceptions
|
||||
|
||||
logger.error(f'import share link failed: {data}. Exception: {ex}')
|
||||
|
||||
return '', False
|
||||
|
||||
@staticmethod
|
||||
@@ -497,6 +515,8 @@ class ImportLinkAction(Action):
|
||||
importServerArgs,
|
||||
)
|
||||
|
||||
logger.error(f'unsupported share link: {shareLink}')
|
||||
|
||||
return '', False
|
||||
|
||||
def triggeredCallback(self, checked):
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
from Furious.Core.Core import XrayCore, Hysteria1, Hysteria2
|
||||
from Furious.Utility.Utility import Protocol, protocolRepr
|
||||
from Furious.Utility.Utility import Protocol, protocolRepr, parseHostPort
|
||||
|
||||
|
||||
class Intellisense:
|
||||
@@ -113,11 +113,14 @@ class Intellisense:
|
||||
|
||||
return ''
|
||||
|
||||
if Intellisense.getCoreType(ob) == Hysteria1.name():
|
||||
return ob['server'].split(':')[0]
|
||||
|
||||
if Intellisense.getCoreType(ob) == Hysteria2.name():
|
||||
return ob['server'].split(':')[0]
|
||||
if (
|
||||
Intellisense.getCoreType(ob) == Hysteria1.name()
|
||||
or Intellisense.getCoreType(ob) == Hysteria2.name()
|
||||
):
|
||||
if ob['server'].count(',') == 0:
|
||||
return parseHostPort(ob['server'])[0]
|
||||
else:
|
||||
return parseHostPort(ob['server'].split(',')[0])[0]
|
||||
|
||||
return ''
|
||||
except Exception:
|
||||
@@ -154,11 +157,16 @@ class Intellisense:
|
||||
|
||||
return ''
|
||||
|
||||
if Intellisense.getCoreType(ob) == Hysteria1.name():
|
||||
return ob['server'].split(':')[1]
|
||||
if (
|
||||
Intellisense.getCoreType(ob) == Hysteria1.name()
|
||||
or Intellisense.getCoreType(ob) == Hysteria2.name()
|
||||
):
|
||||
if ob['server'].count(',') == 0:
|
||||
return parseHostPort(ob['server'])[1]
|
||||
else:
|
||||
server, dynamicPort = ob['server'].split(',')
|
||||
|
||||
if Intellisense.getCoreType(ob) == Hysteria2.name():
|
||||
return ob['server'].split(':')[1]
|
||||
return f'{parseHostPort(server)[1]},{dynamicPort}'
|
||||
|
||||
return ''
|
||||
except Exception:
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
from Furious.Utility.Constants import PLATFORM
|
||||
from Furious.Utility.Utility import runCommand
|
||||
from Furious.Utility.Utility import runCommand, parseHostPort
|
||||
|
||||
import logging
|
||||
import subprocess
|
||||
@@ -124,7 +124,7 @@ class _Proxy:
|
||||
|
||||
if PLATFORM == 'Linux':
|
||||
try:
|
||||
host, port = server.split(':')
|
||||
host, port = parseHostPort(server)
|
||||
|
||||
linuxProxyConfig('proxy.http', 'host', host)
|
||||
linuxProxyConfig('proxy.http', 'port', port)
|
||||
@@ -143,8 +143,8 @@ class _Proxy:
|
||||
|
||||
if PLATFORM == 'Darwin':
|
||||
try:
|
||||
darwinProxyConfig('setwebproxy', *server.split(':'))
|
||||
darwinProxyConfig('setsecurewebproxy', *server.split(':'))
|
||||
darwinProxyConfig('setwebproxy', *parseHostPort(server))
|
||||
darwinProxyConfig('setsecurewebproxy', *parseHostPort(server))
|
||||
darwinProxyConfig('setproxybypassdomains', *bypass.split(';'))
|
||||
except Exception:
|
||||
# Any non-exit exceptions
|
||||
|
||||
@@ -52,6 +52,7 @@ from Furious.Utility.Utility import (
|
||||
SupportConnectedCallback,
|
||||
bootstrapIcon,
|
||||
enumValueWrapper,
|
||||
parseHostPort,
|
||||
eventLoopWait,
|
||||
swapListItem,
|
||||
moveToCenter,
|
||||
@@ -747,8 +748,8 @@ def useProxyServerIfPossible(manager, loggerAction):
|
||||
if proxyServer:
|
||||
logger.info(f'{loggerAction} uses proxy server {proxyServer}')
|
||||
|
||||
# Checked. split should not throw exceptions
|
||||
proxyHost, proxyPort = proxyServer.split(':')
|
||||
# Checked. Should not throw exceptions
|
||||
proxyHost, proxyPort = parseHostPort(proxyServer)
|
||||
|
||||
# Checked. int(proxyPort) should not throw exceptions
|
||||
manager.setProxy(
|
||||
|
||||
Reference in New Issue
Block a user