Как скрыть группу пользователей от других в Ejabberd или MongooseIM?

Принимая предложение Тома Кимбера еще на один шаг, вы можете использовать словарь функций, чтобы установить различные условия для ваших функций. Это решение расширяет сферу вопроса.

Я использую пример из личного приложения.

# write the dictionary

def applyCalculateSpend (df_name, cost_method_col, metric_col, rate_col, total_planned_col):
    calculations = {
            'CPMV'  : df_name[metric_col] / 1000 * df_name[rate_col],
            'Free'  : 0
            }
    df_method = df_name[cost_method_col]
    return calculations.get(df_method, "not in dict")

# call the function inside a lambda

test_df['spend'] = test_df.apply(lambda row: applyCalculateSpend(
row,
cost_method_col='cost method',
metric_col='metric',
rate_col='rate',
total_planned_col='total planned'), axis = 1)

  cost method  metric  rate  total planned  spend
0        CPMV    2000   100           1000  200.0
1        CPMV    4000   100           1000  400.0
4        Free       1     2              3    0.0
0
задан Shubham1164 27 March 2019 в 06:09
поделиться

1 ответ

Я просто хочу, чтобы эти 10 разных пар не знали других пар префиксных имен пользователей и не могли отправлять строфы любого типа (например, сообщение, присутствие, IQ) другой паре (с другим префиксом) [ 113]

Прежде всего, поиграйте с mod_filter. Глядя на пример конфигурации, вы, вероятно, сможете выполнить то, что вы хотите, используя его: https://github.com/processone/ejabberd-contrib/tree/master/mod_filter

Может быть, вы можете определите ACL на основе шаблонов имен пользователей («aa *» или что-то в этом роде), и таким образом вы можете иметь всех пользователей в одном vhost.

В случае, если единственное решение требует наличия vhost для каждой группы пользователей, есть несколько идей:

Теперь каждые 1000 имен пользователей из указанных выше 10000 имеют фиксированный префикс в своих именах пользователей JID, например:

< / blockquote>

Как вы упомянули, вы можете определить vhost в ejabberd для каждой группы пользователей: 10001@aa.example.com ... Или чтобы не изменять существующие имена пользователей: aa10001@aa.example.com .. .

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

Правильно, вы можете иметь все vhosts в одной базе данных, если вы настроите ejabberd следующим образом и при создании базы данных будете использовать файл apropiate * .sql:

new_sql_schema: true

Можно ли динамически добавить виртуальный хост в конфигурации без остановки сервера?

Да, это должно работать (это недавняя функция). Отредактируйте ejabberd.yml, как хотите, и перезагрузите его:

$ ejabberdctl reload_config
0
ответ дан Badlop 27 March 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: