Files
server-manager/plans/v1.3.0-stability-totp.md
chrome-storm-c442 bf39fd7b67 v1.2.0 + v1.3.0: Localization, About dialog, TOTP/2FA, stability improvements
v1.2.0:
- GUI localization (EN/RU/ZH) with language switcher and persistent selection
- About dialog (ⓘ) with app info, features, quick start guide
- core/i18n.py — internationalization module with t() function
- All GUI components translated via t() keys

v1.3.0:
- TOTP/2FA tab — Google Authenticator compatible codes with live 30s countdown,
  one-click copy, per-server secret management
- core/totp.py — TOTP module (pyotp, RFC 6238)
- core/logger.py — rotating file logger (5MB, 3 backups)
- Stronger Fernet encryption key with automatic migration from old key
- Thread-safe server store with locks, atomic writes, auto-restore on corruption
- Parallel status checks via ThreadPoolExecutor (up to 10 concurrent)
- SSH client: explicit channel cleanup, Unix key permissions
- Server dialog: port validation (1-65535), TOTP secret field
- Language change preserves active tab and server selection
- pyotp dependency added

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:07:51 -05:00

4.1 KiB
Raw Permalink Blame History

Plan v1.3.0 — Stability, Security & TOTP Integration

Version: 1.3.0

Date: 2026-02-23


1. Усиление ключа шифрования

Файл: core/encryption.py

  • Заменить слабый ключ на более сложный (64-char base64, сгенерированный из os.urandom(32))
  • Ключ остаётся вшитым (by design), но существенно усложнён
  • Обратная совместимость: при первом запуске с новым ключом — авто-миграция старых данных

2. Atomic write + file locking для servers.json

Файл: core/server_store.py

  • threading.Lock для синхронизации потоков
  • Запись через .tmp файл + os.replace() (атомарная замена)
  • Обработка JSONDecodeError при загрузке — авто-восстановление из бэкапа

3. Параллельная проверка статусов

Файл: core/status_checker.py

  • concurrent.futures.ThreadPoolExecutor(max_workers=10) вместо последовательной проверки
  • 100 серверов: ~10 сек вместо ~500 сек

4. TOTP / Google Authenticator интеграция

Новый файл: core/totp.py

  • pyotp для генерации TOTP-кодов
  • Функции: generate_secret(), get_code(secret), get_code_with_timer(secret)

Изменение: core/server_store.py

  • Поле totp_secret в данных сервера (шифруется вместе с паролем)

Новый файл: gui/tabs/totp_tab.py

  • Вкладка "2FA" в tabview
  • Отображение текущего 6-значного кода с countdown (30 сек)
  • Кнопка копирования в буфер
  • Настройка: ввод secret для сервера
  • Авто-обновление каждую секунду

Изменения в i18n: ключи для TOTP-вкладки на EN/RU/ZH

5. Валидация ввода в server_dialog

Файл: gui/server_dialog.py

  • Проверка IP/hostname regex
  • Проверка порта 1-65535
  • Inline-ошибки вместо мигания title

6. SSH resource cleanup

Файл: core/ssh_client.py

  • Закрытие stdin/stdout/stderr в finally
  • Права 0o600 на сгенерированный ключ (Linux/Mac)

7. Логирование

Новый файл: core/logger.py

  • logging.handlers.RotatingFileHandler~/.server-connections/app.log
  • 5 MB max, 3 backup файла
  • Используется в server_store, ssh_client, status_checker

8. Pinned dependencies

Файл: requirements.txt

  • Зафиксировать текущие версии
  • Добавить pyotp

9. Version bump + docs

  • version.py → 1.3.0
  • CHANGELOG.md — запись 1.3.0
  • README.md — TOTP в списке фич
  • gui/app.py — вкладка 2FA в tabview
  • core/i18n.py — ключи для TOTP

Файлы и действия

Файл Действие
core/encryption.py ИЗМЕНИТЬ — новый сложный ключ + миграция
core/server_store.py ИЗМЕНИТЬ — lock, atomic write, JSON error handling
core/status_checker.py ИЗМЕНИТЬ — параллельные проверки
core/ssh_client.py ИЗМЕНИТЬ — resource cleanup, key permissions
core/totp.py СОЗДАТЬ — TOTP-модуль
core/logger.py СОЗДАТЬ — logging framework
core/i18n.py ИЗМЕНИТЬ — TOTP-ключи
gui/app.py ИЗМЕНИТЬ — вкладка 2FA
gui/server_dialog.py ИЗМЕНИТЬ — валидация, TOTP secret поле
gui/tabs/totp_tab.py СОЗДАТЬ — TOTP вкладка
requirements.txt ИЗМЕНИТЬ — pinned + pyotp
version.py ИЗМЕНИТЬ — 1.3.0
CHANGELOG.md ИЗМЕНИТЬ
README.md ИЗМЕНИТЬ
build.py без изменений