Skip to content

Commit 554e5fd

Browse files
authored
Merge pull request #1621 from hsd221/fix/http-and-internal-ip-support
fix: 支持 HTTP 协议和内网地址访问,修复聊天 URL 缺协议前缀问题
2 parents 5fd5640 + a6c95b1 commit 554e5fd

3 files changed

Lines changed: 10 additions & 5 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ dependencies = [
1515
"faiss-cpu>=1.11.0",
1616
"fastapi>=0.116.0",
1717
"google-genai>=1.39.1",
18-
"httpx",
18+
"httpx[socks]",
1919
"jieba>=0.42.1",
2020
"json-repair>=0.47.6",
2121
"maim-message>=0.6.2",

src/llm_models/openai_compat.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,17 @@ class OpenAICompatibleRequestOverrides:
2626
def normalize_openai_base_url(base_url: str) -> str:
2727
"""规范化 OpenAI 兼容接口的基础地址。
2828
29+
去掉尾部斜杠,且如果缺少协议前缀则自动补全 http://。
30+
2931
Args:
3032
base_url: 原始基础地址。
3133
3234
Returns:
33-
str: 去掉尾部斜杠后的地址
35+
str: 规范化后的地址
3436
"""
37+
base_url = base_url.strip()
38+
if base_url and "://" not in base_url:
39+
base_url = "http://" + base_url
3540
return base_url.rstrip("/")
3641

3742

src/webui/utils/network_security.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,19 @@ def _is_forbidden_ip_address(address: ipaddress.IPv4Address | ipaddress.IPv6Addr
3131
address.is_loopback,
3232
address.is_link_local,
3333
address.is_multicast,
34-
address.is_private,
3534
address.is_reserved,
3635
address.is_unspecified,
37-
getattr(address, "is_site_local", False),
3836
)
3937
)
4038

4139

42-
def validate_public_url(url: str, allowed_schemes: Iterable[str] = ("https",)) -> str:
40+
def validate_public_url(url: str, allowed_schemes: Iterable[str] = ("http", "https")) -> str:
4341
normalized_url = url.strip()
4442
if not normalized_url:
4543
raise ValueError("URL 不能为空")
4644

45+
if "://" not in normalized_url:
46+
normalized_url = "http://" + normalized_url
4747
parsed = urlparse(normalized_url)
4848
allowed_scheme_set = {scheme.lower() for scheme in allowed_schemes}
4949
if parsed.scheme.lower() not in allowed_scheme_set:

0 commit comments

Comments
 (0)