Массовое добавление доменов электронной почты для автоматического одобрения

Продолжение обсуждения из Formalized assignment and possible logging of pending applications

Является ли значение для auto approve email domains строкой, разделённой пробелами? Или разделённой запятыми или символами новой строки? Заранее спасибо, R

В интерфейсе вы добавляете их по одному, используя кнопку :heavy_plus_sign: (а затем подтверждая зелёной галочкой)

Большое спасибо, @JammyDodger. Мы думали сделать процесс немного более автоматизированным. Мы планировали экспортировать наш текущий список адресов электронной почты, затем отфильтровать те, которые соответствуют списку доменов университетов Hipo, и импортировать этот новый список в Discourse по ключу auto approve email domains. Для числовой обработки мы собирались использовать Python и pandas. Я предполагаю, что такой путь не поддерживается? Или у нас есть, или мы можем получить, программный доступ? (P.S.: со ссылкой на ваш скриншот, gmail.com — это последний домен, который мы когда-либо подумали бы автоматически одобрять.)

И ещё, можем ли мы использовать подстановочные знаки, например: *.tu‑berlin.de, чтобы учесть наличие подразделений, скажем, maths.tu‑berlin.de.

У меня было ощущение, что я слишком упрощаю. :slight_smile: Думаю, это стоит вынести в отдельную тему в Support, чтобы привлечь более компетентных участников. :+1:

Это я прекрасно понимаю. :slight_smile: Не волнуйтесь, однако: это скриншот макета с моего тестового сайта, а не настройки здесь, на Meta. :slight_smile:

К сожалению, я считаю, что это невозможно. Я подал запрос на добавление этой функции:

Мое основное предложение, вероятно, не то, что вам нужно (оно означало бы, что при добавлении tu-berlin.de будут включены maths.tu-berlin.de и все остальные факультеты).

Это именно то поведение, которое я искал.

Если у вас есть доступ к консоли Rails, вы можете установить allowed email domains в виде строки с разделителями в виде вертикальной черты, содержащей произвольное количество хостнеймов, так что это выглядит рабочим решением.

Не совсем понятно, зачем вам нужна числовая обработка; это можно сделать с помощью стандартных утилит UNIX.

Вот как получить список доменов из списка Hipo:

curl -L 'https://github.com/Hipo/university-domains-list/blob/master/world_universities_and_domains.json?raw=true' |
  jq '.[].domains' |
  jq -r add |
  sort -u

Если вы сохраните это в файл domains.txt, и у вас есть файл с email-адресами под названием emails.txt, вы можете получить подмножество доменов для включения в белый список с помощью следующей команды:

grep -if domains.txt emails.txt |
  cut -d @ -f 2 |
  sort -u

То есть, даже если в списке доменов указан только tusculum.edu, email вроде some.student@mail.tusculum.edu вернёт mail.tusculum.edu — именно этот хостнейм нужно добавить в белый список, а не корневой домен.

Остаётся только задать строку с разделителями в виде вертикальной черты, содержащую эти домены. Подходит ли вам такой вариант?

Спасибо, @leonardo. Мне нужно будет уточнить у моего провайдера хостинга Discourse, могу ли я получить доступ к консоли Ruby on Rails (я склонен полагать, что нет?). Но я задам этот вопрос завтра.

Я уверенно работаю с утилитами оболочки bash, о которых вы упомянули (я начал на SCO UnixWare примерно в 1997 году, прежде чем перейти на Linux). Одна из причин выбора Python заключается в том, что будущие администраторы нашего форума, скорее всего, будут лучше знакомы с Python.

Отлично; Python должен сделать это столь же простым.

Если это не получится, вы можете использовать API (с учетной записью администратора) для отправки PUT /admin/site_settings/allowed_email_domains с полезной нагрузкой в формате формы, как здесь:

allowed_email_domains=zuyd.nl%7Czzgc.edu.cn%7Czzut.edu.cn

Нет, вы не можете, но вы всегда можете использовать API (как предложил Леонардо) или просто создать тикет с командой, которую вы хотите, чтобы мы выполнили за вас. Мы даже вернем вам вывод :wink:

@RGJ большое спасибо. Есть ещё одна мысль, вероятно, совершенно беспочвенная. Но возможность загружать в экземпляр Discourse обширную базу данных, например список Hipo, и чтобы Discourse выполнял такую проверку и обработку, с точки зрения пользователя было бы идеально. :sloth: