Check manual-full UI text in smoke test

This commit is contained in:
2026-06-23 09:32:39 +03:00
parent 747ed623ab
commit 042c4d6550
19 changed files with 5821 additions and 0 deletions

View File

@@ -0,0 +1,163 @@
{
"name": "Lemana VPN",
"projectName": "Lemana VPN",
"description": "macOS-пакет для корпоративного VPN Lemana: installer, CLI runtime, SSO/autofill через openconnect-lite, DNS cleanup wrapper и Swift menu bar app.",
"rawDescription": "CLI-установка корпоративного VPN vpn.lemanapro.ru для macOS.",
"readmeHead": "# Lemana VPN\n\nCLI-установка корпоративного VPN `vpn.lemanapro.ru` для macOS.\n\n**Модули по умолчанию:** Core: включён; Bitwarden: включён; Touch ID: включён; DNS cleanup: включён; Swift Menu Bar app: включён; автозапуск приложения: включён; runtime-патчи: применяются автоматически перед подключением.\n\n**Credential sources:** `bitwarden` синхронизирует LDAP-пароль и TOTP seed из Bitwarden в macOS Keychain; `keychain` хранит LDAP-пароль и постоянный TOTP seed напрямую в macOS Keychain. Оба источника используют один и тот же runtime `openconnect-lite` для SSO/autofill.\n\nРепозиторий собирает в один воспроизводимый пакет то, что раньше было ручной локальной настройкой:\n\n- `openconnect` как VPN-клиент;\n- `openconnect-lite` для SAML SSO через Keycloak;\n- опциональный Bitwarden CLI для LDAP-пароля и TOTP seed;\n- опциональный Touch ID helper для мастер-пароля Bitwarden;\n- Swift Menu Bar app `LemanaVPN.app`;\n- безопасный DNS cleanup через root-owned wrapper;\n- алиасы `vpn`, `vpn-auto`, `vpn-manual`, `vpn-manual-full`, `vpn-debug`, `vpn-fix-dns`.\n\n## Быстрая установка\n\n```sh\ncurl -fsSL https://git.dokops.ru/dokril/lemana-vpn/raw/branch/main/install.sh | sh\n```\n\nЕсли установка запущена из терминала, скрипт работает как интерактивный wizard: проверит, что уже стоит, спросит как хранить credentials, предложит нужные модули и проведёт через настройку.\n\nПосле установки открой новый shell или выполни:\n\n```sh\nexec zsh\nvpn\n```\n\n## Интерактивная установка\n\nОбычный путь — запустить installer без флагов и ответить на вопросы:\n\n```sh\ncurl -fsSL https://git.dokops.ru/dokril/lemana-vpn/raw/branch/main/install.sh | sh\n```\n\nПервый важный вопрос — как хранить VPN credentials:\n\n```text\nКак хранить VPN credentials?\n 1) Bitwarden -> macOS Keychain\n 2) macOS Keychain: ввести LDAP password и TOTP seed сейчас\n 3) macOS Keychain: настрою вручную позже\nВыбор [1/2/3, Enter=1]:\n```\n\nЧто означают варианты:\n\n- `1` — использовать Bitwarden как sync-provider: installer поставит/проверит `bw`, а при запуске `vpn` CLI переложит LDAP password и TOTP seed из Bitwarden в macOS Keychain.\n- `2` — бесплатный Keychain-only путь: после установки CLI спросит LDAP password и постоянный TOTP seed или `otpauth://...secret=...`, затем сохранит их в macOS Keychain.\n- `3` — поставить CLI/app сейчас, а credentials настроить позже командой `vpn --configure-keychain`.\n\nДальше installer спросит только про системные модули: Touch ID для Bitwarden, sudoers, aliases, Swift Menu Bar app и автозапуск.\n\nФлаги остаются для CI, повторяемых установок и диагностики. Для обычной установки они не нужны.\n\nПроверить действия без изменений:\n\n```sh\ncurl -fsSL https://git.dokops.ru/dokril/lemana-vpn/raw/branch/main/install.sh | sh -s -- --dry-run\n```\n\nПример неинтерактивного режима для автоматизации:\n\n```sh\ncurl -fsSL https://git.dokops.ru/dokril/lemana-vpn/raw/branch/main/install.sh \\\n | sh -s -- --non-interactive --credential-source keychain --configure-keychain\n```\n\nПринудительно включить интерактивные вопросы:\n\n```sh\n",
"languages": [
"markdown",
"swift",
"shell",
"unknown",
"toml"
],
"frameworks": [
"SwiftUI",
"AppKit",
"openconnect-lite",
"Bitwarden CLI",
"macOS Keychain"
],
"files": [
{
"path": ".agents/skills/lemana-vpn-operations/SKILL.md",
"language": "markdown",
"sizeLines": 70,
"fileCategory": "docs"
},
{
"path": ".agents/skills/lemana-vpn-sso-autofill/SKILL.md",
"language": "markdown",
"sizeLines": 80,
"fileCategory": "docs"
},
{
"path": ".agents/skills/lemana-vpn-testing/SKILL.md",
"language": "markdown",
"sizeLines": 101,
"fileCategory": "docs"
},
{
"path": "AGENTS.md",
"language": "markdown",
"sizeLines": 88,
"fileCategory": "docs"
},
{
"path": "app/Package.swift",
"language": "swift",
"sizeLines": 14,
"fileCategory": "code"
},
{
"path": "app/Sources/LemanaVPN/LemanaVPNApp.swift",
"language": "swift",
"sizeLines": 190,
"fileCategory": "code"
},
{
"path": "app/Sources/LemanaVPN/VPNManager.swift",
"language": "swift",
"sizeLines": 697,
"fileCategory": "code"
},
{
"path": "bin/vpn-lemanapro.sh",
"language": "shell",
"sizeLines": 1090,
"fileCategory": "script"
},
{
"path": "docs/goals/manual-first-auth-flow/GOAL.md",
"language": "markdown",
"sizeLines": 12,
"fileCategory": "docs"
},
{
"path": "docs/goals/manual-first-auth-flow/PLAN.md",
"language": "markdown",
"sizeLines": 251,
"fileCategory": "docs"
},
{
"path": "docs/superpowers/plans/2026-05-24-keychain-totp-provider.md",
"language": "markdown",
"sizeLines": 935,
"fileCategory": "docs"
},
{
"path": "install.sh",
"language": "shell",
"sizeLines": 943,
"fileCategory": "script"
},
{
"path": "libexec/lemana-vpn-dns-cleanup",
"language": "unknown",
"sizeLines": 23,
"fileCategory": "code"
},
{
"path": "README.md",
"language": "markdown",
"sizeLines": 579,
"fileCategory": "docs"
},
{
"path": "templates/openconnect-lite-config.toml",
"language": "toml",
"sizeLines": 32,
"fileCategory": "config"
},
{
"path": "tests/smoke.sh",
"language": "shell",
"sizeLines": 438,
"fileCategory": "script"
},
{
"path": "uninstall.sh",
"language": "shell",
"sizeLines": 320,
"fileCategory": "script"
}
],
"totalFiles": 17,
"filteredByIgnore": 3,
"estimatedComplexity": "small",
"stats": {
"filesScanned": 17,
"byCategory": {
"docs": 8,
"code": 4,
"script": 4,
"config": 1
},
"byLanguage": {
"markdown": 8,
"swift": 3,
"shell": 4,
"unknown": 1,
"toml": 1
}
},
"importMap": {
".agents/skills/lemana-vpn-operations/SKILL.md": [],
".agents/skills/lemana-vpn-sso-autofill/SKILL.md": [],
".agents/skills/lemana-vpn-testing/SKILL.md": [],
"AGENTS.md": [],
"app/Package.swift": [],
"app/Sources/LemanaVPN/LemanaVPNApp.swift": [],
"app/Sources/LemanaVPN/VPNManager.swift": [],
"bin/vpn-lemanapro.sh": [],
"docs/goals/manual-first-auth-flow/GOAL.md": [],
"docs/goals/manual-first-auth-flow/PLAN.md": [],
"docs/superpowers/plans/2026-05-24-keychain-totp-provider.md": [],
"install.sh": [],
"libexec/lemana-vpn-dns-cleanup": [],
"README.md": [],
"templates/openconnect-lite-config.toml": [],
"tests/smoke.sh": [],
"uninstall.sh": []
}
}