Десктопное приложение, которое собирает всю работу с POS-кассами SetRetail в одно окно: подключение по SSH, терминал, обмен файлами, просмотр экрана кассы, работа с базой PostgreSQL и диагностика оборудования. Всё, что раньше разбиралось отдельными программами и забытыми паролями, теперь живёт в одном интерфейсе.
Работает с кассами на TinyCore и Ubuntu, а также с любыми другими Linux-системами, где есть SSH.
- Один инструмент вместо пяти. Терминал, файловый менеджер, VNC, редактор БД и сбор информации о кассе — встроены и запускаются одной кнопкой.
- Меньше зависимостей от стороннего ПО. Внешние клиенты (KiTTY, WinSCP, VNC-вьюер, psql) остаются опцией, но не обязательны: есть собственные реализации для всех задач.
- Безопасность по умолчанию. Пароли шифруются (Fernet), мастер-ключ защищён DPAPI (Windows) или OS keyring/libsecret (Linux), ключи хостов проверяются по схеме TOFU (Trust On First Use), пароли не светятся в списке процессов.
- Расширяемость без программирования. Информация, проблемы, команды и типы касс описываются TOML-файлами и подхватываются на лету.
- Вкладки касс — несколько касс одновременно, смена IP на лету, индикаторы состояния, обновление данных в фоне.
- Встроенный SSH-терминал — современный эмулятор терминала в отдельном процессе (не тормозит приложение): сниппеты команд, инлайн-автодополнение, прокрутка, копирование выделением, смена шрифта, авто-вход с паролем из настроек. Альтернатива — внешний клиент (KiTTY и др.).
- Встроенный файловый менеджер (CashSCP) — обмен файлами с кассой по SFTP/SCP: просмотр, копирование, переименование, удаление, создание папок. Открывается автоматически, когда WinSCP не настроен.
- Встроенный VNC-просмотр — картинка с экрана кассы в собственном окне с переключением глубины цвета (8/16/32 бит), режимом окна/полного экрана и автозапуском x11vnc на кассе через SSH.
- Редактор PostgreSQL — просмотр и редактирование таблиц, SQL-консоль с подсветкой, умный поиск по полям, экспорт/импорт CSV.
- Информация о кассе — параллельный сбор 14+ секций: тип кассы, ОС, процессор, ПО, ФР, сканеры, весы, банковский терминал, клавиатура, DNS, Loymax… Набор collector'ов расширяется TOML-файлами.
- Чекер проблем — автоматическая диагностика типовых неисправностей при подключении; правила задаются TOML-файлами без изменения кода.
- Команды — встроенные (TOML) и пользовательские (Python) команды с подтверждением опасных действий и hot-reload без перезапуска.
- Виртуальная клавиатура для экранных касс — отправка нажатий через
xdotoolпо SSH. - Аудит и логи — журнал всех действий, просмотр логов в интерфейсе.
Модули внутри src/cashcontrol/builtin/ — собственные реализации утилит,
которые раньше пришлось бы ставить отдельно:
| Инструмент | Модуль | Запуск |
|---|---|---|
| SSH-терминал | builtin/terminal/ |
отдельным процессом |
| Файловый менеджер | builtin/file_manager/ |
встроенное окно |
| VNC-просмотр | builtin/vnc/vnc_preview.py |
встроенное окно + вкладка |
| Редактор PostgreSQL | builtin/db_viewer/ |
встроенное окно |
| Лаунчеры | ssh_terminal_launcher.py, file_manager_launcher.py |
выбор «внешний vs встроенный» |
Правило простое: если в настройках указан путь к внешней программе и файл существует — используется она, иначе включается встроенная. У всех встроенных окон своя иконка CashControl.
Раздел Настройки → Программы:
- каталог, который файловый менеджер открывает на кассе по умолчанию
(по умолчанию
/home/tc/storage); - режим открытия VNC (окно или сразу на весь экран) и глубина цвета;
- памятка по горячим клавишам терминала.
| Сочетание | Действие |
|---|---|
Ctrl+V |
подключить встроенный VNC-просмотр кассы |
Ctrl+Shift+V |
открыть доступный VNC-клиент (внешний или встроенное окно) |
Ctrl+S |
встроенный SSH-терминал |
Ctrl+W |
файловый менеджер (WinSCP или встроенный) |
Ctrl+D |
редактор PostgreSQL |
Ctrl+R |
перезапуск ПО кассы |
Ctrl+Shift+R |
перезагрузка кассы |
Во встроенном терминале: Ctrl+N/Ctrl+T — новое подключение, Ctrl+W —
закрыть вкладку, Ctrl+Space — сниппеты, Ctrl+Shift+C/V — копировать/
вставить, Ctrl++/Ctrl+- — размер шрифта, Shift+PgUp/Shift+PgDn —
прокрутка.
- Windows 10/11 или Linux (x86_64, glibc)
- Python 3.12–3.13
- uv (рекомендуется) или pip
- Для Linux:
libsecret-1(для keyring) +libpq-dev(для psycopg2)
git clone https://github.com/debrozer-sketch/CashControl.git
cd CashControl
uv venv --python 3.12 .venv
uv pip install -e .
.venv/bin/python -m cashcontrol.mainили через pip:
python3.12 -m venv .venv
.venv/bin/activate
pip install -e .
python -m cashcontrol.mainПри первом запуске открывается мастер настройки: логины/пароли SSH и БД,
порты, пути к внешним клиентам (необязательно — можно работать на
встроенных). Хранилище данных и настройки находятся в папке приложения
(data/, logs/).
Portable-сборка (embedded Python, без Nuitka) — Windows:
uv run python scripts/build_dist.pyРезультат — переносимая папка dist\CashControl\ с CashControl.exe.
Инсталлятор (Inno Setup 6):
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" CashControl.iss
Результат — dist\installer\CashControl-setup-<версия>.exe: установка
per-user без прав администратора, обновление поверх старых версий сохраняет
настройки. Подробнее — BUILD.md.
Portable-сборка для Linux (python-build-standalone + tarball):
uv run python scripts/build_linux.pyРезультат — dist/CashControl/ (портативная папка) и
dist/CashControl-linux-x86_64.tar.gz. Распакуйте куда угодно и запускайте:
cd CashControl
./run.shДля установки в систему:
sudo cp CashControl.desktop /usr/share/applications/
sudo cp icon.png /usr/share/icons/hicolor/128x128/apps/src/cashcontrol/
core/ SSH, БД, сессии, команды, безопасность
gui/ окна, вкладки, тулбар, диалоги, темы
builtin/ встроенное ПО: terminal/, file_manager/, vnc/, db_viewer/,
ssh_terminal_launcher.py, file_manager_launcher.py
infrastructure/ конфиг, пути, загрузчики модулей, аудит-лог
collectors/ TOML-коллекторы информации о кассе
commands/ встроенные и пользовательские команды (TOML/Python)
cash_types/ TOML-описания типов касс
detection/ правила авто-детекта типа кассы
docs/ документация (ARCHITECTURE.md, patch.md)
tests/ тесты
pytest tests -vdocs/ARCHITECTURE.md— устройство модулей и связей.docs/patch.md— история изменений по версиям.
- Пароли шифруются Fernet, мастер-ключ защищён DPAPI (Windows) или OS keyring/libsecret (Linux);
- SSH-ключи хостов проверяются по TOFU;
- Пароли при запуске встроенного терминала передаются через stdin, а не в командной строке;
- Пользовательские данные касс не попадают в инсталлятор и GitHub
(
data/,logs/,soft/*.exeисключены из репозитория).