Unified Admin System - ещё одна попытка сделать нормальную админ-систему с поддержкой нескольких серверов. UAS пытается так же разделить загрузчик администраторов и любое взаимодействие пользователя с записями в СУБД в разные плагины, что позволяет установить загрузчик везде, а интерфейс - только на один сервер (или вообще не устанавливать).
Считаю, что оно излишне, ибо пометки к ней оставлены в виде комментариев в самой структуре, но почему бы и нет...
Я постараюсь своевременно обновлять тему, и держать чейнджлог в конце поста. Плагин старается использовать весь доступный функционал SM по админкам!
Для начала, описание таблиц по именам:
uas_admin. В этой таблице хранятся перечисления всех имеющихся в системе администраторов. Перейти к описанию.
uas_admin_group. В этой таблице хранятся пары "администратор - сервер - группа". Она используется исключительно для определения, на каких серверах какие группы имеются у Администратора.
Для тех, кто не понял: система предполагает выдачу более одной группы Администратору. Перейти к описанию.
uas_admin_flags. В этой таблице хранятся пары "администратор - сервер". Используется для выгрузки администраторов на сервера. Перейти к описанию.
uas_group. Здесь хранятся все имеющиеся админ-группы. Все добавленные однажды сюда группы скачиваются абсолютно на все сервера без исключения. Перейти к описанию.
uas_group_immunity. Здесь хранятся пары "группа - группа". Эта таблица позволяет запретить одной группе администраторов как-либо взаимодействовать с другой. Перейти к описанию.
uas_group_override. Здесь хранятся переназначения прав для групп ("для группы Х разрешить доступ к команде У", "для группы Z запретить доступ к команде У" и т.д.). Перейти к описанию.
uas_override_server. В этой таблице хранятся пары "переназначение - сервер". Она используется для выяснения, какие оверрайды на какой сервер должны быть загружены. Перейти к описанию.
uas_server. Здесь мы храним все сервера. Таблица строится полностью на основе конфига. Перейти к описанию.
Для начала, рассмотрим, что хранит uas_admin.
uas_admin. В этой таблице хранятся все записи администраторов.
admin_id. Уникальный идентификатор администратора. Используется исключительно для внутренних нужд.
username. Имя администратора.
auth_method. Способ авторизации. По-умолчанию, SourceMod поддерживает авторизации ip, steam и name. Пользователи могут создавать свои способы авторизации, потому тип у колонки varchar, а не enum.
auth_value. Значение, передаваемое аутентификатору. Для ip - IP-адрес игрока, для steam - SteamID любого вида (кроме ссылок), и так далее.
password. Серверный пароль. НЕ ДОЛЖЕН БЫТЬ ЗАХЕШИРОВАН КАК-ЛИБО, ИСПОЛЬЗУЕТСЯ САМИМ SM ДЛЯ АУТЕНТИФИКАЦИИ.
flags. Имеющиеся админ-флаги у администратора в виде побитовой суммы флагов.
immunity. Иммунитет администратора.
uas_admin_group. Здесь хранятся записи, обозначающие плагину, к какой группе какой администратор принадлежит, и на каких серверах конкретно распространяются эти права. Все администраторы, добавленные в эту таблицу, будут так же загружены плагином, независимо от uas_admin_flags.
admin_group_id. Уникальный идентификатор записи. Не используется загрузчиком.
admin_id. Идентификатор администратора из таблицы uas_admin.
server_id. Идентификатор сервера из таблицы uas_server.
title. Имя группы из таблицы uas_group.
deleted_at. Время, когда у Администратора был убран доступ. Если NULL - предполагается, что удаления не было, и у пользователя вечный доступ. Если любое иное значение - используется как "когда админка в этой группе должна истечь".
Эта таблица не предполагает прямого удаления прав у Администраторов. Вместо этого, используйте deleted_at.
uas_admin_flags. Используется для хранения сопоставления "администратор - сервер". Все добавленные записи в эту таблицу позволяют понять плагину, каких администраторов именно ему надо загружать.
admin_id. Идентификатор администратора из таблицы uas_admin.
server_id. Идентификатор сервера из таблицы uas_server.
flags. Имеющиеся админ-флаги у администратора в виде побитовой суммы флагов. Если NULL - используется значение из uas_admin.
immunity. Иммунитет администратора. Если NULL - используется значение из uas_admin.
deleted_at. Время, когда у Администратора был убран доступ. Если NULL - предполагается, что удаления не было, и у пользователя вечный доступ. Если любое иное значение - используется как "когда админка на этом сервере должна истечь".
Эта таблица не предполагает прямого удаления прав у Администраторов. Вместо этого, используйте deleted_at.
uas_group. Здесь хранятся все имеющиеся админ-группы в системе. Все админ-группы скачиваются абсолютно на все сервера.
title. Имя админ-группы.
immunity. Иммунитет админ-группы.
flags. Имеющиеся админ-флаги у админ-группы в виде побитовой суммы флагов.
deleted_at. Время, когда админ-группа была удалена. Если NULL - предполагается, что админ-группа не была удалена.
Так же, как и в случае с uas_admin, эта таблица не предполагает прямого удаления записей. Используйте deleted_at.
uas_group_immunity. Хранящиеся здесь записи сообщают SM, какие админ-группы не могут "таргетить" пользователей каких админ-групп.
target. Имя админ-группы из таблицы uas_group.
other. Имя админ-группы из таблицы uas_group.
Администраторы группы target получают полный иммунитет от действий администраторов из группы other, независимо от уровней иммунитета.
uas_group_override. Хранимые здесь переназначения сообщают SM, доступ к каким командам/группам команд должен быть разрешён/запрещён каким админ-группам.
title. Имя админ-группы из таблицы uas_group.
command. Имя команды/группы команд.
override_type. Тип команды: одиночная команда или группа команд. Допустимые значения: Command и CommandGroup.
has_access. Имеется ли доступ у пользователей админ-группы к команде/группе команд? Допустимые значения: Y и N.
uas_override. Здесь хранятся все переназначения прав на команды.
override_type. Тип команды: одиночная команда или группа команд. Допустимые значения: Command и CommandGroup.
flags. Требуемые админ-флаги в виде побитовой суммы флагов. Соответственно, 0 снимает требование админки с команды/группы команд.
uas_override_server. В отличие от uas_group, переназначения скачиваются только на определённые сервера. Здесь можно перечислить, какое переназначение на какой сервер должно быть загружено.
server_id. Идентификатор сервера из таблицы uas_server. Если использовать NULL в качестве значения - переназначение будет загружен на все сервера.
override_id. Идентификатор переназначения из таблицы uas_override.
uas_server. Здесь хранятся все сервера, которые использовали плагин. Плагин сам добавит сервер в эту таблицу, используя заполненные идентификатор, адрес, порт и хостнейм.
Если идентификатор отличается, но пара "адрес-порт" в базе присутствуют - идентификатор будет обновлён и в этой таблице, и во всех других.
server_id. Уникальный идентификатор сервера.
address. Адрес сервера, записанный в виде 32-битного числа.
port. Порт сервера.
hostname. Имя сервера.
deleted_at. Время, когда сервер был удалён. Если NULL - предполагается, что сервер не был удалён, и всё ещё используется.
synced_at. Время, когда сервер последний раз выполнял синхронизацию.
Прямое удаление в этой таблице так же не предполагается, используйте deleted_at.
v0.0.0.1: Первая публикация.
v0.0.0.3
uas_override: Добавлена новая колонка override_id, изменён PRIMARY KEY c пары полей command, override_type на override_id
Добавлена таблица uas_override_server
v0.0.0.5
Добавлена таблица uas_admin_server
uas_override_server: Убрана пометка NOT NULL у server_id
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.