SB-MaterialAdmin / NewServer

New server side for SourceBans Material Admin
GNU General Public License v3.0
42 stars 26 forks source link

[Feature Request] Offline Actions & Offline Admins #142

Open BlackYuzia opened 2 years ago

BlackYuzia commented 2 years ago

Offline Actions (aka Bans & Mutes Storage)

Описание

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

При повторном разрыве соединения все повторяется.

Offline Admins (aka Cached Admins)

Описание

Суть его также проста - хранить всех админов из удаленной (mysql) базы в локальную (sqlite) базу данных. Т.е. при каждом подключении к базе, плагин будет локально хранить админов в базе. Если будет разрыв соединения с базой данных, плагин будет использовать админов из своей локальной базы. При подключении же к удаленной (mysql) базе данных, плагин будет просто обновлять локальную базу данных.

Такой способ имеет свои недостатки, например - если админ был удален из удаленной базы данных, но все еще доступен в локальной, но это лучше чем если вообще без админов.

CrazyHackGUT commented 2 years ago

Offline Actions

Не понял вообще, что предлагается.

Offline Admins

Сейчас и так реализовано, но через бинарные файлы.

BlackYuzia commented 2 years ago

Сейчас и так реализовано, но через бинарные файлы.

Мб оно и так, но админка пропадает после:

sm plugins reload materialadmin;
sm_reloadadmins;

Не понял вообще, что предлагается.

ыдача банов и мутов даже если база недоступна. Сейчас происходит ошибка - Handler 0 Error (или чет типо такого)

CrazyHackGUT commented 2 years ago

Выдача банов и мутов даже если база недоступна. Сейчас происходит ошибка - Handler 0 Error (или чет типо такого)

И так реализовано. Но если SQLite не подключился к моменту попытки выдачи бана - да, может возникать ошибка.

Мб оно и так, но админка пропадает после:

Потому что оно пытается загрузить админки сначала из базы. И только потом, если не удалось, должно пойти в файлы. Но проверю.

BlackYuzia commented 2 years ago

И так реализовано. Но если SQLite не подключился к моменту попытки выдачи бана - да, может возникать ошибка.

Игрока если что, которого банят, даже не кикает. Так что или косяк плагина или эта функция не реализована вообще.

Примерно так должно отрабатывать:

  1. Запрос в mysql базу данных
  2. Если база недоступна сохраняем локально бан
  3. Кикаем забаненного игрока и не пускаем его на сервер
  4. Выводим сообщение Игрок был добавлен в локальный список банов так как нет доступа к удаленной базе данных
BlackYuzia commented 2 years ago

И так реализовано. Но если SQLite не подключился к моменту попытки выдачи бана - да, может возникать ошибка.

Проверяй

При потери коннекта с бд сейчас следующее:

CrazyHackGUT commented 2 years ago

админы не работают (вообще, даже те что в кэше уже есть)

Должно теперь работать.

BlackYuzia commented 2 years ago

@CrazyHackGUT а блокировка ивента?