proxyctl 0.5.1__tar.gz → 0.5.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {proxyctl-0.5.1 → proxyctl-0.5.2}/PKG-INFO +1 -1
- {proxyctl-0.5.1 → proxyctl-0.5.2}/pyproject.toml +1 -1
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/cli.py +19 -9
- {proxyctl-0.5.1 → proxyctl-0.5.2}/.gitignore +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/LICENSE +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/README.md +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/man/proxyctl.1 +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/__init__.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/_io.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/audit.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/autostart.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/builtin_plugins/__init__.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/builtin_plugins/connectivity_basic.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/builtin_plugins/corp_network.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/check.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/completion.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/core/__init__.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/core/plugin.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/engine/__init__.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/engine/base.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/engine/mihomo.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/engine/singbox.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/explain.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/status.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/subscription.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/suggest.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/suggest_rules.py +0 -0
- {proxyctl-0.5.1 → proxyctl-0.5.2}/src/proxyctl/trace.py +0 -0
|
@@ -266,16 +266,17 @@ def get_engine_version(backend_name: str) -> dict | None:
|
|
|
266
266
|
dict 或 None(binary 找不到 / -v 失败 / 解析失败):
|
|
267
267
|
{
|
|
268
268
|
"binary": "/opt/homebrew/bin/mihomo",
|
|
269
|
-
"version": "1.19.25",
|
|
269
|
+
"version": "1.19.25", # 始终不带 v 前缀(规范化)
|
|
270
270
|
"platform": "darwin arm64",
|
|
271
271
|
"go_version": "1.26.3",
|
|
272
|
-
"build_date": "2026-05-16",
|
|
272
|
+
"build_date": "2026-05-16", # ISO 取日期段;非 ISO 保留原样
|
|
273
273
|
"raw": "Mihomo Meta 1.19.25 darwin arm64 with go1.26.3 2026-05-16T14:37:07Z",
|
|
274
274
|
}
|
|
275
275
|
|
|
276
|
-
mihomo -v
|
|
277
|
-
Mihomo Meta 1.19.25 darwin arm64 with go1.26.3 2026-05-16T14:37:07Z
|
|
278
|
-
|
|
276
|
+
mihomo -v 输出在不同构建里有两种格式(v0.5.2 起两种都兼容):
|
|
277
|
+
1) ISO 风: Mihomo Meta 1.19.25 darwin arm64 with go1.26.3 2026-05-16T14:37:07Z
|
|
278
|
+
2) v 前缀 + Unix `date` 风:
|
|
279
|
+
Mihomo Meta v1.19.10 linux amd64 with go1.24.3 Sat May 31 07:51:30 UTC 2025
|
|
279
280
|
|
|
280
281
|
sing-box version 输出范本 (供后续扩展):
|
|
281
282
|
sing-box version 1.10.0
|
|
@@ -298,16 +299,25 @@ def get_engine_version(backend_name: str) -> dict | None:
|
|
|
298
299
|
return None
|
|
299
300
|
raw = out.split("\n", 1)[0].strip()
|
|
300
301
|
info: dict = {"binary": binary, "raw": raw}
|
|
301
|
-
#
|
|
302
|
+
# 匹配两种 mihomo -v 格式(详见 docstring)。build_date 用 (.+)$ 贪婪到行尾,
|
|
303
|
+
# 容纳 Unix `date` 的 "Sat May 31 07:51:30 UTC 2025" 多字段写法。
|
|
302
304
|
m = re.match(
|
|
303
|
-
r"^\S+\s+\S+\s+(\S+)\s+(\S+\s+\S+)\s+with\s+go(\S+)\s+(
|
|
305
|
+
r"^\S+\s+\S+\s+(\S+)\s+(\S+\s+\S+)\s+with\s+go(\S+)\s+(.+)$",
|
|
304
306
|
raw,
|
|
305
307
|
)
|
|
306
308
|
if m:
|
|
307
|
-
|
|
309
|
+
# version 规范化:剥掉可能的 v 前缀,避免渲染层重复加 v(→ "vv1.19.10")
|
|
310
|
+
info["version"] = m.group(1).lstrip("v")
|
|
308
311
|
info["platform"] = m.group(2)
|
|
309
312
|
info["go_version"] = m.group(3)
|
|
310
|
-
|
|
313
|
+
date_raw = m.group(4).strip()
|
|
314
|
+
# ISO 8601 时间戳(YYYY-MM-DDTHH:MM:SS...)取日期段;
|
|
315
|
+
# Unix `date` 多字段格式(如 "Sat May 31 07:51:30 UTC 2025")保留原样。
|
|
316
|
+
# 必须正则强校验:不能用 "T" in date_raw,否则 "UTC" 会被误判 → 截断。
|
|
317
|
+
if re.match(r"^\d{4}-\d{2}-\d{2}T", date_raw):
|
|
318
|
+
info["build_date"] = date_raw.split("T")[0]
|
|
319
|
+
else:
|
|
320
|
+
info["build_date"] = date_raw
|
|
311
321
|
else:
|
|
312
322
|
# 兜底:能拿到 raw 就行,version 字段留空让 agent 自己处理
|
|
313
323
|
info["version"] = None
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|