From 03d68344718e12daebb84078302b90cbe9ada65c Mon Sep 17 00:00:00 2001 From: jxxghp Date: Thu, 6 Jun 2024 14:21:20 +0800 Subject: [PATCH] fix #2264 --- app/utils/string.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/utils/string.py b/app/utils/string.py index 76ecad18..77d0238e 100644 --- a/app/utils/string.py +++ b/app/utils/string.py @@ -604,19 +604,29 @@ class StringUtils: def get_domain_address(address: str, prefix: bool = True) -> Tuple[Optional[str], Optional[int]]: """ 从地址中获取域名和端口号 + :param address: 地址 + :param prefix:返回域名是否要包含协议前缀 """ if not address: return None, None if prefix and not address.startswith("http"): + # 如果需要包含协议前缀,但地址不包含协议前缀,则添加 address = "http://" + address + elif not prefix and address.startswith("http"): + # 如果不需要包含协议前缀,但地址包含协议前缀,则去掉 + address = address.split("://")[-1] + # 去掉末尾的/ + address = address.rstrip("/") + # 拆分域名和端口号 parts = address.split(":") if len(parts) > 3: # 处理不希望包含多个冒号的情况(除了协议后的冒号) return None, None + # 不含端口地址 domain = ":".join(parts[:-1]) if domain.endswith("/"): domain = domain[:-1] - # 检查是否包含端口号 + # 端口号 try: port = int(parts[-1]) except ValueError: