Документация к SimpleCabinet 2. Все компоненты SimpleCabinet после релиза будут доступны под лицензией MIT с открытым исходным кодом.
- Первая стадия релиза: Релиз SimpleCabinetWebAPI, SimpleCabinetModule и плагина Bukkit.
- Вторая стадия релиза: Релиз плагина для Fabric.
- Третья стадия релиза: Релиз mini версии frontend части, реализующий минимальный функционал.
- Четвертая стадия релиза: Релиз полной версии frontend части.
- SimpleCabinetWebAPI - Основной бэкенд SimpleCabinet. Занимается подключением к базе данных и обработкой всех запросов по HTTP API
- SimpleCabinetModule - Модуль для лаунчсервера, предоставляющий SimpleCabinetAuthCoreProvider
- SimpleCabinetIntegrations - Плагин Bukkit 1.7 - 1.17+ и мод Fabric 1.20+, добавляющий команды
/shop
и/economy
для получения предметов и торговли - SimpleCabinetFrontend2 - фронтенд часть SimpleCabinet 2
- Все остальные части SimpleCabinet 2 находятся на ранних стадиях разработки
- Nginx для раздачи файлов
- GravitLauncher 5.2.11 и выше
- Java 17 и выше
- PostgreSQL в качестве основной базы данных
- Выдача привилегий: LuckPerms
- Выдача предметов: сервер на Sponge или Bukkit
- Миграция: любая CMS с базой данных MySQL/MariaDB и одним из поддерживаемых алгоритмов хеширования пароля: BCRYPT, DOUBLEMD5, MD5, SHA256, AUTHMESHA256, PHPASS
- Почему SimpleCabinet 2 не поддерживает MySQL?
- Простота установки: выбор PostgreSQL делает установку проще, понятнее и прямолинейнее
- Оптимизация: PostgreSQL имеет множество функций, которых нет в большинстве популярных версий MySQL. Некоторые функции отсутствуют в MySQL вовсе
- Обновление до новых версий: обновление БД теперь более предсказуемо и не требует ручных действий
- У меня есть плагины, которые работают только с MySQL. Что делать?
- Вы по прежнему можете пользоватся плагинами, работающими только с MySQL. Функционал экономики и магазина блоков и привилегий предоставляет SimpleCabinet, а для прав используется LuckPerms который поддерживает PostgreSQL
- Как обновится с SimpleCabinet 1
- Вам понадобится установить лаунчсервер версии 5.1.10 и последний модуль SimpleCabinet 1. После чего вы должны ввести команду
cabinet upgrade2
после установки web части SimpleCabinet 2. Пользователи будут перенесены в новую БД
- Вам понадобится установить лаунчсервер версии 5.1.10 и последний модуль SimpleCabinet 1. После чего вы должны ввести команду
- Установите пакет
postgresql-server
(Debian) и запустите серверsystemctl start postgresql
- Выполните
su - postgres bash -c "psql"
- Создайте пользователя и базу данных:
create user cabinet2 with password 'MYPASSWORD';
create database cabinet2 with owner cabinet2;
- Выйдите из консоли с помощью
\q
- Откройте файл
/etc/postgresql/11/main/pg_hba.conf
, найдите строчки:
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
и измените trust
на md5
. Перезапустите сервер systemctl restart postgresql
Файл конфигурации может находиться в другом месте, для его поиска можно воспользоваться командой:
find / -name "pg_hba.conf"
- Подготовьте окружение: создайте отдельного пользователя
cabinet
от имени которого будет работать SimpleCabinet 2 - Скачайте файл
web-XXXX.jar
и запустите его для появления файлаapplication.properties
- Настройте подключение к базе данных и прочие параметры
- Запустите
web-XXXX.jar
повторно с помощью screen и убедитесь, что данные от БД указаны верно. - Выполните команду начальной настройки:
curl http://localhost:PORT/setup > setup.json
. Эта команда создаст пользователя admin с случайным паролем и вечный токен (adminJwtToken) который понадобится для привязки лаунчсервера и серверов к SimpleCabinet
- Скачайте модуль для лаунчсервера
SimpleCabinetModule.jar
и положите его в папку modules лаунчсервера - Выполните команду в консоли лаунчсервера
cabinet install URL TOKEN
. Где URL - адрес кабинета, а TOKEN - токен доступа, полученный на предыдущем этапе. Команда установки проверит правильность указанных данных и заменит ваш старый AuthCoreProvider новым
- Клонируйте репозиторий фронтенд-части Simple Cabinet 2 в
/home/cabinet/frontend
- Скопируйте файл
.env.example
в.env
и настройте его указав в качестве URL внешний адрес WebAPI кабинета. Пример:https://lk.mydomain.ru/api/
- Установите yarn (В некоторых системах пакет и команда называются yarnpkg)
- Установите quasar-cli командой:
yarn global add @quasar/cli
- Соберите проект командой:
quasar build
Пример конфигурации nginx:
server {
listen 80;
server_name YOUR_DOMAIN;
charset utf-8;
location / {
root FRONTEND_BUILD_DIR;
try_files $uri $uri/ /index.html;
}
location /skins/ {
alias SKIN_DIR;
try_files $uri $uri/ =404;
}
location /api/ {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
Измените этот конфиг под себя
- YOUR_DOMAIN - ваш домен или поддомен.
- FRONTEND_BUILD_DIR - папка с собранными HTML/CSS/JS файлами Часть 3: Frontend. Находится в
/home/cabinet/frontend/dist/spa/
- SKIN_DIR - папка, куда будут складываться скины и плащи при загрузке. По умолчанию это
/home/cabinet/assets/
Исправьте права файлов для правильной работы nginx:
chmod +x /home/cabinet &&
find /home/cabinet/frontend -type d -exec chmod 755 {} \; &&
find /home/cabinet/frontend -type f -exec chmod 644 {} \; &&
find /home/cabinet/assets -type d -exec chmod 755 {} \; &&
find /home/cabinet/assets -type f -exec chmod 644 {} \;
В данном разделе перечислены функции, которые будут доступны при релизе web части
В SimpleCabinet 2 используется авторизация с помощью AuthCoreProvider и OAuth, что позволяет не хранить пароль на стороне лаунчера и браузера
- Модерирование (бан/разбан), просмотр бан листа доступен всем желающим
- Управление экономикой (курсы валют, начисление монет игрокам)
- Управление HWID (поиск мультиаккаунтов/бан)
- Другие функции
- Восстановление забытого пароля по email
- Смена пароля, статуса и личных данных
- Включение и выключение 2FA
- Выход с всех устройств, просмотр активных сессий
- У каждого пользователя есть один или несколько счетов в разных валютах
- Пользователь может переводить монеты с своих счетов на счета других игроков если курс между валютой игрока и целевой валютой определен администратором
- Администратор может вручную или с помощью скриптов и плагинов добавлять, удалять и менять курсы валют
- Плагин на стороне сервера может инициировать любую операцию с валютами(пополнение/снятие/перевод)
- В системе может быть сколько угодно валют и курсов между ними
- Курсы может "Валюта 1 -> Валюта 2" и "Валюта 2 -> Валюта 1" могут отличатся. Могут существовать курсы только в одном направлении
- Курс "Валюта 1 -> Валюта 1" имеет особое значение - разрешает переводы в этой валюте между игроками
- Алгоритм проверит можно ли "дюпнуть" монеты путем переводов между валютами, и если такое возможно заблокирует изменение курса
- Все транзакции(пополнение, снятие, переводы) логируются в таблице транзакций
- Выдача привилегий с помощью LuckPerms
- Поддержка скидок, продлений, ограничений и т.д.
- Поддержка покупки на разные сервера
- Выдача блоков с помощью плагинов
- Поддержка скидок, ограничений и т.д.
- Поддержка покупки на разные сервера
- Поддерживается указание: названия или ID предмета, extra предмета, зачарований, nbt
- Экспериментальная(необязательная для реализации в frontend) возможность кастомизации покупаемых предметов
SimpleCabinet 2 предоставляет возможность легкого добавления новых видов товаров