proxyctl 0.4.0a1__tar.gz → 0.4.1__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.4.0a1 → proxyctl-0.4.1}/PKG-INFO +11 -2
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/README.md +10 -1
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/man/proxyctl.1 +7 -1
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/pyproject.toml +1 -1
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/cli.py +1 -1
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/.gitignore +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/LICENSE +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/__init__.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/_io.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/audit.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/builtin_plugins/__init__.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/builtin_plugins/connectivity_basic.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/builtin_plugins/corp_network.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/check.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/completion.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/core/__init__.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/core/plugin.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/engine/__init__.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/engine/base.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/engine/mihomo.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/engine/singbox.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/explain.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/status.py +0 -0
- {proxyctl-0.4.0a1 → proxyctl-0.4.1}/src/proxyctl/trace.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: proxyctl
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.1
|
|
4
4
|
Summary: Proxy configuration lifecycle management for macOS and Linux
|
|
5
5
|
Project-URL: Homepage, https://github.com/crhan/proxyctl
|
|
6
6
|
Project-URL: Issues, https://github.com/crhan/proxyctl/issues
|
|
@@ -63,7 +63,16 @@ PROXYCTL_AGENT=1 proxyctl <cmd> # 一键 --json + 关色 + 非交互
|
|
|
63
63
|
|
|
64
64
|
- envelope schema v2:`schema_version / cmd / ok / data / error / code / hints[] / warnings[] / doc / meta{{ts,elapsed_ms,proxyctl_version,request_id}}`
|
|
65
65
|
- 退出码分语义:`0 OK / 2 USAGE / 3 NOT_FOUND / 4 PERMISSION / 5 ENGINE_DOWN / 6 CONFIG_ERR / 7 NETWORK_ERR / 8 LOCKED / 9 TIMEOUT / 10 DEPENDENCY_MISSING`
|
|
66
|
-
- 写命令支持 `--dry-run` 输出结构化 plan
|
|
66
|
+
- 写命令支持 `--dry-run` 输出结构化 plan(`data.plan = [PlanStep, ...]`);自 0.4.0 起
|
|
67
|
+
`plan.target` 全部真实化,`action=="subprocess"` 的 target.split() 可直接当 argv 复读:
|
|
68
|
+
```bash
|
|
69
|
+
proxyctl dns-unlock --dry-run --json | jq -r '.data.plan[] | select(.action=="subprocess").target'
|
|
70
|
+
# → launchctl bootout system/com.proxyctl.dns-lock
|
|
71
|
+
# → rm -f /Library/LaunchDaemons/com.proxyctl.dns-lock.plist
|
|
72
|
+
```
|
|
73
|
+
PlanStep.action 枚举:`subprocess / system_op / fs_write / fs_copy / fs_write_atomic / fs_remove / edit_yaml / scan_log / http_put`。
|
|
74
|
+
CI 层 contract test(`tests/integration/test_plan_exec_contract.py`)保证 plan ↔ exec 永不漂移。
|
|
75
|
+
- `audit/check` 支持 `--plain` TSV
|
|
67
76
|
- `proxyctl help <cmd>` 与 `<cmd> --help` 同源;错误带可执行 hints + explain topic
|
|
68
77
|
- 非 TTY 自动关色;不读 stdin / 不 prompt;写操作 fcntl.flock 互斥
|
|
69
78
|
- 从 0.2.x 升级见 [MIGRATION-0.3.md](MIGRATION-0.3.md)
|
|
@@ -34,7 +34,16 @@ PROXYCTL_AGENT=1 proxyctl <cmd> # 一键 --json + 关色 + 非交互
|
|
|
34
34
|
|
|
35
35
|
- envelope schema v2:`schema_version / cmd / ok / data / error / code / hints[] / warnings[] / doc / meta{{ts,elapsed_ms,proxyctl_version,request_id}}`
|
|
36
36
|
- 退出码分语义:`0 OK / 2 USAGE / 3 NOT_FOUND / 4 PERMISSION / 5 ENGINE_DOWN / 6 CONFIG_ERR / 7 NETWORK_ERR / 8 LOCKED / 9 TIMEOUT / 10 DEPENDENCY_MISSING`
|
|
37
|
-
- 写命令支持 `--dry-run` 输出结构化 plan
|
|
37
|
+
- 写命令支持 `--dry-run` 输出结构化 plan(`data.plan = [PlanStep, ...]`);自 0.4.0 起
|
|
38
|
+
`plan.target` 全部真实化,`action=="subprocess"` 的 target.split() 可直接当 argv 复读:
|
|
39
|
+
```bash
|
|
40
|
+
proxyctl dns-unlock --dry-run --json | jq -r '.data.plan[] | select(.action=="subprocess").target'
|
|
41
|
+
# → launchctl bootout system/com.proxyctl.dns-lock
|
|
42
|
+
# → rm -f /Library/LaunchDaemons/com.proxyctl.dns-lock.plist
|
|
43
|
+
```
|
|
44
|
+
PlanStep.action 枚举:`subprocess / system_op / fs_write / fs_copy / fs_write_atomic / fs_remove / edit_yaml / scan_log / http_put`。
|
|
45
|
+
CI 层 contract test(`tests/integration/test_plan_exec_contract.py`)保证 plan ↔ exec 永不漂移。
|
|
46
|
+
- `audit/check` 支持 `--plain` TSV
|
|
38
47
|
- `proxyctl help <cmd>` 与 `<cmd> --help` 同源;错误带可执行 hints + explain topic
|
|
39
48
|
- 非 TTY 自动关色;不读 stdin / 不 prompt;写操作 fcntl.flock 互斥
|
|
40
49
|
- 从 0.2.x 升级见 [MIGRATION-0.3.md](MIGRATION-0.3.md)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.TH PROXYCTL 1 "2026-05" "proxyctl 0.4.
|
|
1
|
+
.TH PROXYCTL 1 "2026-05" "proxyctl 0.4.1" "User Commands"
|
|
2
2
|
.SH NAME
|
|
3
3
|
proxyctl \- Proxy configuration lifecycle management for macOS / Linux
|
|
4
4
|
.SH SYNOPSIS
|
|
@@ -35,6 +35,12 @@ PlanStep 字段:step / action / target / reversible / requires_sudo /
|
|
|
35
35
|
side_effects / summary。
|
|
36
36
|
适用:mode / engine / fix / audit apply / config set / daemon /
|
|
37
37
|
dns-lock / dns-unlock。
|
|
38
|
+
.IP
|
|
39
|
+
\fB自 0.4.0\fR:plan.target 全部真实化(无 \fI<...>\fR 占位符);
|
|
40
|
+
action=\fBsubprocess\fR 的 target.split() 可直接当 argv(run 时
|
|
41
|
+
prepend sudo)。action 枚举:subprocess / system_op / fs_write /
|
|
42
|
+
fs_copy / fs_write_atomic / fs_remove / edit_yaml / scan_log /
|
|
43
|
+
http_put。CI 层 contract test 保证 plan ↔ exec 永不漂移。
|
|
38
44
|
.TP
|
|
39
45
|
.BR --no-color
|
|
40
46
|
关闭 ANSI 颜色(默认按 isatty / NO_COLOR / TERM=dumb / PROXYCTL_NO_COLOR 自动判断)。
|
|
@@ -1491,7 +1491,7 @@ def cmd_discovery(backend, config) -> None:
|
|
|
1491
1491
|
"""
|
|
1492
1492
|
port = config.get("proxy_port", 7890)
|
|
1493
1493
|
try:
|
|
1494
|
-
engine_up =
|
|
1494
|
+
engine_up = service_running(backend)
|
|
1495
1495
|
except Exception:
|
|
1496
1496
|
engine_up = False
|
|
1497
1497
|
|
|
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
|