Я просто хочу, чтобы эти 10 различных пар не знали других пар префиксных имен пользователей и не могли отправлять строфы любого типа (например, сообщение, присутствие, IQ) другой паре (с другим префиксом)
Прежде всего, поиграйте с mod_filter.Глядя на его пример конфигурации, вы, вероятно, можете выполнить то, что вы хотите, используя его: https://github.com/processone/ejabberd-contrib/tree/master/mod_filter
Может быть, вы можете определить ACL на основе шаблонов имен пользователей («aa *» или что-то в этом роде), и таким образом выможет иметь всех пользователей в одном vhost.
В случае, если единственное решение требует наличия vhost для каждой группы пользователей, некоторые идеи:
Теперь каждые 1000 имен пользователей в указанных выше 10000 имеютфиксированный префикс в их именах пользователей JID, таких как:
Как вы упомянули, вы можете определить vhost в ejabberd для каждой группы пользователей: 10001@aa.example.com ... Или чтобы не изменять существующиеимена пользователей: aa10001@aa.example.com ...
Возможно, если я смогу использовать Virtual host каким-либо образом, которым легко управлять (часто добавляя новые пары), не добавляя новую базу данных для каждоготогда это будет лучшее из когда-либо решенных решений
Правильно, вы можете иметь все vhosts в одной базе данных, если вы настроите ejabberd таким образом и будете использовать файл apropiate * .sql при созданииting the database:
new_sql_schema: true
Можно ли динамически добавить виртуальный хост в конфигурацию, не останавливая сервер?
Да, должно работать (это недавняя функция).Отредактируйте ejabberd.yml по своему желанию и перезагрузите его:
$ ejabberdctl reload_config