Добавь удаление и откат патчей VPN
This commit is contained in:
74
README.md
74
README.md
@@ -14,7 +14,7 @@ CLI-установка корпоративного VPN `vpn.lemanapro.ru` дл
|
||||
## Быстрая установка
|
||||
|
||||
```sh
|
||||
curl -fsSL http://192.168.50.109/dokril/lemana-vpn/raw/branch/main/install.sh | sh
|
||||
curl -fsSL https://git.dokops.ru/dokril/lemana-vpn/raw/branch/main/install.sh | sh
|
||||
```
|
||||
|
||||
После установки открой новый shell или выполни:
|
||||
@@ -29,25 +29,25 @@ vpn
|
||||
Полная установка, режим по умолчанию:
|
||||
|
||||
```sh
|
||||
curl -fsSL http://192.168.50.109/dokril/lemana-vpn/raw/branch/main/install.sh | sh
|
||||
curl -fsSL https://git.dokops.ru/dokril/lemana-vpn/raw/branch/main/install.sh | sh
|
||||
```
|
||||
|
||||
Без Touch ID, но с Bitwarden:
|
||||
|
||||
```sh
|
||||
curl -fsSL http://192.168.50.109/dokril/lemana-vpn/raw/branch/main/install.sh | sh -s -- --without-touchid
|
||||
curl -fsSL https://git.dokops.ru/dokril/lemana-vpn/raw/branch/main/install.sh | sh -s -- --without-touchid
|
||||
```
|
||||
|
||||
Минимальная установка без Bitwarden и Touch ID. Пароль LDAP и TOTP будут один раз записаны в macOS Keychain вручную:
|
||||
|
||||
```sh
|
||||
curl -fsSL http://192.168.50.109/dokril/lemana-vpn/raw/branch/main/install.sh | sh -s -- --minimal --configure-keychain
|
||||
curl -fsSL https://git.dokops.ru/dokril/lemana-vpn/raw/branch/main/install.sh | sh -s -- --minimal --configure-keychain
|
||||
```
|
||||
|
||||
Проверить действия без изменений:
|
||||
|
||||
```sh
|
||||
curl -fsSL http://192.168.50.109/dokril/lemana-vpn/raw/branch/main/install.sh | sh -s -- --dry-run
|
||||
curl -fsSL https://git.dokops.ru/dokril/lemana-vpn/raw/branch/main/install.sh | sh -s -- --dry-run
|
||||
```
|
||||
|
||||
Если raw URL отличается, переопредели базовый адрес:
|
||||
@@ -62,8 +62,10 @@ curl -fsSL https://example.org/dokril/lemana-vpn/raw/branch/main/install.sh \
|
||||
| Путь | Назначение |
|
||||
| --- | --- |
|
||||
| `~/bin/vpn-lemanapro.sh` | Основной CLI для подключения, статуса и sync секретов |
|
||||
| `~/bin/uninstall-lemana-vpn.sh` | Локальный uninstall helper |
|
||||
| `~/bin/keychain-fingerprint` | Опциональный Touch ID helper для мастер-пароля Bitwarden |
|
||||
| `~/.config/lemana-vpn/env` | Локальная конфигурация модулей |
|
||||
| `~/.config/lemana-vpn/patch-backups/` | Backup исходника `openconnect-lite` перед runtime-патчами |
|
||||
| `~/.config/openconnect-lite/config.toml` | Профиль SSO и auto-fill правила Keycloak |
|
||||
| `/usr/local/sbin/lemana-vpn-dns-cleanup` | Root-owned wrapper для сброса только корпоративных DNS |
|
||||
| `/etc/sudoers.d/lemana-vpn-openconnect` | `NOPASSWD` только для `openconnect` |
|
||||
@@ -144,7 +146,7 @@ LEMANA_VPN_DNS_CLEANUP="/usr/local/sbin/lemana-vpn-dns-cleanup"
|
||||
Для другого логина:
|
||||
|
||||
```sh
|
||||
curl -fsSL http://192.168.50.109/dokril/lemana-vpn/raw/branch/main/install.sh \
|
||||
curl -fsSL https://git.dokops.ru/dokril/lemana-vpn/raw/branch/main/install.sh \
|
||||
| sh -s -- --username 12345678
|
||||
```
|
||||
|
||||
@@ -163,6 +165,30 @@ curl -fsSL http://192.168.50.109/dokril/lemana-vpn/raw/branch/main/install.sh \
|
||||
|
||||
Новый вариант разрешает sudo только на `/usr/local/sbin/lemana-vpn-dns-cleanup`. Wrapper сбрасывает DNS только если текущий DNS начинается с `10.`, то есть похож на корпоративный VPN DNS.
|
||||
|
||||
## Runtime-патчи openconnect-lite
|
||||
|
||||
`openconnect-lite` работает, но для текущей macOS + Keycloak SSO цепочки ему нужны три runtime-патча. CLI применяет их перед подключением в файле:
|
||||
|
||||
```sh
|
||||
~/.local/pipx/venvs/openconnect-lite/lib/python*/site-packages/openconnect_lite/browser/webengine_process.py
|
||||
```
|
||||
|
||||
Патчи:
|
||||
|
||||
| Патч | Что меняет | Зачем |
|
||||
| --- | --- | --- |
|
||||
| `minimal -> offscreen` | Меняет Qt platform mode для скрытого браузера | `minimal` падает с Qt WebEngine на macOS |
|
||||
| `input/change events` | После `value = ...` отправляет DOM events | Keycloak не реагирует на прямую запись value |
|
||||
| `URL guard` | Проверяет `location.href` через `new RegExp(...)` перед auto-fill | Qt игнорирует `@include`, без guard auto-fill может кликнуть Cisco ACS и сломать SAML |
|
||||
|
||||
Перед первым изменением CLI сохраняет оригинальный файл:
|
||||
|
||||
```sh
|
||||
~/.config/lemana-vpn/patch-backups/webengine_process.py.before-lemana-vpn
|
||||
```
|
||||
|
||||
Откат патчей выполняет uninstall script. Если backup отсутствует, автоматического rollback нет: значит файл был уже патчен старой ручной установкой или `openconnect-lite` переустановили после backup.
|
||||
|
||||
## Диагностика
|
||||
|
||||
Проверить установку:
|
||||
@@ -189,8 +215,41 @@ CLI перед подключением патчит `openconnect-lite`:
|
||||
|
||||
## Удаление
|
||||
|
||||
Рекомендуемый способ:
|
||||
|
||||
```sh
|
||||
rm -f ~/bin/vpn-lemanapro.sh ~/bin/keychain-fingerprint
|
||||
curl -fsSL https://git.dokops.ru/dokril/lemana-vpn/raw/branch/main/uninstall.sh | sh
|
||||
```
|
||||
|
||||
Или локально:
|
||||
|
||||
```sh
|
||||
uninstall-lemana-vpn.sh
|
||||
```
|
||||
|
||||
Что делает uninstall:
|
||||
|
||||
- восстанавливает `openconnect-lite` из backup, если backup есть;
|
||||
- удаляет `vpn-lemanapro.sh` и `uninstall-lemana-vpn.sh`;
|
||||
- удаляет sudoers rules и DNS cleanup wrapper;
|
||||
- удаляет блок `lemana-vpn` из `~/.zshrc`;
|
||||
- удаляет `~/.config/openconnect-lite/config.toml`;
|
||||
- удаляет `~/.config/lemana-vpn`, если не передан `--keep-config`.
|
||||
|
||||
Опциональные режимы:
|
||||
|
||||
```sh
|
||||
uninstall-lemana-vpn.sh --dry-run
|
||||
uninstall-lemana-vpn.sh --keep-config
|
||||
uninstall-lemana-vpn.sh --remove-keychain
|
||||
uninstall-lemana-vpn.sh --remove-touchid-helper
|
||||
uninstall-lemana-vpn.sh --remove-openconnect-lite
|
||||
```
|
||||
|
||||
Ручной вариант, если нужен полный контроль:
|
||||
|
||||
```sh
|
||||
rm -f ~/bin/vpn-lemanapro.sh ~/bin/uninstall-lemana-vpn.sh
|
||||
rm -rf ~/.config/lemana-vpn
|
||||
rm -f ~/.config/openconnect-lite/config.toml
|
||||
sudo rm -f /usr/local/sbin/lemana-vpn-dns-cleanup
|
||||
@@ -204,4 +263,3 @@ sudo rm -f /etc/sudoers.d/lemana-vpn-openconnect /etc/sudoers.d/lemana-vpn-dns
|
||||
...
|
||||
# <<< lemana-vpn
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user