Files

163 lines
8.2 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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": []
}
}