mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-06 16:07:01 +08:00
Merge pull request #4445 from cddjr/feat_nettest
This commit is contained in:
+40
-14
@@ -1,6 +1,7 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import io
|
import io
|
||||||
import json
|
import json
|
||||||
|
import re
|
||||||
import tempfile
|
import tempfile
|
||||||
from collections import deque
|
from collections import deque
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@@ -446,30 +447,55 @@ def ruletest(title: str,
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/nettest", summary="测试网络连通性")
|
@router.get("/nettest", summary="测试网络连通性")
|
||||||
def nettest(url: str,
|
def nettest(
|
||||||
proxy: bool,
|
url: str,
|
||||||
_: schemas.TokenPayload = Depends(verify_token)):
|
proxy: bool,
|
||||||
|
include: Optional[str] = None,
|
||||||
|
_: schemas.TokenPayload = Depends(verify_token),
|
||||||
|
):
|
||||||
"""
|
"""
|
||||||
测试网络连通性
|
测试网络连通性
|
||||||
"""
|
"""
|
||||||
# 记录开始的毫秒数
|
# 记录开始的毫秒数
|
||||||
start_time = datetime.now()
|
start_time = datetime.now()
|
||||||
|
headers = None
|
||||||
|
if "github" in url or "{GITHUB_PROXY}" in url:
|
||||||
|
# 这是github的连通性测试
|
||||||
|
url = url.replace(
|
||||||
|
"{GITHUB_PROXY}", UrlUtils.standardize_base_url(settings.GITHUB_PROXY or "")
|
||||||
|
)
|
||||||
|
headers = settings.GITHUB_HEADERS
|
||||||
url = url.replace("{TMDBAPIKEY}", settings.TMDB_API_KEY)
|
url = url.replace("{TMDBAPIKEY}", settings.TMDB_API_KEY)
|
||||||
result = RequestUtils(proxies=settings.PROXY if proxy else None,
|
url = url.replace(
|
||||||
ua=settings.USER_AGENT).get_res(url)
|
"{PIP_PROXY}",
|
||||||
|
UrlUtils.standardize_base_url(settings.PIP_PROXY or "https://pypi.org/simple/"),
|
||||||
|
)
|
||||||
|
result = RequestUtils(
|
||||||
|
proxies=settings.PROXY if proxy else None,
|
||||||
|
headers=headers,
|
||||||
|
timeout=10,
|
||||||
|
ua=settings.USER_AGENT,
|
||||||
|
).get_res(url)
|
||||||
# 计时结束的毫秒数
|
# 计时结束的毫秒数
|
||||||
end_time = datetime.now()
|
end_time = datetime.now()
|
||||||
|
time = round((end_time - start_time).total_seconds() * 1000)
|
||||||
# 计算相关秒数
|
# 计算相关秒数
|
||||||
if result and result.status_code == 200:
|
if result is None:
|
||||||
return schemas.Response(success=True, data={
|
return schemas.Response(success=False, message="无法连接", data={"time": time})
|
||||||
"time": round((end_time - start_time).microseconds / 1000)
|
elif result.status_code == 200:
|
||||||
})
|
if include and not re.search(r"%s" % include, result.text, re.IGNORECASE):
|
||||||
elif result:
|
# 通常是被加速代理跳转到其它页面了
|
||||||
return schemas.Response(success=False, message=f"错误码:{result.status_code}", data={
|
logger.error(f"{url} 的响应内容不匹配包含规则 {include}")
|
||||||
"time": round((end_time - start_time).microseconds / 1000)
|
return schemas.Response(
|
||||||
})
|
success=False,
|
||||||
|
message=f"无效响应,不匹配 {include}",
|
||||||
|
data={"time": time},
|
||||||
|
)
|
||||||
|
return schemas.Response(success=True, data={"time": time})
|
||||||
else:
|
else:
|
||||||
return schemas.Response(success=False, message="网络连接失败!")
|
return schemas.Response(
|
||||||
|
success=False, message=f"错误码:{result.status_code}", data={"time": time}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/modulelist", summary="查询已加载的模块ID列表", response_model=schemas.Response)
|
@router.get("/modulelist", summary="查询已加载的模块ID列表", response_model=schemas.Response)
|
||||||
|
|||||||
+5
-2
@@ -139,6 +139,7 @@ class ConfigModel(BaseModel):
|
|||||||
"api.github.com,"
|
"api.github.com,"
|
||||||
"github.com,"
|
"github.com,"
|
||||||
"raw.githubusercontent.com,"
|
"raw.githubusercontent.com,"
|
||||||
|
"codeload.github.com,"
|
||||||
"api.telegram.org")
|
"api.telegram.org")
|
||||||
# DOH 解析服务器列表
|
# DOH 解析服务器列表
|
||||||
DOH_RESOLVERS: str = "1.0.0.1,1.1.1.1,9.9.9.9,149.112.112.112"
|
DOH_RESOLVERS: str = "1.0.0.1,1.1.1.1,9.9.9.9,149.112.112.112"
|
||||||
@@ -584,7 +585,8 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel):
|
|||||||
"""
|
"""
|
||||||
if self.GITHUB_TOKEN:
|
if self.GITHUB_TOKEN:
|
||||||
return {
|
return {
|
||||||
"Authorization": f"Bearer {self.GITHUB_TOKEN}"
|
"Authorization": f"Bearer {self.GITHUB_TOKEN}",
|
||||||
|
"User-Agent": self.USER_AGENT,
|
||||||
}
|
}
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
@@ -612,7 +614,8 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel):
|
|||||||
print(f"无效的令牌或仓库信息: {token_pair}")
|
print(f"无效的令牌或仓库信息: {token_pair}")
|
||||||
continue
|
continue
|
||||||
headers[repo_info] = {
|
headers[repo_info] = {
|
||||||
"Authorization": f"Bearer {token}"
|
"Authorization": f"Bearer {token}",
|
||||||
|
"User-Agent": self.USER_AGENT,
|
||||||
}
|
}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"处理令牌对 '{token_pair}' 时出错: {e}")
|
print(f"处理令牌对 '{token_pair}' 时出错: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user