mirror of https://github.com/Mai-with-u/MaiBot.git
feat: 更新 WebUI 服务器配置,支持 IPv4 和 IPv6 地址显示
parent
783229d48a
commit
849ffb06dc
|
|
@ -201,9 +201,21 @@ class WebUIServer:
|
||||||
self._server = UvicornServer(config=config)
|
self._server = UvicornServer(config=config)
|
||||||
|
|
||||||
logger.info("🌐 WebUI 服务器启动中...")
|
logger.info("🌐 WebUI 服务器启动中...")
|
||||||
logger.info(f"🌐 访问地址: http://{self.host}:{self.port}")
|
|
||||||
if self.host == "0.0.0.0":
|
# 根据地址类型显示正确的访问地址
|
||||||
logger.info(f"本机访问请使用 http://localhost:{self.port}")
|
if ':' in self.host:
|
||||||
|
# IPv6 地址需要用方括号包裹
|
||||||
|
logger.info(f"🌐 访问地址: http://[{self.host}]:{self.port}")
|
||||||
|
if self.host == "::":
|
||||||
|
logger.info(f"💡 IPv6 本机访问: http://[::1]:{self.port}")
|
||||||
|
logger.info(f"💡 IPv4 本机访问: http://127.0.0.1:{self.port}")
|
||||||
|
elif self.host == "::1":
|
||||||
|
logger.info(f"💡 仅支持 IPv6 本地访问")
|
||||||
|
else:
|
||||||
|
# IPv4 地址
|
||||||
|
logger.info(f"🌐 访问地址: http://{self.host}:{self.port}")
|
||||||
|
if self.host == "0.0.0.0":
|
||||||
|
logger.info(f"💡 本机访问: http://localhost:{self.port} 或 http://127.0.0.1:{self.port}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await self._server.serve()
|
await self._server.serve()
|
||||||
|
|
@ -221,14 +233,24 @@ class WebUIServer:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def _check_port_available(self) -> bool:
|
def _check_port_available(self) -> bool:
|
||||||
"""检查端口是否可用"""
|
"""检查端口是否可用(支持 IPv4 和 IPv6)"""
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
|
# 判断使用 IPv4 还是 IPv6
|
||||||
|
if ':' in self.host:
|
||||||
|
# IPv6 地址
|
||||||
|
family = socket.AF_INET6
|
||||||
|
test_host = self.host if self.host != "::" else "::1"
|
||||||
|
else:
|
||||||
|
# IPv4 地址
|
||||||
|
family = socket.AF_INET
|
||||||
|
test_host = self.host if self.host != "0.0.0.0" else "127.0.0.1"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
with socket.socket(family, socket.SOCK_STREAM) as s:
|
||||||
s.settimeout(1)
|
s.settimeout(1)
|
||||||
# 尝试绑定端口
|
# 尝试绑定端口
|
||||||
s.bind((self.host if self.host != "0.0.0.0" else "127.0.0.1", self.port))
|
s.bind((test_host, self.port))
|
||||||
return True
|
return True
|
||||||
except OSError:
|
except OSError:
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
|
|
@ -262,6 +262,9 @@ enable = true
|
||||||
enabled = true # 是否启用WebUI
|
enabled = true # 是否启用WebUI
|
||||||
mode = "production" # 模式: development(开发) 或 production(生产)
|
mode = "production" # 模式: development(开发) 或 production(生产)
|
||||||
host = "127.0.0.1" # WebUI 服务器监听地址
|
host = "127.0.0.1" # WebUI 服务器监听地址
|
||||||
|
# IPv4: 0.0.0.0 (所有IPv4接口) / 127.0.0.1 (仅本地)
|
||||||
|
# IPv6: :: (所有接口,支持IPv4+IPv6双栈) / ::1 (仅本地IPv6)
|
||||||
|
# 推荐使用 :: 实现双栈支持
|
||||||
port = 8001 # WebUI 服务器端口
|
port = 8001 # WebUI 服务器端口
|
||||||
|
|
||||||
# 防爬虫配置
|
# 防爬虫配置
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue