Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 36 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# CashControl

Десктопное приложение для Windows, которое собирает всю работу с POS-кассами
Десктопное приложение, которое собирает всю работу с POS-кассами
SetRetail в одно окно: подключение по SSH, терминал, обмен файлами, просмотр
экрана кассы, работа с базой PostgreSQL и диагностика оборудования.
Всё, что раньше разбиралось отдельными программами и забытыми паролями,
Expand All @@ -19,8 +19,9 @@ Linux-системами, где есть SSH.
VNC-вьюер, psql) остаются опцией, но не обязательны: есть собственные
реализации для всех задач.
- **Безопасность по умолчанию.** Пароли шифруются (Fernet), мастер-ключ
защищён DPAPI Windows, ключи хостов проверяются по схеме TOFU
(Trust On First Use), пароли не светятся в списке процессов.
защищён DPAPI (Windows) или OS keyring/libsecret (Linux), ключи хостов
проверяются по схеме TOFU (Trust On First Use), пароли не светятся
в списке процессов.
- **Расширяемость без программирования.** Информация, проблемы, команды и
типы касс описываются TOML-файлами и подхватываются на лету.

Expand Down Expand Up @@ -90,7 +91,7 @@ Linux-системами, где есть SSH.
| `Ctrl+V` | подключить встроенный VNC-просмотр кассы |
| `Ctrl+Shift+V` | открыть доступный VNC-клиент (внешний или встроенное окно) |
| `Ctrl+S` | встроенный SSH-терминал |
| `Ctrl+W` | файловый менеджер (WinSCP) |
| `Ctrl+W` | файловый менеджер (WinSCP или встроенный) |
| `Ctrl+D` | редактор PostgreSQL |
| `Ctrl+R` | перезапуск ПО кассы |
| `Ctrl+Shift+R` | перезагрузка кассы |
Expand All @@ -104,29 +105,30 @@ Linux-системами, где есть SSH.

## Требования

- Windows 10/11
- Windows 10/11 или Linux (x86_64, glibc)
- Python **3.12–3.13**
- [uv](https://docs.astral.sh/uv/) (рекомендуется) или pip
- Для Linux: `libsecret-1` (для keyring) + `libpq-dev` (для psycopg2)

---

## Запуск из исходников

```bat
```bash
git clone https://github.com/debrozer-sketch/CashControl.git
cd CashControl

uv venv --python 3.12 .venv
uv pip install -e .

.venv\Scripts\python -m cashcontrol.main
.venv/bin/python -m cashcontrol.main
```

или через pip:

```bat
py -3.12 -m venv .venv
.venv\Scripts\activate
```bash
python3.12 -m venv .venv
.venv/bin/activate
pip install -e .
python -m cashcontrol.main
```
Expand All @@ -140,7 +142,7 @@ python -m cashcontrol.main

## Сборка

Portable-сборка (embedded Python, без Nuitka):
Portable-сборка (embedded Python, без Nuitka) — Windows:

```bat
uv run python scripts/build_dist.py
Expand All @@ -158,6 +160,26 @@ uv run python scripts/build_dist.py
per-user без прав администратора, обновление поверх старых версий сохраняет
настройки. Подробнее — `BUILD.md`.

Portable-сборка для Linux (python-build-standalone + tarball):

```bash
uv run python scripts/build_linux.py
```

Результат — `dist/CashControl/` (портативная папка) и
`dist/CashControl-linux-x86_64.tar.gz`. Распакуйте куда угодно и запускайте:

```bash
cd CashControl
./run.sh
```

Для установки в систему:
```bash
sudo cp CashControl.desktop /usr/share/applications/
sudo cp icon.png /usr/share/icons/hicolor/128x128/apps/
```

---

## Структура проекта
Expand All @@ -181,7 +203,7 @@ tests/ тесты

## Тесты

```bat
```bash
pytest tests -v
```

Expand All @@ -194,7 +216,8 @@ pytest tests -v

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

- Пароли шифруются **Fernet**, мастер-ключ защищён **DPAPI** Windows;
- Пароли шифруются **Fernet**, мастер-ключ защищён **DPAPI** (Windows) или
**OS keyring/libsecret** (Linux);
- SSH-ключи хостов проверяются по **TOFU**;
- Пароли при запуске встроенного терминала передаются через stdin, а не в
командной строке;
Expand Down
2 changes: 2 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ dependencies = [
"defusedxml>=0.7",
# Built-in SSH terminal (vendored in src/cashcontrol/builtin/terminal)
"pyte>=0.8,<1",
# Linux/macOS OS keyring (libsecret / KWallet — optional, graceful fallback)
"keyring>=24; sys_platform == 'linux'",
# Windows-specific
"pywin32>=306; sys_platform == 'win32'",
]
Expand Down
Loading