All checks were successful
continuous-integration/drone/push Build is passing
175 lines
6.2 KiB
Markdown
175 lines
6.2 KiB
Markdown
# Обновления системы
|
||
|
||
## Выполнено
|
||
|
||
### 1. ✅ Очистка пользователей
|
||
- Удалены все тестовые пользователи
|
||
- Оставлен только один пользователь: `admin` (пароль тот же)
|
||
- Роль: `owner`
|
||
|
||
### 2. ✅ Удалены временные файлы
|
||
Удалены все временные .md файлы с отладкой:
|
||
- ИСПРАВЛЕНО.md
|
||
- ИСПРАВЛЕНИЕ_ACCESS_DENIED.md
|
||
- ЧТО_ДЕЛАТЬ_СЕЙЧАС.md
|
||
- ОТЛАДКА.md
|
||
- РЕШЕНИЕ_ПРОБЛЕМЫ.md
|
||
- ОБНОВЛЕНИЕ_УДАЛЕННОГО_СЕРВЕРА.md
|
||
- УСПЕХ.md
|
||
- CHANGELOG_DAEMONS.md
|
||
- QUICK_TEST_DAEMONS.md
|
||
- БЫСТРЫЙ_СТАРТ_ДЕМОНЫ.md
|
||
- test_remote_api.py
|
||
- debug_token.html
|
||
|
||
### 3. ✅ Админы и владельцы видят ВСЕ серверы
|
||
- Обновлен endpoint `/api/servers`
|
||
- Добавлена проверка: `is_admin_or_owner = user.get("role") in ["owner", "admin"]`
|
||
- Если пользователь owner или admin - видит все серверы
|
||
- Обычные пользователи видят только свои серверы
|
||
- Добавлено поле `owner` в ответе API
|
||
|
||
### 4. ✅ Выбор демона при создании сервера
|
||
- Обновлен компонент `CreateServerModal.jsx`:
|
||
- Добавлен выпадающий список с демонами
|
||
- Загружаются только онлайн демоны
|
||
- По умолчанию выбран "Локальный (эта машина)"
|
||
- Показывается подсказка о том, где будет создан сервер
|
||
|
||
- Обновлен endpoint `/api/servers/create`:
|
||
- Поддержка параметра `daemonId`
|
||
- Если `daemonId === "local"` - создается локально
|
||
- Если указан ID демона - отправляется запрос на daemon API
|
||
- Локально сохраняется информация о сервере с префиксом `{daemonId}_{serverName}`
|
||
- Автоматическая выдача доступа пользователю
|
||
|
||
## Как использовать
|
||
|
||
### Вход в систему
|
||
```
|
||
Логин: admin
|
||
Пароль: Admin
|
||
```
|
||
|
||
### Создание сервера
|
||
|
||
1. Нажмите "Создать сервер"
|
||
2. Выберите демон из списка:
|
||
- **Локальный (эта машина)** - сервер будет на панели
|
||
- **Test Daemon** (или другой) - сервер будет на удаленном демоне
|
||
3. Заполните остальные поля
|
||
4. Нажмите "Создать"
|
||
|
||
### Просмотр серверов
|
||
|
||
- **Owner и Admin** видят ВСЕ серверы всех пользователей
|
||
- **Обычные пользователи** видят только свои серверы
|
||
- В списке серверов показывается владелец сервера
|
||
|
||
## Структура серверов на демонах
|
||
|
||
Когда сервер создается на демоне:
|
||
- **На демоне**: создается папка `servers/{server_name}/`
|
||
- **На панели**: создается запись `servers/{daemon_id}_{server_name}/` с конфигурацией
|
||
- В конфигурации сохраняется:
|
||
- `daemonId` - ID демона
|
||
- `daemonName` - название демона
|
||
- `owner` - владелец сервера
|
||
- Остальные параметры
|
||
|
||
## API изменения
|
||
|
||
### GET /api/servers
|
||
Теперь возвращает:
|
||
```json
|
||
[
|
||
{
|
||
"name": "my_server",
|
||
"displayName": "Мой сервер",
|
||
"status": "stopped",
|
||
"owner": "admin"
|
||
}
|
||
]
|
||
```
|
||
|
||
### POST /api/servers/create
|
||
Новые параметры:
|
||
```json
|
||
{
|
||
"name": "my_server",
|
||
"displayName": "Мой сервер",
|
||
"startCommand": "java -Xmx2G -jar server.jar nogui",
|
||
"daemonId": "daemon-1" // или "local"
|
||
}
|
||
```
|
||
|
||
Ответ:
|
||
```json
|
||
{
|
||
"message": "Сервер создан",
|
||
"name": "my_server",
|
||
"daemonId": "daemon-1"
|
||
}
|
||
```
|
||
|
||
## Следующие шаги
|
||
|
||
Для полной интеграции с демонами нужно:
|
||
|
||
1. **Управление серверами на демонах**:
|
||
- Запуск/остановка через daemon API
|
||
- Отправка команд в консоль
|
||
- Получение логов
|
||
|
||
2. **Файловый менеджер для демонов**:
|
||
- Просмотр файлов на удаленном демоне
|
||
- Загрузка/скачивание файлов
|
||
- Редактирование конфигов
|
||
|
||
3. **Статистика серверов на демонах**:
|
||
- CPU/RAM использование конкретного сервера
|
||
- Онлайн игроков
|
||
- Uptime
|
||
|
||
4. **Консоль для серверов на демонах**:
|
||
- WebSocket подключение к daemon
|
||
- Просмотр логов в реальном времени
|
||
- Отправка команд
|
||
|
||
## Daemon API для создания сервера
|
||
|
||
Нужно добавить в `daemon/main.py`:
|
||
|
||
```python
|
||
@app.post("/api/servers/create")
|
||
async def create_server_on_daemon(data: dict, authorization: str = Header(None)):
|
||
"""Создать сервер на этом демоне"""
|
||
verify_key(authorization)
|
||
|
||
server_name = data.get("name")
|
||
server_path = SERVERS_DIR / server_name
|
||
|
||
if server_path.exists():
|
||
raise HTTPException(400, "Server already exists")
|
||
|
||
server_path.mkdir(parents=True)
|
||
|
||
# Сохраняем конфигурацию
|
||
config = {
|
||
"name": server_name,
|
||
"displayName": data.get("displayName", server_name),
|
||
"startCommand": data.get("startCommand", ""),
|
||
"owner": data.get("owner", "unknown")
|
||
}
|
||
|
||
config_file = server_path / "config.json"
|
||
with open(config_file, 'w', encoding='utf-8') as f:
|
||
json.dump(config, f, indent=2, ensure_ascii=False)
|
||
|
||
return {"message": "Server created", "name": server_name}
|
||
```
|
||
|
||
---
|
||
|
||
**Все задачи выполнены! Система готова к использованию.**
|