Skip to content

Repository files navigation

CashControl

Десктопное приложение, которое собирает всю работу с 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.
  • Аудит и логи — журнал всех действий, просмотр логов в интерфейсе.

Встроенное ПО (пакет builtin)

Модули внутри 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 -v

Документация

  • docs/ARCHITECTURE.md — устройство модулей и связей.
  • docs/patch.md — история изменений по версиям.

Безопасность

  • Пароли шифруются Fernet, мастер-ключ защищён DPAPI (Windows) или OS keyring/libsecret (Linux);
  • SSH-ключи хостов проверяются по TOFU;
  • Пароли при запуске встроенного терминала передаются через stdin, а не в командной строке;
  • Пользовательские данные касс не попадают в инсталлятор и GitHub (data/, logs/, soft/*.exe исключены из репозитория).

About

Управление кассами SetRetail с ПК: SSH-терминал (встроенный или KiTTY), встроенный VNC, редактор PostgreSQL, команды и диагностика оборудования. Python / PySide6.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages