Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Плагин [GEN] rscPermissions v0.10.x — идеальный менеджер прав для мультисерверных сред [1.2.5 - 1.10.x]

Тема в разделе "Релизы плагинов", создана пользователем Reality_SC, 8 янв 2014.

  1. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Если отваливается СУБД, это проблема его администрирования. Если отваливается коннект с ним — проблема организации сети. Если коннект есть, то плагин работает безупречно.
     
  2. Хостинг MineCraft
    <
  3. ZuRGs

    ZuRGs Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    ZuRGs
    Пытался дать префикс через консоль - не работает...
    Также хотелось бы спросить, есть ли вообще файл куда можно написать группы и юзеров как в PEX?

    P. S. Версия 1.7.10
     
    Последнее редактирование: 2 июл 2016
  4. chief

    chief Активный участник Пользователь

    Баллы:
    76
    cached_inheritance.json
     
  5. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Команд для выставления групп и юзеров нет. Игроку можно дать префикс командой (/rscp user <ник> prefix <префикс>), вроде должно работать. Но всё-таки лучше сделать это через БД напрямую.
     
  6. chief

    chief Активный участник Пользователь

    Баллы:
    76
    Уберите с настроек ограничения на слоты для определенных групп или просто закомментируйте их. Серьезно.
    Это плохо влияет на популярность плагина, а плагин действительно хороший
     
  7. DimaTiunov

    DimaTiunov Активный участник Пользователь

    Баллы:
    78
    Просто выруби у себя это и не каких проблем.
     
  8. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Длительное время идёт неторопливая разработка нового функционала плагина, но в последние две недели — я очень далеко продвинулся. Привет, у меня почти готова ветка версий 0.10.x.
    Вектор всех нововведений — управление всем содержимым БД внутри-игровыми командами (наконец-то!).
    • Исправлено очень много мелких и средних недоработок.
    • /rscp listgroups (groups, lg, gs) — вывод списка всех известных плагину групп.
      upload_2016-8-4_20-5-53.png
      Белый идентификатор в начале строки — фактически номер строки в БД в колонке entities.
      В квадратных скобках указываются префиксы и суффиксы.
      Числа с суффиксами p и i — число явно назначенных группе прав и родительских групп, соответственно.
      Также может быть указана временная метка (дата и время), когда данная запись будет автоматически удалена из БД (значение колонки lifetime).
      Если белого идентификатора нет, то записи о данной сущности нет в таблице entities, но она фигурирует где-то в колонках других таблиц.
    • /rscp listusers (users, lu, us) — вывод списка всех известных плагину пользователей.
      upload_2016-8-4_20-9-11.png
      Информация строго аналогична выводу групп. Помните, что в качестве идентификатора пользователя могут использоваться его ник, uuid, IPv4-адрес, и всё это с учётом wildcard-подстановок!
    • /rscp user|group <идентификатор> listgroups (groups, lg) — получение списка явно назначенных группе или пользователю родительских групп.
      upload_2016-8-4_20-21-40.png
      Заметьте, белый идентификатор имеет дополнительные номера через двоеточие, потому что фактически это одна запись в БД, в которой в одном или нескольких разрешённых полях было введено более одного значения через специальные разделители.
      Префикс белого идентификатора это первая буква названия таблицы (entities, permissions, inheritance), в которой фигурирует демонстрируемая запись.
      В скобках указывается приоритет наследования (значение из колонки priority, 20 это default).
      Могут быть и другие пометки, какие — см. ниже.
    • /rscp user|group <идентификатор> listpermissions (u|g) (permissions, lp) — получение списка прав, явно назначенных группе или пользователю.
      upload_2016-8-4_20-22-13.png
      Голубым указывается значение колонки destination (то, где данная запись применима). Жёлтым — значение колонки lifetime (дата и время, когда данная запись будет автоматически удалена). Также может быть отдельно указано число уровней опыта, с которым данная запись начнёт применяться (колонка expirience).
    • /rscp user|group <идентификатор> prefix|suffix [значение] (u|g) (p|s) — просмотр или установка значения префикса/суффикса для группы или пользователя.
    <offtop>Кстати говоря, я зачем-то сделал алиас команде /rscp на /p, это к обсуждению, могу убрать. В итоге получается, что можно писать вообще короткие команды: /p g admins lp, /p p Reality_SC lg и т.п. Но можно и запутаться. Вообще хочу впилить туда TabComplete, чтобы оно и команды подсказывало, и нужные идентификаторы, если место для них.</offtop>

    Далее начинается неинтуитивно понятная сложность. Запомните: есть группа (group), есть пользователь (user), а есть игрок (player). Группа и пользователь — это очень близкие понятия, ложащиеся на записи в БД. Игрок — это чаще всего человек, играющий онлайн на сервере. Игрок имеет несколько свойств: имя, уникальный идентификатор, сетевой адрес. Он всеми ими обладает одновременно. Пользователь — это идентификатор в БД, который может быть только чем-то одним из этого, и в частном случае может быть даже шаблоном wildcard. Игрок может быть не онлайн, а оффлайн, тогда его представляет только такой идентификатор, которым пользуются для его представления.
    Для работы с игроками уже существуют и скоро появятся новые отдельные команды.
    • /rscp player <идентификатор> listpermissions (p) (permissions, lp) — анализ того, какие права имеет сейчас онлайн пользователь или будет иметь оффлайн пользователь с таким идентификатором, когда зайдёт. Для онлайн игрока можно написать имя, и если сервер нашел его, он выведет 100% точное содержимое его пакета прав на данный момент (с учётом его uuid, IP, местоположения в мире и регионах на сервере, уровней опыта). Если не найдёт — будет подставлять введённый идентификатор под все известные шаблоны пользователей.
      upload_2016-8-4_20-54-9.png
      Зелёным цветом, традиционно, подсвечены выданные права, красным — отобранные.
    • /rscp player <идентификатор> listgroups (p) (groups, lg) — полностью аналогично, только выводится итоговое дерево наследуемых групп.
      upload_2016-8-4_20-53-19.png
    • /rscp player <идентификатор> prefix|suffix (p) (p|s) — выводит итоговые рассчитанные префиксы и суффиксы с учётом всех подстановок и разрешений в дереве наследования групп.
    Итог для закрепления. База данных содержит записи о пользователях и группах. На сервере играют игроки. Пользователи из БД могут ложиться на разных игроков, играющих на сервере. Вы (с)можете редактировать записи в БД, используя подкоманды /rscp group ... и /rscp user ..., а подкоманды вида /rscp player ... могут быть использованы только для изучения фактического состояния дел и ничего редактировать Вам не позволят.

    Если кому-то интересно тестировать плюшки до официального релиза, dev-билды обычно тут.
     
    Последнее редактирование: 10 авг 2016
  9. niptor1998

    niptor1998 Ньюби

    Баллы:
    1
    Вау, круто!
     
  10. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    В тестовых билдах, начиная с #251, появились рабочие команды для добавления/удаления группам/пользователям прав/родительских групп:

    /rscp <тип сущности> [new] <название сущности> <действие> <название> [параметры]
    • Тип сущности: то, над кем мы совершаем действие, может быть group (g) или user (u).
    • Название сущности: название группы или идентификатор пользователя, над которым совершается действие.
    • Ключевое слово new: если плагину ещё неизвестна сущность с таким именем, и ключевое слово new не указано, плагин пошлёт Вас [с ответом, что он не знает такую сущность]. Указав new, Вы обяжете его создать такую запись в БД, и в дальнейшем плагину данная сущность уже будет известна.
    • Действие:
      • addgroup (ag) — добавить указанной сущности новую родительскую группу с названием <название>.
      • addpermission (ap) — добавить указанной сущности новое право <название>. По умолчанию право выдаётся (value: true), а чтобы отобрать его, укажите название в стиле PermissionsEx, с дефисом в начале:
        someplugin.section.permission — выдаёт право.
        -someplugin.section.permission — отбирает право.
      • removegroup (rg) — удалить у сущности одну из имеющихся родительских групп. В качестве названия можно указать либо название удаляемой группы, либо уникальный белый идентификатор записи в БД (в некоторых случаях он является единственным вариантом).
      • removepermission (rp) — удалить у сущности одну из имеющихся у неё записей прав. Аналогично, в качестве названия можно использовать либо само право (только уже без дефиса), либо уникальный белый идентификатор.
    • Опциональные параметры: здесь передаются значения колонок, отвечающих за условия применимости записей БД к рассматриваемому игроку: местоположение (destination), число уровней опыта (expirience), время жизни записи (lifetime). На данный момент реализованы только:
      • destination <местоположение> (dest, d) — при добавлении сущности новой родительской группы или нового права можно указать местоположение, в которых оно будет действовать. Формат местоположения можно найти на первой странице этой темы, я только напомню, что выглядит он так: [region:][world][@serverId].
    upload_2016-8-5_16-5-13.png

    В скором времени планируются следующие фичи:
    • Установка сущностям префиксов/суффиксов.
    • Команды не только на добавление/удаление, но и на редактирование существующих записей в БД.
    • Поддержка командами других опциональных параметров (expirience, lifitime).
    • Создание и восстановление бекапов.
    • Автоматическая дупликация/дедупликация записей, содержащих в себе множество сущностей (если помните, в колонках entity, permission, parent и destination можно писать несколько значений, разделённых спец.символами).
      И вообще, в теории, перезапись базы с улучшением порядка строк.
    • Вытаскивание идентификаторов из игроков для конвертации в сущности (/rscp player Reality_SC -u ... будет эквивалентно /rscp user <uuid игрока Reality_SC> ... >, -n для никнейма, -i для IP-адреса (только если онлайн)).
      Сделано, см. посты ниже.
    • Автозавершение ввода по части команды/идентификатора и нажатию TAB.
    • И какие-нибудь другие плюшки.
     
    Последнее редактирование: 12 авг 2016
  11. GoodCoder

    GoodCoder Активный участник Пользователь

    Баллы:
    76
    @Reality_SC попошу тебя перенести инициализацию плагина из конструктора в onEnable()
    Из-за этого плагин не работает на старых версиях игры, так как там сначала недоступны Logger и ConsoleSender. После переноса плагин завёлся, работает без каких-либо проблем.
     
  12. chief

    chief Активный участник Пользователь

    Баллы:
    76
    Колонка "inheritance_priority" в таблице "rscp_inheritance"
    Чем больше число тем больше приоритет или наибольшим приоритетом есть 0
     
  13. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Это плохо влияет на популярность плагина у серверов с 10 слотами, которые обычно даже не имеют MySQL сервера, и, соответственно, мой плагин им не особо нужен. Большие проекты либо умеют настраивать текстовые конфиги, либо имеют больше 25 слотов, а скорее всего всё сразу.
    Ещё раз замечу, что я писал этот плагин именно для проектов с большим числом серверов, чтобы дать администраторам большую гибкость в настройке прав для имеющегося зоопарка.
    Хм, а я вроде особенно ничего не менял в этом месте ещё когда у самого было 1.7, можешь скинуть лог если остался с ошибками?
    Да, конечно перенесу, просто хочу, чтобы всё лаконичнее выглядело.
    Чем больше число, тем приоритет выше, и эта группа применится позже других (с меньшим приоритетом) (находящихся на той же ветви), и, соответственно, будет иметь решающее слово в том, true или false назначить игроку на перекрывающийся пермишен.
    Если приоритет одинаковый, группы применяются в алфавитном порядке.
     
    Последнее редактирование: 10 авг 2016
  14. chief

    chief Активный участник Пользователь

    Баллы:
    76
    Применяется и к игрокам?
     
  15. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Так всё применяется в итоге к игрокам, ведь группы сами по себе не играют на сервере ))
     
  16. chief

    chief Активный участник Пользователь

    Баллы:
    76
    Я про inheritance_type 1
     
  17. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Да, это работает везде.[DOUBLEPOST=1470657558,1470595772][/DOUBLEPOST]
    Начиная с билда 256 плагин вроде как прекрасно запускается на Spigot 1.4.7.[DOUBLEPOST=1470926741][/DOUBLEPOST]Начиная с билда 258 плагин умеет:
    • Великолепная и всемогущая команда расширилась ещё сильнее:
      /rscp player <игрок> [-n|--by-name|-u|--by-uuid|-i|--by-ip] ... <сделать что-то> ...
      при указании того, какой параметр игрока взять, по своему действию аналогична:
      /rscp user new <имя|uuid|ip-адрес игрока> ... <сделать что-то> ...
      Естественно, IP-адрес будет найден только у игрока, который играет онлайн, а ник и uuid могут быть найдены и у оффлайн записей сервера (если есть записи с одним именем, будет взята последняя по времени игравшая).
    • А если указать просто /rscp player <игрок>, получится вот такой прекрасный вывод:
      upload_2016-8-12_14-27-34.png
      Тут даже отдельно считаются выданные (true, зелёным) и отобранные (false, красным) права. А если игрок онлайн, оно ещё и его IP выведет.
    Под "сделать что-то" я подразумеваю подкоманды, предназначенные для работы с Пользователем (user), например, это может быть addpermission, removegroup или что-то другое.
    • Превращаем многолетний недостаток в невероятную уникальную возможность!
      Включаем опцию config.yml/settings.disable-insecure-commands: true (и даже больше — она включена по умолчанию) и никому и никогда на сервере не будут доступны команды для редактирования прав в базе данных!
    P.S. Я не стал обновлять версию конфига из-за только этой единственной настройки, поэтому если Вы хотите её выключить, то после обновления плагина Вам придётся прописать её в конфиге вручную!
     
    Последнее редактирование: 12 авг 2016
  18. DimaTiunov

    DimaTiunov Активный участник Пользователь

    Баллы:
    78
    Привет, автор. Есть предложение, перенести определение дефолтной группы сервера, по аналогии с PEX, в базу данных.
     
  19. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Смысл?
     
  20. Автор темы
    Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Я думал про такое развитие событий, что следует добавить отдельную таблицу (rscp_servers) и в ней держать как настройки rscp для разных серверов (а в конфиге в итоге указывать только адрес MySQL), а также это бы добавило стабильности к возможным будущим обновлениям структуры таблиц (обновлять только когда все серверы уже поддерживают нужную новую структуру).
    Но в общем-то, это незачем. Нет никакой проблемы поменять название Default в конфиге на что-то своё.
    Плюс, если тебе нужны разные права этой группе на разных серверах, перенеси их в свои подгруппы, а Default наследуй от них где надо и как надо.
    Всё невероятно гибко.
     
  21. Rlemish

    Rlemish Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    rlemish
    Всем привет! Еще раз хочу поднять вопрос с префиксами в Essentials, на данный момент это работает или нет?Может есть костыли? другие плагины для чата? Essentials вообще понимает в какой группе игрок?
     

Поделиться этой страницей