#xmpp #ejabberd #privacy #mongoose-im
#xmpp #ejabberd #конфиденциальность #mongoose-im
Вопрос:
Допустим, у меня есть 10 000 имен пользователей в базе данных RDBMS, которая будет использовать службу чата XMPP, такую как Ejabberd или MongooseIM, которые я введу вручную в базу данных. Теперь каждые 1000 имен пользователей из вышеупомянутых 10000 имеют фиксированный префикс в своих именах пользователей JID, например:
1-1000 имен пользователей начинаются с aa__ (Пример — aa10001, aa10002, …)
имена пользователей 1001-2000 начинаются с bb__ (Пример — bb10001, bb10002, …)
2000-3000 имен пользователей начинаются с cc__ (пример — cc10001, cc10002, …)
и так далее… всего 10 имен пользователей с разными префиксами
Теперь я просто хочу, чтобы эти 10 разных пар не должны знать другие пары имен пользователей с префиксами и не должны иметь возможности отправлять какой-либо тип строки (например, сообщение, присутствие, IQ) другой паре (с другим префиксом)
Возможности:
-
Если бы я мог использовать какое-нибудь регулярное выражение в политике блокировки, тогда это было бы здорово вместо блокировки отдельного пользователя.
-
Я знаю, вы можете предложить использовать другой виртуальный хост для каждой пары. Но управлять таким количеством виртуальных хостов может быть сложно, потому что в приведенном выше примере 10K — это всего лишь небольшой пример общей картины.
Пожалуйста, дайте мне знать, если вопрос вам непонятен?
Комментарии:
1. Может быть, если я смогу использовать Virtual host каким-то образом, которым легко управлять (часто добавляя новые пары), не добавляя новую базу данных для каждого, то это будет лучшим решением
2. Могу ли я динамически добавлять виртуальный хост в конфигурацию без остановки сервера?
3. Ограничены ли вы использованием Ejabberd или MongooseIM? XMPP-сервер Tigase ( tigase.net ) может обрабатывать высокие нагрузки и предлагает управление VHost без перезапуска ( Добавление доменов (VHosts) ), которые могут использоваться с REST API и ACL ( списки контроля доступа в Tigase ) опция
LOCAL
— ограничение пользователей на общение внутри group / VHost4. Спасибо, @Wojtek, но мы потратили на них достаточно времени, и теперь их сложно переключить
5. Конечно — просто обмен информацией 🙂
Ответ №1:
Я просто хочу, чтобы эти 10 разных пар не должны знать другие пары имен пользователей с префиксами и не должны иметь возможности отправлять какой-либо тип строки (например, сообщение, присутствие, IQ) другой паре (с другим префиксом)
Прежде всего, поиграйте с mod_filter. Глядя на его примеры конфигураций, вероятно, вы сможете добиться желаемого с его помощью:https://github.com/processone/ejabberd-contrib/tree/master/mod_filter
Возможно, вы можете определить ACL на основе шаблонов имен пользователей («aa *» или что-то в этом роде), и таким образом вы сможете разместить всех пользователей на одном виртуальном хостинге.
В случае, если единственное решение требует наличия виртуального хостинга для каждой группы пользователей, некоторые идеи:
Теперь каждые 1000 имен пользователей из вышеупомянутых 10000 имеют фиксированный префикс в своих именах пользователей JID, например:
Как вы упомянули, вы можете определить виртуальный хостинг в ejabberd для каждой группы пользователей: 10001@aa.example.com … Или для того, чтобы не изменять существующие имена пользователей: aa10001@aa.example.com …
Может быть, если я смогу использовать Virtual host каким-то образом, которым легко управлять (часто добавляя новые пары), не добавляя новую базу данных для каждого, то это будет лучшим решением
Правильно, вы можете иметь все виртуальные хосты в одной базе данных, если вы настроите ejabberd подобным образом и используете соответствующий файл *.sql при создании базы данных:
new_sql_schema: true
Могу ли я динамически добавлять виртуальный хост в конфигурацию без остановки сервера?
Да, это должно сработать (это недавняя функция). Отредактируйте ejabberd.yml по своему усмотрению и перезагрузите его с помощью:
$ ejabberdctl reload_config
Комментарии:
1. Какое решение вы рекомендуете, если количество групп является переменным и находится в диапазоне 10-20 Кб и имеет более 100 подобных групп и увеличивается со временем?
2. Я думаю, вам следует использовать ejabberd mod_filter api для вашего варианта использования.