Skip to content

ar1ocker/Squad-Admin-Configurator

Repository files navigation

⭐ Пригодилось? Звездочку поставь. ⭐

Squad Admin Configurator

изображение

Система управления привилегированными пользователями и ротациями карт для Squad

  1. Управление наборами администраторов на ваших серверах Squad, выдавая каждому администратору отдельные роли на каждом сервере. Есть возможность настроить дату окончания всех полномочий конкретного администратора, либо отдельно полномочий конкретного администратора на конкретном сервере

Конфигурацию админов можно использовать 2 путями:

  • Через периодически обновляемые файлы на сервере
  • Через получение файла по API

Привилегированных пользователей можно добавлять 3 путями:

  • Напрямую через административную панель Django
  • Через настраиваемые вебхуки, с возможностью проверки запроса по HMAC (в пару кликов можно связать с Battlemetrics или любыми кастомными ботами Discord, Telegram)
  • Через REST api. Токен для доступа к API выдаётся через админку, имеется возможность ограничить токен в правах стандартными средствами Django (через установку пользователю прав доступа в админ панели)
  1. Управление ротациями на ваших серверах, стандартно паки с картами заменяются раз в сутки, + есть возможность задать определенный пак на определенный день

Ротацию можно получать 2 путями:

  • Через периодически обновляемые файлы на сервере
  • Через получение файла по API

Основные понятия относительно Squad Admin Configurator

  • Сервер Squad - игровой сервер Squad или группа серверов с набором администраторов
  • Администратор/Привилегированный - отдельный пользователь со своим набором ролей на каждом сервере Squad
  • Роль - именованный набор игровых разрешений Squad
  • Разрешение - разрешение на сервере Squad
  • Ротация - набор паков с картами в определенном порядке
  • Списки пользователей - список пользователей с привязанными серверами и набором разрешений
  • Пак с картами - набор карт в определенном порядке

Как разрешить работать только с определенными "списками пользователей"

  • Создаем пользователя
изображение
  • После того как задали пароль - заходим в пользователя и ставим следующие разрешения

server_admins | Список пользователей | Can change Список пользователей

server_admins | Список пользователей | Can view Список пользователей

изображение
  • Создаем список и задаём менеджера, попутно конечно же заполняем сервера и роли

  • Наш новый пользователь будет видеть только те списки в которых он установлен менеджером и сможет изменять только список steam id

  • Пароль от этого пользователя можно спокойно отдать человеку который будет отвечать у вас за добавление конкретных ролей на конкретные сервера

Запуск и настройка

  • Клонируем репозиторий любым удобный способом
  • Заполняем файлы в infrastructure/configs/ по примерам расположенным там же

Docker и Docker Compose

Проверено на версии 24.0, но вполне должно работать на 19+

Из папки infrastructure/

  • Поднимаем контейнеры. Сервис будет доступен по адресу <ваш ip>:80/
# docker compose up -d
  • Создаём административный аккаунт на сайте
# docker compose exec -it squad-admin-configurator python3 manage.py createsuperuser
  • При необходимости - импортируем уже существующий файл Admins.cfg с нашего сервера Squad
# docker compose cp <путь до Admins.cfg> squad-admin-configurator:/
# docker compose exec -it squad-admin-configurator python3 manage.py load_admin_config /Admins.cfg
  • По дефолту для локальных конфигураций админов Squad создается каталог ~/squad_admin_configs/ в хостовой системе

  • При необходимости - импортируем уже существующие паки с нашего сервера Squad

# docker cp <путь до папки с паками> squad-admin-configurator:/
# docker exec -it squad-admin-configurator sh
# python3 manage.py load_layer_pack /<папка с паками>/<пак>
  • По дефолту для локальных ротаций Squad создается каталог ~/squad_rotations_configs/ в хостовой системе

Ручной запуск

Из папки squad-admin-configurator/

  • Подготавливаем окружение
$ python3 -m venv venv
$ . venv/bin/activate
  • Ставим зависимости
$ pip3 install -r requirements.txt
  • Подготавливаем БД
$ python3 manage.py makemigrations
$ python3 manage.py migrate
$ python3 manage.py collectstatic
  • Запускаем прослушивание порта
$ gunicorn "settings.wsgi:application" --bind <требуемый ip или 0>:<ваш порт>

Ставим на cron команду, которая будет отслеживать истекшие привилегии

*/5 * * * * <путь до venv>/bin/python3 <путь до squad-admin-configurator>manage.py runcrons 

Либо же отдельным процессом запускаем:

  • С активированным venv (. venv/bin/activate)
python3 manage.py cronloop -s 300 
  • Без активированного venv
<путь до venv>/bin/python3 <путь до squad-admin-configurator>manage.py cronloop -s 300

Статика будет собрана в папку squad-admin-configurator/static/, её раздача при ручном запуске - на вашей совести, при запуске через Docker - статику раздаст Nginx

TODO

  • (завершено 15.06.2025) Форма быстрого добавления пака с картами в админ панели
  • (завершено 09.06.2025) Библиотека для запуска вебхуков из под SquadJS
  • (завершено 09.06.2025) Ограничение персонала по добавлению определенных ролей на сервер
  • (завершено 09.06.2025) Форма быстрого добавления списка привилегированных пользователей в админ панели
  • (завершено 09.02.2024) API для получения списка привилегированных пользователей
  • (завершено 09.02.2024) API для получения списка ролей у пользователя
  • (завершено 12.02.2024) Документация API
  • (завершено 17.02.2024) Визуальное обновление
  • Тесты
  • Переводы

About

Готовый сайт/сервис для управления привилегированными пользователями и ротациями в Squad

Topics

Resources

License

Stars

Watchers

Forks

Contributors