feat: 接入远程订阅策略门禁 T-705
Tests / Python 3.11 / Windows (push) Has been cancelled

This commit is contained in:
chengma
2026-07-28 15:42:19 +08:00
parent 593c6f77cb
commit df9da63841
15 changed files with 925 additions and 73 deletions
+32 -2
View File
@@ -11,6 +11,7 @@ import re
import urllib.request
from dataclasses import dataclass
from . import client_policy
from .version import APP_CODE_NAME, APP_UPDATE_CHECK_URL, APP_VERSION
DEFAULT_TIMEOUT_SECONDS = 3.0
@@ -54,6 +55,8 @@ class UpdateCheckResult:
automatic_update_error: str = ""
message: str = ""
error: str = ""
client_policy: client_policy.ClientPolicy | None = None
client_policy_error: str = ""
@property
def can_enter(self) -> bool:
@@ -202,8 +205,31 @@ def check_for_update(
return UpdateCheckResult(current_version=current_version, checked=False)
try:
payload = (fetcher or fetch_update_payload)(url, timeout)
info = parse_update_info(_decode_payload(payload))
payload = _decode_payload((fetcher or fetch_update_payload)(url, timeout))
except Exception as exc:
return UpdateCheckResult(
current_version=current_version,
checked=True,
forced=False,
error=f"启动版本检查失败,已允许继续使用:{exc}",
)
resolved_policy = None
policy_error = ""
if isinstance(payload, dict) and "client_policy" in payload:
try:
resolved_policy = client_policy.parse_client_policy(
payload.get("client_policy")
)
policy_error = resolved_policy.warning
except client_policy.ClientPolicyError as exc:
policy_error = str(exc)
try:
if isinstance(payload, dict) and payload.get("release", object()) is None:
info = UpdateInfo()
else:
info = parse_update_info(payload)
forced = is_forced_update(info, current_version)
return UpdateCheckResult(
current_version=current_version,
@@ -220,6 +246,8 @@ def check_for_update(
signature_algorithm=info.signature_algorithm,
manifest_signature=info.manifest_signature,
message=info.message,
client_policy=resolved_policy,
client_policy_error=policy_error,
)
except Exception as exc:
return UpdateCheckResult(
@@ -227,4 +255,6 @@ def check_for_update(
checked=True,
forced=False,
error=f"启动版本检查失败,已允许继续使用:{exc}",
client_policy=resolved_policy,
client_policy_error=policy_error,
)