feat(xray-proxy): добавлен управляемый прокси для CLI
Зачем: - отделить переносимый прокси-интерфейс от общих Bash-функций - запускать агентские CLI через явный внешний или управляемый прокси Что: - добавлен stow-пакет xray-proxy с CLI, Bash-модулем и примерами - реализованы строгий разбор VLESS и управляемый запуск Xray - добавлены проверки процесса, порта, сигналов и отсутствия утечек - сохранены спецификация и очередь следующих тикетов Проверка: - python3 tests/test_xray_proxy.py — 22/22 - python3 tests/test_xray_proxy_managed.py — 16/16 - bash tests/test_proxy_launchers.sh — 9/9 - bash tests/test_install.sh - bash -n, Python 3.8 grammar, git diff --check
This commit is contained in:
1 parent
fdf744e578
commit
e69a4bb7df
20 files changed
+3224
-170
No files matched your search
@@ -47,7 +47,8 @@ Chezmoi использует отдельный source dir `chezmoi/` внутр
|
||||
|
||||
| Пакет | Что делает |
|
||||
|-------|------------|
|
||||
| `bash` | Кастомный prompt, функции (`proxy_on/off`, `myip`), подгрузка секретов |
|
||||
| `bash` | Кастомный prompt, общие функции, подгрузка секретов |
|
||||
| `xray-proxy` | Переносимый CLI и Bash-команды для явного запуска через прокси |
|
||||
| `tmux` | Два префикса (`Ctrl+b`, `Ctrl+Space`), vi-режим, split по `\|` / `-` |
|
||||
| `vim` | Минимальный .vimrc без плагинов, 2 пробела, leader = `Space` |
|
||||
| `zed` | Конфигурация Zed редактора |
|
||||
@@ -94,9 +95,17 @@ export ZAI_API_KEY="..." # https://z.ai
|
||||
|
||||
Файл подгружается при старте bash и VS Code Server. Не трекается в git.
|
||||
|
||||
### Прокси (`hproxy.local`)
|
||||
### Прокси (`xray-proxy`)
|
||||
|
||||
Имя `hproxy.local` — алиас хоста с прокси. Все инструменты (bash, pwsh, VS Code Server) используют его для `proxy_on/off`, не завязываясь на конкретный IP.
|
||||
Linux/Bash-команды `proxy_on/off`, `pclaude`, `pcodex` и `myip` находятся в
|
||||
самостоятельном пакете [`xray-proxy`](xray-proxy/README.md). Он читает строгий
|
||||
машинный INI, проверяет доступность явно выбранного внешнего прокси и не
|
||||
запускает команду при ошибке. Без конфига сохраняется внешний Hiddify
|
||||
`hproxy.local:12334`. Управление процессом Xray будет добавлено отдельно;
|
||||
`type = xray` пока даёт безопасный отказ.
|
||||
|
||||
Имя `hproxy.local` — прежний алиас хоста с внешним прокси. Windows и VS Code
|
||||
Server продолжают использовать его напрямую.
|
||||
|
||||
**Порты:** HTTP/HTTPS — `hproxy.local:12334`, SOCKS5 — `socks5://hproxy.local:12334`.
|
||||
|
||||
@@ -135,7 +144,7 @@ echo '127.0.0.1 hproxy.local' | sudo tee -a /etc/hosts
|
||||
|
||||
**Windows pwsh** — `proxy_on` / `proxy_off` / `myip` работают аналогично bash-версиям.
|
||||
|
||||
**`pclaude` / `pcodex`** — явный запуск Claude/Codex CLI через прокси (bash и pwsh). Перед стартом делают fail-fast проверку доступности `hproxy.local:12334` (таймаут — `PROXY_PREFLIGHT_TIMEOUT`, дефолт 2 c); если прокси недоступен — не запускают и возвращают ненулевой код. Proxy-переменные видны только дочернему процессу и не остаются в сессии. Голые `claude`/`codex` не перекрываются и идут напрямую — для прокси нужен явный `p`-префикс.
|
||||
**`pclaude` / `pcodex`** — явный запуск Claude/Codex CLI через прокси (bash и pwsh). Bash-версия делегирует проверку и запуск `xray-proxy run`; Windows-версия сохраняет прежний адрес `hproxy.local:12334`. Таймаут — `PROXY_PREFLIGHT_TIMEOUT`, по умолчанию 2 c. Если прокси недоступен, клиент не запускается. Proxy-переменные видны только дочернему процессу и не остаются в сессии. Голые `claude`/`codex` не перекрываются и идут напрямую — для прокси нужен явный `p`-префикс.
|
||||
|
||||
**Codex GUI на Windows** — chezmoi создает Start Menu ярлык `Codex Proxy`, который запускает Codex Windows App с proxy-переменными:
|
||||
|
||||
@@ -178,15 +187,15 @@ NO_PROXY=hproxy.local,localhost,127.0.0.1,::1,[::1],.concept-software.ru
|
||||
|
||||
## 📖 Справочник
|
||||
|
||||
### Bash-функции (`~/.bash_functions`)
|
||||
### Bash-функции (`~/.config/xray-proxy/shell.bash`)
|
||||
|
||||
| Функция | Описание |
|
||||
|---------|----------|
|
||||
| `proxy_on` | Включает HTTP/HTTPS/SOCKS5 прокси через `hproxy.local:12334` |
|
||||
| `proxy_on` | Проверяет настроенный прокси и атомарно включает восемь переменных |
|
||||
| `proxy_off` | Очищает proxy-переменные |
|
||||
| `pclaude` / `pcodex` | Запуск Claude/Codex CLI через прокси с fail-fast pre-flight |
|
||||
| `myip` | Показывает текущий внешний IP |
|
||||
| `update_hproxy` | Обновляет `hproxy.local` в `/etc/hosts` через `setup-hproxy.sh` (WSL NAT) |
|
||||
| `update_hproxy` | Остаётся в `~/.bash_functions` и обновляет WSL NAT-алиас |
|
||||
|
||||
### PowerShell-функции (`~/.config/powershell/profile.ps1`)
|
||||
|
||||
|
||||
Reference in new issue
Block a user