BLOG Mini-DevBlog команды GM-X

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
29
Реакции
9
Помог
1 раз(а)
Sonyx, информацию получать тут только или у вас есть телеграм канал или что-то иное.
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
diagnostikapc, с тестировщиками как раз проблем нет. Причем уже месяц как ждут что то новое. Если будет бета мы напишем
 
Сообщения
39
Реакции
102
По поводу модуля для выполнения HTTP(S) запросов, работа началась несколько недель назад, но продвигается достаточно медленно из-за отстутствия свободного времени.

Как известно для решения нашей проблемы модуль должен быть максимально быстрым и гибким. Существующие решения, как известно основаны на использование отдельных потоков для выполнения каждого запроса параллельно, что является для настоящим overkill-ом, для того, чтобы обеспечить минимальные задержки и быстродействие потребовался бы pool потоков и разные ухищрения.

Язык C++ был отклонен с самого первого момента из-за своих очевидных минусов и неудобств, был выбран язык программирования Rust.
В отличии от C++ экосистема Rust более развита, такие мощные библиотеки как Tokio и Hyper позволяют создавать гибкие и быстрые асинхронные программы.
  • Rust компилируется в native код не уступающий по производительности C++ и не требует от пользователя использовать GC. В модуле почти нет мест, которые полагались бы на какой-либо механизм для сборки мусора. Это должно обеспечить самые минимальные задержки во время выполнения.
  • Библиотека Hyper имеет высокоуровневую реализацию HTTP клиента, легко интегрируется поддержка TLS. Клиент асинхронен, умеет выполнять паррарельные запросы, кэшировать соеденения и многое другое
  • Rust намного более безопасный язык и получить в нём неожиданные падения на практике довольно сложно.
  • Огромное количество готовых пакетов с хорошей документацией, юнит тесты, читаемые логи ошибок.. Всё это оставляет желать лучшего в мире C++.
  • Можно перечислить ещё много причин, но в конечном счёте это вопрос вкуса. И мне просто нравится Rust :)
В основе архитектуры модуля лежат 2 lock-free очереди. Очередь входных команд и выходных команд. У нас есть 1 единственные рабочий поток в котором происходят все закулисные действия. По сути рабочий поток является своеобразным чёрным ящиком, который получает на вход команды и посылает на выход какую-то информацию.

https://i.imgur.com/XXsrfyx.png

Каждый кадр сервера или другой промежуток (будет настраиваемо) сервер смотрит на выходную очередь и проверяет есть ли в ней что-то. Если внутри какая-то полезная информация, то вызываются соответствующие callback-и через API AMX Mod X.

Единственные ограничения на работу модуля заключаются в ограничениях ядра (максимальное количество подключений, макс. памяти на процесс и т.д.) и железа. Теоритически модуль должен так же хорошо обрабатывать, как 10 запросов в секунду, так и 1000.

Сейчас единственная часть модуля, которая написана на C++ это wrapper-ы для предоставления Pawn API.

Ссылка на Work in Progress репозиторий: https://github.com/In-line/grip
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Давненько ничего не писали. Но наверно стоит описать, то что не готово. На даный момент не завершенные страницы администрирования юзера. Нету бана пользователя,смена пароля, разбана и истории изменений аккаунта. Нету авторизации через соц сети через OAuth. Также не реализировано наказания игроков которые онлайн на сервере. Это со списка глобальных недоработок. Есть еще множество других, но об них попозже.
О чем бы хотелось поговорить отдельно, так это об изменении пароля пользователя. Всей командой сошлись на мнении, что предоставлять администратору возможност ьменять пароль небезопасно. Потому решено было дать право генерировать ссилку на возобновление пароля. Конешно ничто не мешает администратору перейти по ссилке и сменить пароль. Вот тут и постает вопрос о введении дополнительных прав. Это будет сделано, чтобы любой администратор не смог навредить проекту. Припустим сытуация: гл админ и его помощник посорились. Помощник заходит в админку и меняет основным пользователям ресурса пароли так, что они больше не смогут ввойти в свой акаунт. Так вот ответсвенность ложится на администратора, который выдал право генерировать ссилки на возобновление пароля.
Какие ваши мысли и предложение по даному поводу?
 
Сообщения
2,288
Реакции
1,737
Помог
31 раз(а)
fantom,
Всей командой сошлись на мнении, что предоставлять администратору возможность менять пароль небезопасно
Полностью согласен. А поводу конфликтов, то людям стоит набирать помощников из действительно проверенных людей, которым можно доверять. А не продавать привилегии "гл.админ" кому попало и раздавать пароли от всего. Сами виноваты в этом
 
Сообщения
3,328
Реакции
1,462
Помог
124 раз(а)
Pokemoshka,
действительно проверенных людей,
ситуации разные бывают. иногда даже те, в ком был на 100% уверен, предают или подводят.
Какие ваши мысли и предложение по даному поводу?
думаю, стоит полностью ограничить доступ администраторов к паролям юзеров.
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Здравствуйте. Вкратце сейчас делаем сессии игроков. Сразу оговорюсь то о чем забыли упомянуть раньше. Для вывода игроков онлайн на сервере мы не используем ServerQuery как это обычно делают. Для этого у нас на данный момент есть поле server_id которое указывает на сервер на котором сейчас находится игрок. Оно устанавливается при коннекте игрока и убирается при дисконнекте. Но так как могут произойти непредвиденные обстоятельства было решено как то решить проблему с висящими игроками. Итог было введено сессия игрока. Суть в следующем. При коннекте мы сверяем нет ли сейчас активной сессии. И если есть используем ее. Иначе создаем новую. При дисконекте мы деактивируем ее. Также при запросах от игрока мы обновляем поле таймштам. Это нужно для того чтобы по крону проверять битые сессии. Бонусом мы получаем историю входа игроков на сервер. А именно когда он заходил и сколько времени играл. Хорошо было бы еще добавить логгирование изменений IP адресов и ников, но об этом будем думать позже.
 
Последнее редактирование:
Сообщения
2
Реакции
-1
по скриншотам очень сильно "тело" смахивает на убогий material desiign, а так нормуль
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
theeldarka, Конекретно сейчас да. Но готовится полный апдейт внешнего вида, который к сожалению я пока что сам не видел. Ибо человек который этим занимается делает это в строжайшей секретности, чтобы потом произвести вау эффект. Я подозреваю что скорей всего это будет все тот же материал. Мы целой командой давно уже определились, что обычный бутсрап уже давно всем проелся. Ну а если так не нравится материал, то вы вполне можете перевести все на обычный вам бутсрап. Система имеет систему тем. Правда стоит упомьянуть, что мы используем шаблонизатор twig.
 
Сообщения
48
Реакции
151
Ну го поучаствую, что ль.:hunter:
 
Сообщения
2
Реакции
-1
Первая бета когда? Писал сюда 2 месяца назад. Не терпится уже испытать
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
theeldarka, конкретно последнии 2 недели занимаемся написанием плагинов загрузки привилегий на амхх. И как всегда времени не слишком много, Потому все продвигается слишком медлено. Я не хочу кормить завтраками. Хорошая новость только в том, что попутно исправлены несколько багов на веб части. А также обавлен перевод множества строк. Но все же не стану врать. Все слишком медлено
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Прошел месяц. Небольшой апдейт.
Спасибо Sonyx за очень красивый вид главной страницы админ части
Screen Shot 2019-02-18 at 11.20.11.png
Спасибо Inline за GRIP
Screen Shot 2019-02-18 at 11.23.11.png

Дополнительно сделали статус пользователя который имеет значения "Ожидает одобрения", "Активный" и "Забанен"
Screen Shot 2019-02-18 at 11.24.46.png
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
Приветствую. Предоставилась возможность опробовать демо версию системы, так что тут в принципе опыт небольшого использования веб-системы.
Во-первых, очень радует конечно что в системе есть выбор языка, я считаю это одним из важных плюсов, таким образом можно будет использовать систему не только в России, адаптируя так же например под игроков других стран. Сейчас конечно не везде есть перевод, но как я заметил постоянно дорабатывается и улучшается перевод и в целом веб-система, исправляются мелкие недочёты как в плане дизайна так и в техническом плане.
Недавно переделали админ панель что не может не радовать, выше fantom показал как она выглядит сейчас; по моему мнению, выглядит в разы лучше чем то как было раньше. Насчёт добавления серверов, удобнее по моему мнению чем в существующих системах. Можно добавлять различные группы (права и выводимый префикс в чате) для отдельных серверов как и причины наказаний, очень удобно и гибко.
Больше всего конечно сейчас выделяется функционал ролей: создаётся роль которая в будущем присваивается на аккаунт. В чём собственно суть? Суть в том что можно максимально гибко менять права веб-части, такие как просматривать/добавлять/редактировать/удалять определённые данные в определённых разделах (например менять роль пользователям), всё это можно очень удобно выставлять. К всему это, то что можно так же не только глобально настраивать эти права но и определённого для каждого сервера, то есть, давать человеку доступ только к одному серверу или к нескольким, не давая доступ к тем серверам что не положено, то что думаю более всего сейчас выделяется из всей системы и в принципе из самого важного.
Настройки сайта сами тоже выглядит довольно понятно и просто. Есть выбор темы, что означает что можно будет просто свою накатать, очень хорошо.

С другой стороны, есть конечно и пару актуальных минусов, но вскоре думаю будет уже исправлены. Сюда можно отнести например то что на данный момент обычные пользователи не могут просматривать профили других пользователей, так как это находится в админ панели. Наказания описанные в первом сообщении (гаг/мут/бан) как я вижу в процессе доработки, не хватает функционала.

В целом, сейчас веб выглядит неплохо, подправить описанные недочёты и вполне будет хорошо в использовании, хотя сейчас и так очень удобно много чего сделано.
 
Последнее редактирование:
Сообщения
82
Реакции
83
Помог
5 раз(а)
давать человеку доступ только к одному серверу или к нескольким, не давая доступ к тем серверам что не положено
Текущий функционал амхбанс\ксбанс позволяют такое проделать. Единственное - не будет кастоматизации по серверам. Т.е. если услуга на одном сервере на месяц, то на втором она (или другая) будет так же на месяц. Т.е. делить разные услуги на разные сервера можно и сейчас, но время будет везде одинаковое (но вообще это легко решается путем небольшой правки PHP + AdminLoader).

А по факту, спасибо за развернутый отзыв =) Полностью со всем согласен.
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
Вчера было сделано:
- очистка кэша (нужно при апдейте и смене шаблона)
- фикс безопасности (одна кука отправлялась без статуса httpOnly и secure)
- проверка прав в настройках пользователя
- фикс вывода фомы в настройках польователя после отправки формы
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу