Автор: Семенцул Максим (MaGz GoLd) · © 2026 · Лицензия GPLv2
Что это?
CMS-DOS — это веб-приложение, которое эмулирует DOS-консоль в браузере с помощью js-dos (порт DOSBox в WebAssembly).
Главная фишка: диск C: — это не виртуальный образ, а реальная серверная папка (backend/workspace). Все изменения, создание и удаление файлов автоматически синхронизируются с сервером без необходимости нажимать кнопки сохранения (автосохранение каждые ~2.5 секунды).
Возможности
Аутентификация — вход по логину/паролю (по умолчанию admin/admin, принудительная смена при первом входе)
Реальный диск C: — работа с файлами на сервере через DOS-команды
Автосохранение — изменения синхронизируются с сервером автоматически
Загрузка файлов из любого каталога — команда uploads загружает файл с компьютера в текущую папку DOS
Смена пароля — команда passwd прямо из консоли
Полноэкранный режим — кнопка для удобной работы
Установка и запуск
Требования: Python 3.10+
- Код: Выделить всё
bash
cd backend
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 5173
Откройте в браузере: http://localhost:5173 → войдите как admin/admin → задайте новый пароль.
Как это устроено
Компонент Описание
Backend FastAPI — аутентификация + API для работы с папкой (/api/tree, /api/download, /api/sync, /api/upload)
Frontend Статика: index.html, app.js, локальный vendor/ (js-dos работает офлайн)
Хранение паролей Хеширование pbkdf2 + соль в backend/data/auth.json (создаётся при первом запуске)
Безопасность
Пароль: минимум 8 символов, хеш pbkdf2-sha256 с 600 000 итераций и солью
Rate-limit: 5 неудачных попыток за 5 минут на IP → ошибка 429
Сессия живёт 12 часов
Для продакшена: CMSDOS_COOKIE_SECURE=1 — cookie только по HTTPS
Тестирование
bash
cd backend && source .venv/bin/activate && python -m pytest -q
Лицензия
Проект распространяется под GNU GPL v2. Полный список компонентов и их лицензий — в файле NOTICE.
Важные замечания
Имена файлов в DOS — формат 8.3 (длинные автоматически укорачиваются)
Рабочую папку можно изменить через переменную DOSFM_WORKSPACE
Репозиторий: https://github.com/sementsul/CMS-DOS
