Files
server-manager/CLAUDE.md
chrome-storm-c442 3a5d1b27fc v1.8.60: multi-type status check + --add in skill + skill docs update
- _check_status_one: proper connectivity check per server type
  (SSH/SQL/Redis/Grafana/Prometheus/WinRM/RDP)
- ping_server uses _check_status_one instead of paramiko-only
- check_status shows server type column
- skill-ssh.md: allow --add, document it, update --status description
- CLAUDE.md: add --add/--remove/--set-note to command reference

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 05:26:24 -05:00

8.4 KiB
Raw Blame History

CLAUDE.md

Проект

ServerManager — Desktop GUI (CustomTkinter) для управления удалёнными серверами любых типов. Claude Code управляет серверами через скилл /ssh, зная только алиасы.

Поддерживаемые типы серверов

Тип Клиент GUI-табы CLI-команды
ssh ssh_client.py (Paramiko) Terminal, Files, Info, Keys, 2FA, Setup ALIAS "cmd", --upload, --download
telnet telnet_client.py (telnetlib3) Terminal, Info, Setup
mariadb/mssql/postgresql sql_client.py (pymysql/pymssql/psycopg2) Query, Info, Setup --sql, --sql-databases, --sql-tables
redis redis_client.py (redis-py) Console, Info, Setup --redis, --redis-info, --redis-keys
grafana grafana_client.py (requests) Dashboards, Info, Setup --grafana-dashboards, --grafana-alerts
prometheus prometheus_client.py (requests) Metrics, Info, Setup --prom-query, --prom-targets, --prom-alerts
winrm winrm_client.py (pywinrm) PowerShell, Info, Setup --ps, --cmd
rdp/vnc remote_desktop.py Launch, Info, Setup — (запуск внешнего клиента)

БЕЗОПАСНОСТЬ

Claude НИКОГДА не видит: IP, логины, пароли, порты, TOTP-секреты. Всё в зашифрованном servers.json, скрипт ssh.py сам читает credentials.

ЗАПРЕЩЕНО: читать ~/.server-connections/ напрямую, использовать --list-full, добавлять credentials в контекст/логи.

Команды разработки

python main.py                  # Запуск
python build.py                 # Сборка exe (auto-bump patch)
python build.py --no-bump       # Сборка без бампа
python build.py --clean         # Очистка + сборка
pip install -r requirements.txt # Зависимости

Workflow — билд → тест → коммит → пуш

ОБЯЗАТЕЛЬНО после каждого изменения кода:

  1. python build.py — собрать exe
  2. Запустить exe из releases/, убедиться что GUI работает
  3. Коммит + пуш:
    git add <файлы> version.py releases/ServerManager-vX.Y.Z-win-x64.exe
    git commit -m "vX.Y.Z: описание"
    git push sensey master
    

Старые exe в releases/ периодически чистить — оставлять первый + последние 5.

  • Remote: sensey, ветка: master

Версионирование

build.py автоинкрементирует patch в version.py. Semver: MAJOR (ломающие) | MINOR (фича) | PATCH (автобамп). Для minor/major — вручную изменить version.py перед build.py --no-bump.

Архитектура

core/                          # Бизнес-логика
├── server_store.py            # CRUD + encrypted JSON + observer + backups
├── encryption.py              # Fernet
├── ssh_client.py              # ShellSession + SFTPSession (Paramiko)
├── sql_client.py              # MariaDB/MSSQL/PostgreSQL
├── redis_client.py            # Redis (SCAN, авто-тип ключей)
├── grafana_client.py          # Grafana REST API
├── prometheus_client.py       # Prometheus REST API
├── telnet_client.py           # Telnet (тот же интерфейс что ShellSession)
├── winrm_client.py            # PowerShell/CMD через WinRM
├── remote_desktop.py          # RDP/VNC (запуск внешнего клиента)
├── connection_factory.py      # Фабрика: тип → клиент (lazy imports)
├── session_pool.py            # LRU пул сессий (max 5)
├── status_checker.py          # Фоновый мониторинг всех типов
├── i18n.py                    # EN/RU/ZH, ~300 ключей, t(key) API
├── claude_setup.py            # Установщик интеграции Claude Code
├── totp.py                    # TOTP/2FA
└── logger.py                  # Rotating file logger

gui/
├── app.py                     # TAB_REGISTRY + TAB_CLASSES → условные табы по типу
├── sidebar.py                 # Список серверов + цветные бейджи типов
├── server_dialog.py           # Адаптивная форма (поля по типу сервера)
├── tabs/
│   ├── terminal_tab.py        # SSH + Telnet терминал (pyte)
│   ├── files_tab.py           # SFTP файл-менеджер
│   ├── query_tab.py           # SQL-редактор + Treeview + Export CSV
│   ├── redis_tab.py           # Redis-консоль + история
│   ├── grafana_tab.py         # Дашборды + алерты
│   ├── prometheus_tab.py      # PromQL + targets
│   ├── powershell_tab.py      # PS/CMD (WinRM)
│   ├── launch_tab.py          # RDP/VNC кнопка Connect
│   ├── info_tab.py            # Инфо (адаптивные поля по типу)
│   ├── keys_tab.py, totp_tab.py, setup_tab.py
│   └── ...
└── widgets/                   # TerminalWidget, StatusBadge, FileList

tools/
├── ssh.py                     # CLI для Claude Code (все типы серверов)
└── skill-ssh.md               # Шаблон скилла /ssh

Ключевые паттерны

  • Duck typing — все клиенты реализуют connect/disconnect/check_connection по соглашению, без ABC
  • Lazy imports — отсутствие pymysql/redis/etc не ломает приложение
  • TAB_REGISTRYgui/app.py перестраивает табы при смене типа сервера
  • ObserverServerStore → UI обновляется автоматически
  • Session pool — SSH-сессии живут при переключении серверов
  • Auto-sudo — детекция [sudo] password for, автоотправка пароля
  • Windows sanitizessh.py автоматически транслирует Linux-команды (ls, cat, grep, ps, etc.) в Windows-эквиваленты (cmd.exe/PowerShell) при подключении к Windows SSH серверам. Pipe-цепочки и && корректно обрабатываются. Кодировка принудительно UTF-8 через chcp 65001
  • i18n — все строки через t(key), 3 языка

Как пользоваться /ssh

# SSH
/ssh ALIAS "command"                    # Выполнить команду
/ssh ALIAS --upload local remote        # SFTP upload
/ssh ALIAS --download remote local      # SFTP download
# SQL
/ssh --sql ALIAS "SELECT * FROM t"      # SQL-запрос
/ssh --sql-databases ALIAS              # Список БД
/ssh --sql-tables ALIAS [db]            # Список таблиц
# Redis
/ssh --redis ALIAS "GET key"            # Redis-команда
/ssh --redis-info ALIAS                 # Redis INFO
/ssh --redis-keys ALIAS "pattern"       # SCAN ключей
# Grafana / Prometheus
/ssh --grafana-dashboards ALIAS         # Дашборды
/ssh --prom-query ALIAS "up"            # PromQL
/ssh --prom-targets ALIAS               # Targets
# WinRM
/ssh --ps ALIAS "Get-Process"           # PowerShell
/ssh --cmd ALIAS "dir"                  # CMD
# Общие
/ssh --list                             # Все серверы
/ssh --info ALIAS                       # Инфо (без creds)
/ssh --status                           # Online/offline
/ssh --add ALIAS IP PORT USER PASS      # Добавить сервер
/ssh --remove ALIAS                     # Удалить сервер
/ssh --set-note ALIAS "desc"            # Обновить заметки

Конфигурация

  • Серверы: ~/.server-connections/servers.json (Fernet-encrypted)
  • Настройки: ~/.server-connections/settings.json
  • Бэкапы: ~/.server-connections/backups/

Дополнительная документация

Читай по необходимости: README.md, CHANGELOG.md, TERMINAL_AUDIT.md, plans/, tools/skill-ssh.md.