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>
4.1 KiB
4.1 KiB
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.0CHANGELOG.md— запись 1.3.0README.md— TOTP в списке фичgui/app.py— вкладка 2FA в tabviewcore/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 |
без изменений |