Удаление загрузок через API

Сценарий использования заключается в своевременном удалении загрузок в рамках автоматизированных рабочих процессов с участием человека (human-in-the-loop) с помощью activepieces, data explorer и API.

Цель — предоставить обычным модераторам простой и надёжный способ немедленного полного удаления загрузок без доступа по SSH, а также комплексно охватить все известные случаи разрыва ссылок на загрузки и автоматически очистить соответствующие URL в CDN (в случае проксируемых аватаров — префикс URL, основанный на имени пользователя).


Меня успокоило то, что при тестировании выяснилось: ссылки на аватары, фоны профиля и фоны карточек автоматически обрабатываются при удалении загрузки.

https://github.com/discourse/discourse/commit/e1975e293f2625259e925b4a3c93d88d5acfcaa8

https://github.com/discourse/discourse/commit/38e7b1a0492dd4282c3cd3b1ddb2b3343661d31f


Два основных сценария: «выжженная земля» и «хирургическое удаление». Вот текущая работа над сценарием «выжженная земля»:


Преобразование в список хешей загрузок:

  • URL аватаров (извлечь имя пользователя с помощью регулярного выражения) → получить хеш аватара через запрос в data explorer (хеш не содержится в URL)

  • URL тем/сообщений → собрать все хеши загрузок, использованные в этом сообщении, с помощью data explorer

  • Прямые URL оригинальных/оптимизированных загрузок (включая фоны профиля и карточек) → извлечь хеши с помощью регулярного выражения


Затем выполнить запрос по каждому хешу для поиска всех вхождений (один запрос data explorer охватывает все случаи, по одному хешу за раз):

  • список имён пользователей/ID тех, кто использовал этот хеш для аватара

  • список имён пользователей/ID тех, кто использовал этот хеш для фона профиля

  • список имён пользователей/ID тех, кто использовал этот хеш для фона карточки

  • список всех сообщений (в сыром виде), использующих эту загрузку


Действия:

  • приостановить всех пользователей, использовавших загрузку в качестве аватара, фона профиля или фона карточки

  • приостановить всех пользователей, у которых есть сообщения, ссылающиеся на целевую загрузку, но исключить случаи, когда ссылка находится внутри цитаты

  • удалить все темы

  • удалить все сообщения

  • уничтожить загрузку (отсутствует конечная точка API)

  • очистить все URL CDN (оптимизированные и неоптимизированные)

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


Сценарий «хирургического удаления» по сути аналогичен, но не предусматривает приостановку связанных пользователей и требует некоторых изменений в части сбора всех хешей загрузок из URL сообщений/тем.

Вероятно, всё ещё потребуется удалять сами сообщения и темы, чтобы избежать битых ссылок, но если возможно, предпочтительнее было бы просто удалить разметку Markdown для конкретной загрузки (не затрагивая другие загрузки). Как в этой автоматизации, если бы она не удаляла все ссылки на загрузку в разметке.


В идеале я хотел бы иметь возможность блокировать хеши, чтобы после выполнения описанных выше действий кто-то не мог просто создать новый аккаунт и повторно загрузить тот же файл. :melting_face: :coffin:

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

1 лайк