Metadata-Version: 2.4
Name: malinakod
Version: 0.1.0
Summary: MalinaKod Deploy System — система развёртывания и управления сервисами
Author: MalinaKod Studio
License: Proprietary
Keywords: deploy,telegram,bot,orchestrator,malinakod
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Environment :: Console
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: typer>=0.12
Requires-Dist: rich>=13.7
Requires-Dist: httpx>=0.27
Requires-Dist: psutil>=5.9
Requires-Dist: cryptography>=42
Requires-Dist: fastapi>=0.110
Requires-Dist: uvicorn>=0.29
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: ruff>=0.4; extra == "dev"

# MalinaKod Deploy System

Профессиональная система развёртывания и управления Telegram ботами и
сопутствующими сервисами на серверах клиентов. Продукт студии **MalinaKod**.

## Что это

Система состоит из двух частей:

1. **Клиентский пакет** (`malinakod`) — публикуется в PyPI. Клиент делает
   `pip install malinakod` → `malinakod init` и всё разворачивается
   автоматически по лицензионному ключу.
2. **Инструменты разработчика** (`tools/`) — у тебя локально:
   - `tools/keygen.py` — генератор лицензионных ключей.
   - `tools/packager.py` — упаковщик и шифратор сервисов.
   - `tools/panel.py` — панель управления всеми клиентами.

## Установка (разработчик)

```bash
git clone https://github.com/Medenchi/Malinacode-Deploy-system.git
cd Malinacode-Deploy-system
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
```

> **Полный production-процесс выкатки клиенту → [`DEPLOYMENT.md`](./DEPLOYMENT.md)**:
> мастер-секрет лицензий, GitHub deploy-токен для приватного репо релизов,
> systemd-юниты, ротация секретов, чек-лист.

## Клиентский запуск

```bash
pip install malinakod
malinakod init
```

После активации:

```bash
malinakod status              # таблица публичных сервисов
malinakod restart [service]   # рестарт одного или всех
malinakod logs <service> -n 50 -f
malinakod info                # инфо о машине
malinakod machine-id          # ID машины для привязки лицензии
```

## Инструменты разработчика

```bash
# Лицензии
python tools/keygen.py new
python tools/keygen.py ls
python tools/keygen.py revoke <client_id>

# Упаковка сервиса (под клиента)
python tools/packager.py pack \
  --client-id client_001 \
  --source path/to/bot \
  --license-key MLNK-... \
  --service-name telegram-bot \
  --run-command "python main.py" \
  --port 8080 --visible

# Панель
python tools/panel.py add-client --client-id client_001 --host 1.2.3.4 --port 17731
python tools/panel.py overview
python tools/panel.py client-status client_001
python tools/panel.py client-restart client_001 telegram-bot
python tools/panel.py client-logs client_001 telegram-bot --lines 100
python tools/panel.py client-deploy client_001 service_config.json
python tools/panel.py client-exec client_001
```

## Локальное тестирование

```bash
# Терминал 1 — фейковый GitHub
python test_env/fake_github.py

# Терминал 2 — агент
MALINA_CLIENT_ID=test_client \
MALINA_AGENT_SECRET=secret \
python -m malinakod.core.agent

# Терминал 3 — тесты
python test_env/run_tests.py

# Терминал 4 — ручная проверка
malinakod init
malinakod status
malinakod logs test-bot -n 20
```

## Переменные окружения агента

| Переменная             | Назначение                                    |
|------------------------|-----------------------------------------------|
| `MALINA_CLIENT_ID`     | ID клиента                                    |
| `MALINA_AGENT_SECRET`  | Секрет HMAC для подписи API запросов          |
| `MALINA_AGENT_PORT`    | Порт агента (по умолчанию 17731)              |
| `MALINA_REPORT_URL`    | URL для фонового репортинга статуса           |
| `MALINAKOD_LICENSE_SECRET` | Секрет генератора лицензий (только у тебя) |
| `MALINAKOD_MIRROR`     | Базовый URL зеркала с релизами                |
| `MALINAKOD_MIRRORS`    | Доп. зеркала через запятую                    |

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

- Лицензии HMAC-SHA256, формат `MLNK-XXXXX-XXXXX-XXXXX-XXXXX`.
- Сборки сервисов шифруются Fernet (PBKDF2-производным от лицензионного ключа).
- API агента: HMAC подпись + защита от replay по timestamp (окно 30 секунд).
- Распаковка архивов с защитой от path traversal.
- Скрытые сервисы никогда не упоминаются в публичном CLI выводе.

## Лицензия

Проприетарная. © MalinaKod Studio.
